From e5804f2cb929083713c0082f39182a858c082587 Mon Sep 17 00:00:00 2001 From: Pixel Date: Wed, 26 Oct 2011 11:47:38 -0700 Subject: Protecting the IO class a bit more, and adding the raw filename paradigm for at least the Input class. --- includes/Handle.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'includes/Handle.h') diff --git a/includes/Handle.h b/includes/Handle.h index 96f1736..321d8db 100644 --- a/includes/Handle.h +++ b/includes/Handle.h @@ -63,7 +63,7 @@ class IOBase { IOBase() : m_h(NULL) { } ~IOBase() { if (m_h) m_h->delRef(); } protected: - void setHandle(Handle * h) { m_h = h; m_h->addRef(); } + void setHandle(Handle * h) { m_h = h; if (m_h) m_h->addRef(); } Handle * m_h; template friend class IO; @@ -74,11 +74,12 @@ class IO : public IOBase { public: IO() { } IO(T * h) { setHandle(h); } - IO(const IO & io) { setHandle(io.m_h); } + IO(const IO & io) { if (io.m_h) setHandle(io.m_h); } template - IO(const IO & io) { setHandle(io.m_h); } + IO(const IO & io) { if (io.m_h) setHandle(io.m_h); } IO & operator=(const IO & io) { if (m_h) m_h->delRef(); setHandle(io.m_h); return *this; } T * operator->() { Assert(m_h); return dynamic_cast(m_h); } + bool isNull() { return dynamic_cast(m_h); } }; class SeekableHandle : public Handle { -- cgit v1.2.3