Skip to content

Commit

Permalink
STREAM: add read/write functions for float LE/BE
Browse files Browse the repository at this point in the history
  • Loading branch information
yinsimei authored and sev- committed Jul 13, 2017
1 parent d37888a commit 8f2a177
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions common/stream.h
Expand Up @@ -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.
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit 8f2a177

Please sign in to comment.