MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / mp_encode_double

Function mp_encode_double

deps/lua/src/lua_cmsgpack.c:203–219  ·  view source on GitHub ↗

we assume IEEE 754 internal format for single and double precision floats. */

Source from the content-addressed store, hash-verified

201
202/* we assume IEEE 754 internal format for single and double precision floats. */
203void mp_encode_double(lua_State *L, mp_buf *buf, double d) {
204 unsigned char b[9];
205 float f = d;
206
207 assert(sizeof(f) == 4 && sizeof(d) == 8);
208 if (d == (double)f) {
209 b[0] = 0xca; /* float IEEE 754 */
210 memcpy(b+1,&f,4);
211 memrevifle(b+1,4);
212 mp_buf_append(L,buf,b,5);
213 } else if (sizeof(d) == 8) {
214 b[0] = 0xcb; /* double IEEE 754 */
215 memcpy(b+1,&d,8);
216 memrevifle(b+1,8);
217 mp_buf_append(L,buf,b,9);
218 }
219}
220
221void mp_encode_int(lua_State *L, mp_buf *buf, int64_t n) {
222 unsigned char b[9];

Callers 1

mp_encode_lua_numberFunction · 0.85

Calls 2

memrevifleFunction · 0.85
mp_buf_appendFunction · 0.85

Tested by

no test coverage detected