Make certain functions pure virtual so I won't forget to implement them
authorMikko Rasa <tdb@tdb.fi>
Sat, 2 Dec 2017 14:41:22 +0000 (16:41 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sat, 2 Dec 2017 14:41:22 +0000 (16:41 +0200)
13 files changed:
source/io/base.cpp
source/io/base.h
source/io/buffered.cpp
source/io/buffered.h
source/io/file.cpp
source/io/file.h
source/io/memory.cpp
source/io/memory.h
source/io/pipe.h
source/io/slice.cpp
source/io/slice.h
source/io/zlibcompressed.cpp
source/io/zlibcompressed.h

index 95a3685fc34021322b800e185e7a52c9343d8521..9c2b40a1f2a9460eee16a34f6e0b08aab245786c 100644 (file)
@@ -59,11 +59,6 @@ void Base::set_eof()
        }
 }
 
-const Handle &Base::get_handle(Mode)
-{
-       throw logic_error("Base::get_handle");
-}
-
 
 Base::Synchronize::Synchronize(Base &i):
        io(i)
index 8d29caffd9813096747b1c2822f6e1b185b1d854..1fe143e10e18eed4668aac843c3d4905b54f3ede 100644 (file)
@@ -57,7 +57,7 @@ public:
        was done.
 
        Blocking is enabled by default. */
-       virtual void set_block(bool) { }
+       virtual void set_block(bool) = 0;
 
        /** Returns the current mode flags. */
        Mode get_mode() const { return mode; }
@@ -105,7 +105,7 @@ public:
 
        /** Returns the system-level handle for the object.  Used by Console to
        perform redirections. */
-       virtual const Handle &get_handle(Mode);
+       virtual const Handle &get_handle(Mode) = 0;
 };
 
 } // namespace IO
index 53f83912a67bcf8ad5237cce37908afd44651359..6567fff9b3739e4fabf8abb1f2a706a98e0d5d85 100644 (file)
@@ -32,6 +32,11 @@ Buffered::~Buffered()
        delete[] buf;
 }
 
+void Buffered::set_block(bool)
+{
+       throw logic_error("Buffered::set_block");
+}
+
 void Buffered::flush()
 {
        if(cur_op==M_WRITE)
@@ -168,6 +173,11 @@ int Buffered::get()
        return static_cast<unsigned char>(c);
 }
 
+const Handle &Buffered::get_handle(Mode)
+{
+       throw logic_error("Buffered::get_handle");
+}
+
 void Buffered::set_op(Mode op)
 {
        if(op!=cur_op)
index bda2318ba5e7370205157f6242355c042f60c68d..c88f0f8ece1836d8c0da7d8840d92d8a284f9be4 100644 (file)
@@ -21,6 +21,8 @@ public:
        Buffered(Base &, unsigned =8192);
        ~Buffered();
 
+       virtual void set_block(bool);
+
        void flush();
 
 protected:
@@ -32,6 +34,8 @@ public:
        bool getline(std::string &);
        int get();
 
+       virtual const Handle &get_handle(Mode);
+
 private:
        void set_op(Mode);
 public:
index d44dad3b751d8a5550a153ea07114b8da80c3c6d..ab957c97f1e2472a5d007b86e8ace3ea9493ec59 100644 (file)
@@ -91,6 +91,11 @@ BufferedFile::BufferedFile(const string &fn, Mode m, File::CreateMode cm):
        file.signal_end_of_file.connect(sigc::mem_fun(this, &BufferedFile::set_eof));
 }
 
+void BufferedFile::set_block(bool b)
+{
+       file.set_block(b);
+}
+
 unsigned BufferedFile::do_write(const char *buf, unsigned size)
 {
        unsigned ret = buffer.write(buf, size);
@@ -128,6 +133,11 @@ int BufferedFile::get()
        return ret;
 }
 
+const Handle &BufferedFile::get_handle(Mode)
+{
+       throw logic_error("BufferedFile::get_handle");
+}
+
 SeekOffset BufferedFile::seek(SeekOffset offset, SeekType type)
 {
        if(type==S_CUR)
index d34273477736c21efdd01335e75306b52f7ba990..ececa8dc19c28f53d2e690db06af481a81555e52 100644 (file)
@@ -57,7 +57,7 @@ private:
 public:
        virtual ~File();
 
-       void set_block(bool);
+       virtual void set_block(bool);
 
 protected:
        virtual unsigned do_write(const char *, unsigned);
@@ -92,6 +92,8 @@ private:
 public:
        BufferedFile(const std::string &, Mode = M_READ, File::CreateMode = File::C_OVERWRITE);
 
+       virtual void set_block(bool);
+
 protected:
        virtual unsigned do_write(const char *, unsigned);
        virtual unsigned do_read(char *, unsigned);
@@ -101,6 +103,8 @@ public:
        virtual bool getline(std::string &);
        virtual int get();
 
+       virtual const Handle &get_handle(Mode);
+
        virtual SeekOffset seek(SeekOffset, SeekType);
        virtual SeekOffset tell() const { return position; }
 };
