diff options
Diffstat (limited to 'src/shared/ByteBuffer.h')
-rw-r--r-- | src/shared/ByteBuffer.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/shared/ByteBuffer.h b/src/shared/ByteBuffer.h index 5e02afd86cf..d4842ec7515 100644 --- a/src/shared/ByteBuffer.h +++ b/src/shared/ByteBuffer.h @@ -261,6 +261,32 @@ class ByteBuffer return _wpos; } + template<typename T> + void read_skip() { read_skip(sizeof(T)); } + + template<typename T1, typename T2> + void read_skip2() { read_skip(sizeof(T1)+sizeof(T2)); } + + template<> + void read_skip<char*>() + { + uint8 size = read<uint8>(); + read_skip(size); + } + + template<> + void read_skip<char const*>() { read_skip<char*>(); } + + template<> + void read_skip<std::string>() { read_skip<char*>(); } + + void read_skip(size_t skip) + { + if(_rpos + skip > size()) + throw ByteBufferException(false, _rpos, skip, size()); + _rpos += skip; + } + template <typename T> T read() { T r = read<T>(_rpos); |