Permalink
Browse files

STREAM: add read/write functions for float LE/BE

  • Loading branch information...
yinsimei authored and sev- committed Jul 10, 2017
1 parent d37888a commit 8f2a177cef73403ec65cac8430b3a0cae0249d37
Showing with 42 additions and 0 deletions.
  1. +42 −0 common/stream.h
View
@@ -185,6 +185,32 @@ class WriteStream : virtual public Stream {
}
#endif
/**
* Write the given 32-bit floating point value stored
* in little endian(LSB first) order into the stream.
*/
FORCEINLINE void writeFloatLE(float value) {
uint32 n;
memcpy(&n, &value, 4);
writeUint32LE(n);
}
/**
* Write the given 32-bit floating point value stored
* in big endian order into the stream.
*/
FORCEINLINE void writeFloatBE(float value) {
uint32 n;
memcpy(&n, &value, 4);
writeUint32BE(n);
}
/**
* Write the given string to the stream.
* This writes str.size() characters, but no terminating zero byte.
@@ -417,6 +443,22 @@ class ReadStream : virtual public Stream {
return f;
}
/**
* Read a 32-bit floating point value stored in big endian
* order from the stream and return it.
* Performs no error checking. The return value is undefined
* if a read error occurred (for which client code can check by
* calling err() and eos() ).
*/
FORCEINLINE float readFloatBE() {
uint32 n = readUint32BE();
float f;
memcpy(&f, &n, 4);
return f;
}
/**
* Read the specified amount of data into a malloc'ed buffer
* which then is wrapped into a MemoryReadStream.

0 comments on commit 8f2a177

Please sign in to comment.