index 37954cca5bea6bb95a62a5afdfc094009584ba83..c5aee1e0536e040e72187172b2c084269596cce9 100644 (file)
@@ -37,6 +37,11 @@ void Memory::init(char *b, char *e, Mode m)
        mode = m;
 }
 
+void Memory::set_block(bool)
+{
+       throw logic_error("Memory::set_block");
+}
+
 unsigned Memory::do_write(const char *buf, unsigned size)
 {
        check_access(M_WRITE);
@@ -103,6 +108,11 @@ int Memory::get()
        return static_cast<unsigned char>(*pos++);
 }
 
+const Handle &Memory::get_handle(Mode)
+{
+       throw logic_error("Memory::get_handle");
+}
+
 SeekOffset Memory::seek(SeekOffset off, SeekType type)
 {
        char *new_pos;
index 4ae8eec0d7645ddde6014deaf0acb9338e91d322..4df2aa3b6cb4d4d848c4435c14be8eeefa93a52c 100644 (file)
@@ -21,6 +21,10 @@ public:
 private:
        void init(char *, char *, Mode);
 
+public:
+       virtual void set_block(bool);
+
+private:
        virtual unsigned do_write(const char *, unsigned);
        virtual unsigned do_read(char *, unsigned);
 public:
@@ -28,6 +32,8 @@ public:
        virtual bool getline(std::string &);
        virtual int get();
 
+       virtual const Handle &get_handle(Mode);
+
        virtual SeekOffset seek(SeekOffset, SeekType);
        virtual SeekOffset tell() const { return pos-begin; }
 };
index 3f964f4536facbb16413d5c05efc373cf4216722..2b2b76ef25ee47f2e75c597255a2a99e1e1a09e0 100644 (file)
@@ -23,7 +23,7 @@ public:
        ~Pipe();
 
        void set_mode(Mode);
-       void set_block(bool);
+       virtual void set_block(bool);
 
 protected:
        virtual unsigned do_write(const char *, unsigned);
index 9b7ba5444dbc09451e31b65d3500708820fb4c36..d53a63b13bd17a966f11de2f4766fb57e8880807 100644 (file)
@@ -21,6 +21,11 @@ Slice::Slice(Seekable &b, SeekOffset s, SeekOffset l):
        below.signal_flush_required.connect(sigc::mem_fun(this, &Slice::flush));
 }
 
+void Slice::set_block(bool)
+{
+       throw logic_error("Slice::set_block");
+}
+
 void Slice::flush()
 {
        sync_position = true;
@@ -98,6 +103,11 @@ int Slice::get()
        return c;
 }
 
+const Handle &Slice::get_handle(Mode)
+{
+       throw logic_error("Slice::get_handle");
+}
+
 SeekOffset Slice::seek(SeekOffset off, SeekType type)
 {
        Base::Synchronize sync(below);
index bcfef502343a23da7761f8b00caabda00705b789..fb4501483bd56e0956ac9b6775d352b53d2ad508 100644 (file)
@@ -28,6 +28,8 @@ private:
 public:
        Slice(Seekable &, SeekOffset, SeekOffset);
 
+       virtual void set_block(bool);
+
 private:
        void flush();
 
@@ -40,6 +42,8 @@ public:
        virtual unsigned put(char);
        virtual int get();
 
+       virtual const Handle &get_handle(Mode);
+
        virtual SeekOffset seek(SeekOffset, SeekType);
        virtual SeekOffset tell() const { return position; }
 };
index ffb08c5b80a2212d03d1b6d4f152dfa0a2733406..99ae7f81f8845016e73e92d60f13083e7e672ee6 100644 (file)
@@ -113,6 +113,11 @@ ZlibCompressed::~ZlibCompressed()
        delete priv;
 }
 
+void ZlibCompressed::set_block(bool)
+{
+       throw logic_error("ZlibCompressed::set_block");
+}
+
 void ZlibCompressed::flush()
 {
 #ifdef WITH_ZLIB
@@ -268,5 +273,10 @@ unsigned ZlibCompressed::do_read(char *data, unsigned size)
        return processed;
 }
 
+const Handle &ZlibCompressed::get_handle(Mode)
+{
+       throw logic_error("ZlibCompressed::get_handle");
+}
+
 } // namespace IO
 } // namespace Msp
index 30894cb9cf2345e7e5d79ed742dfe74e115ab99c..fc559febcbdb837036cd35b0f7d3aeb9d0248c37 100644 (file)
@@ -56,6 +56,8 @@ private:
 public:
        virtual ~ZlibCompressed();
 
+       virtual void set_block(bool);
+
        void flush();
 
 protected:
@@ -70,6 +72,8 @@ private:
 
 public:
        virtual unsigned do_read(char *, unsigned);
+
+       virtual const Handle &get_handle(Mode);
 };
 
 } // namespace IO