diff options
author | Juan Manuel Tomás <jtomas1815@gmail.com> | 2020-07-11 21:37:42 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-11 21:37:42 -0300 |
commit | 13fdfe875efdfb33d392c5e634ceff494962e7dc (patch) | |
tree | 48e6d89b63f9af3a14d2ef4564f1c7cdceef77d5 /ipc.cpp | |
parent | 880047d09eb4b9a448a5817699422abc6f07b5d6 (diff) | |
parent | 291748a56824f77b137c66e9879ec0a4ecb14ced (diff) | |
download | jet-13fdfe875efdfb33d392c5e634ceff494962e7dc.tar.gz jet-13fdfe875efdfb33d392c5e634ceff494962e7dc.zip |
Merge pull request #10 from jmtomas/4
Diffstat (limited to 'ipc.cpp')
-rw-r--r-- | ipc.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
@@ -0,0 +1,37 @@ +enum Operation { + OP_NULL = 0, + OP_MOVE1, + OP_MOVE2, + OP_MOVE4, + OP_MOVE8, + OP_INSERT, + OP_DELETE, + OP_SHOW +}; + +void encode2(int16_t data, uint8_t *message, size_t offset) { + message[offset] = data & 0x00ff; + message[offset + 1] = (data & 0xff00) >> 8; +} + +int16_t decode2(uint8_t *message, size_t offset) { + return message[offset] | ((int16_t)message[offset + 1] << 8); +} + +void encode4(int32_t data, uint8_t *message, size_t offset) { + encode2( data & 0x0000ffff, message, offset); + encode2((data & 0xffff0000) >> 16, message, offset + 2); +} + +int32_t decode4(uint8_t *message, size_t offset) { + return decode2(message, offset) | ((int32_t)decode2(message, offset + 2) << 16); +} + +void encode8(int64_t data, uint8_t *message, size_t offset) { + encode4( data & 0x00000000ffffffff, message, offset); + encode4((data & 0xffffffff00000000) >> 32, message, offset + 4); +} + +int64_t decode8(uint8_t *message, size_t offset) { + return decode4(message, offset) | ((int64_t)decode4(message, offset + 4) << 32); +} |