X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fslice.cpp;h=535deae1184bfdf7900375652e4faf8bede8473d;hp=3fbfc5756f4e5ff4173eaf30e6ceedc1a2815591;hb=HEAD;hpb=ea8bf8f588310b0d7fd3297d74907602705bba1d diff --git a/source/io/slice.cpp b/source/io/slice.cpp index 3fbfc57..9ca5966 100644 --- a/source/io/slice.cpp +++ b/source/io/slice.cpp @@ -1,4 +1,4 @@ -#include +#include #include "slice.h" using namespace std; @@ -9,12 +9,10 @@ namespace IO { Slice::Slice(Seekable &b, SeekOffset s, SeekOffset l): below(b), start_offset(s), - length(l), - position(0), - sync_position(true) + length(l) { if(s<0 || l<0) - throw invalid_argument("Slice"); + throw invalid_argument("Slice::Slice"); Base::Synchronize sync(below); mode = below.get_mode()&M_RDWR; @@ -23,12 +21,12 @@ Slice::Slice(Seekable &b, SeekOffset s, SeekOffset l): void Slice::set_block(bool) { - throw logic_error("Slice::set_block"); + throw unsupported("Slice::set_block"); } void Slice::set_inherit(bool) { - throw logic_error("Slice::set_inherit"); + throw unsupported("Slice::set_inherit"); } void Slice::flush() @@ -57,39 +55,39 @@ unsigned Slice::prepare_op(unsigned size, Mode m) return size; } -unsigned Slice::do_write(const char *data, unsigned size) +size_t Slice::do_write(const char *data, size_t size) { Base::Synchronize sync(below); size = prepare_op(size, M_WRITE); if(!size) return 0; - unsigned len = below.write(data, size); + size_t len = below.write(data, size); position += len; return len; } -unsigned Slice::do_read(char *data, unsigned size) +size_t Slice::do_read(char *data, size_t size) { Base::Synchronize sync(below); size = prepare_op(size, M_READ); if(!size) return 0; - unsigned len = below.read(data, size); + size_t len = below.read(data, size); if(!len && below.eof()) set_eof(); position += len; return len; } -unsigned Slice::put(char c) +size_t Slice::put(char c) { Base::Synchronize sync(below); if(!prepare_op(1, M_WRITE)) return 0; - unsigned len = below.put(c); + size_t len = below.put(c); position += len; return len; } @@ -110,7 +108,7 @@ int Slice::get() const Handle &Slice::get_handle(Mode) { - throw logic_error("Slice::get_handle"); + throw unsupported("Slice::get_handle"); } SeekOffset Slice::seek(SeekOffset off, SeekType type)