70 virtual size_t Read(
void *Buffer,
size_t Count) = 0;
75 virtual size_t Write(
const void *Buffer,
size_t Count) = 0;
91 size_t ReadBuffer(
void *Buffer,
size_t Count);
108 template <
typename T>
109 size_t ReadBufferFixEndianness(T *ptr,
size_t ElementCount)
111 #if !MRPT_IS_BIG_ENDIAN
113 return ReadBuffer(ptr,ElementCount*
sizeof(T));
116 const size_t nread = ReadBuffer(ptr,ElementCount*
sizeof(T));
134 void WriteBuffer (
const void *Buffer,
size_t Count);
152 template <
typename T>
153 void WriteBufferFixEndianness(
const T *ptr,
size_t ElementCount)
155 #if !MRPT_IS_BIG_ENDIAN
157 return WriteBuffer(ptr,ElementCount*
sizeof(T));
160 for (
size_t i=0;i<ElementCount;i++) (*
this) << ptr[i];
166 size_t CopyFrom(
CStream* Source,
size_t Count);
179 virtual uint64_t getTotalBytesCount() = 0;
183 virtual uint64_t getPosition() =0;
218 template <typename T>
223 for (
size_t i=0;i<N;i++)
225 this->printf(fmt,V[i]);
226 if (i!=(N-1)) this->printf(
",");
270 bool getline(std::string &out_str);
276 #define DECLARE_CSTREAM_READ_WRITE_SIMPLE_TYPE( T ) \
277 CStream BASE_IMPEXP & operator<<(CStream&out, const T &a); \
278 CStream BASE_IMPEXP & operator>>(CStream&in, T &a);
292 #ifdef HAVE_LONG_DOUBLE
319 #if MRPT_WORD_SIZE!=32 // If it's 32 bit, size_t <=> uint32_t
347 #if MRPT_WORD_SIZE!=32 // If it's 32 bit, size_t <=> uint32_t