X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fio%2Fslice.h;h=cec1fcf12b0dc0d822f8a837445a096f64236637;hb=122846f0881673770d88eff7d925ecf25c01b62e;hp=f6115851c4c4c0637dcc262191c15e51cdcec81c;hpb=eedad559456b8e62ed3b9bd9e8253e5f8bcc02d6;p=libs%2Fcore.git diff --git a/source/io/slice.h b/source/io/slice.h index f611585..cec1fcf 100644 --- a/source/io/slice.h +++ b/source/io/slice.h @@ -16,30 +16,35 @@ its range. If the offset of the underlying object is changed, the Slice will restore it before the next access. This enables multiple Slices to be created on top of the same object. */ -class Slice: public Seekable +class Slice: public Seekable, public sigc::trackable { private: Seekable &below; - SeekOffset start_offset; - SeekOffset length; - SeekOffset position; - bool sync_position; + SeekOffset start_offset = 0; + SeekOffset length = 0; + SeekOffset position = 0; + bool sync_position = true; public: Slice(Seekable &, SeekOffset, SeekOffset); + virtual void set_block(bool); + virtual void set_inherit(bool); + private: void flush(); unsigned prepare_op(unsigned, Mode); protected: - virtual unsigned do_write(const char *, unsigned); - virtual unsigned do_read(char *, unsigned); + virtual std::size_t do_write(const char *, std::size_t); + virtual std::size_t do_read(char *, std::size_t); public: - virtual unsigned put(char); + virtual std::size_t put(char); virtual int get(); + virtual const Handle &get_handle(Mode); + virtual SeekOffset seek(SeekOffset, SeekType); virtual SeekOffset tell() const { return position; } };