forked from OctaForge/libostd
fix streamoffset empty checking
This commit is contained in:
parent
3e2b21ae4c
commit
ab72b4a602
|
@ -41,7 +41,7 @@ struct Stream {
|
||||||
Offset p = tell();
|
Offset p = tell();
|
||||||
if ((p < 0) || !seek(0, StreamSeek::end)) return -1;
|
if ((p < 0) || !seek(0, StreamSeek::end)) return -1;
|
||||||
Offset e = tell();
|
Offset e = tell();
|
||||||
return (p == e) || (seek(p, StreamSeek::set) ? e : -1);
|
return ((p == e) || seek(p, StreamSeek::set)) ? e : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool seek(Offset, StreamSeek = StreamSeek::set) {
|
virtual bool seek(Offset, StreamSeek = StreamSeek::set) {
|
||||||
|
@ -63,11 +63,13 @@ template<typename T>
|
||||||
struct StreamRange<T, true>: InputRange<
|
struct StreamRange<T, true>: InputRange<
|
||||||
StreamRange<T>, octa::InputRangeTag, T, T, octa::Size, StreamOffset
|
StreamRange<T>, octa::InputRangeTag, T, T, octa::Size, StreamOffset
|
||||||
> {
|
> {
|
||||||
StreamRange(): p_stream() {}
|
StreamRange(): p_stream(), p_size(0) {}
|
||||||
StreamRange(Stream &s): p_stream(&s) {}
|
StreamRange(Stream &s): p_stream(&s), p_size(s.size()) {}
|
||||||
StreamRange(const StreamRange &r): p_stream(r.p_stream) {}
|
StreamRange(const StreamRange &r): p_stream(r.p_stream), p_size(r.p_size) {}
|
||||||
|
|
||||||
bool empty() const { return p_stream->end(); }
|
bool empty() const {
|
||||||
|
return p_stream->tell() == p_size;
|
||||||
|
}
|
||||||
|
|
||||||
bool pop_front() {
|
bool pop_front() {
|
||||||
if (empty()) return false;
|
if (empty()) return false;
|
||||||
|
@ -86,11 +88,12 @@ struct StreamRange<T, true>: InputRange<
|
||||||
}
|
}
|
||||||
|
|
||||||
void put(T val) {
|
void put(T val) {
|
||||||
p_stream->write(&val, sizeof(T));
|
p_size += p_stream->write(&val, sizeof(T));
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Stream *p_stream;
|
Stream *p_stream;
|
||||||
|
StreamOffset p_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
|
Loading…
Reference in a new issue