mirror of
https://github.com/moonlight-stream/moonlight-common-c.git
synced 2026-04-11 10:16:22 +00:00
Initial commit
This commit is contained in:
98
limelight-common/ByteBuffer.cpp
Normal file
98
limelight-common/ByteBuffer.cpp
Normal file
@@ -0,0 +1,98 @@
|
||||
#include "ByteBuffer.h"
|
||||
|
||||
void BbInitializeWrappedBuffer(PBYTE_BUFFER buff, char* data, int offset, int length, int byteOrder) {
|
||||
buff->buffer = data;
|
||||
buff->offset = offset;
|
||||
buff->length = length;
|
||||
buff->position = 0;
|
||||
buff->byteOrder = byteOrder;
|
||||
}
|
||||
|
||||
static int byteSwapInt(PBYTE_BUFFER buff, int i) {
|
||||
if (buff->byteOrder == BYTE_ORDER_BIG) {
|
||||
return htonl(i);
|
||||
}
|
||||
else {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
static int byteSwapShort(PBYTE_BUFFER buff, short s) {
|
||||
if (buff->byteOrder == BYTE_ORDER_BIG) {
|
||||
return htons(s);
|
||||
}
|
||||
else {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
int BbGet(PBYTE_BUFFER buff, char *c) {
|
||||
if (buff->position + sizeof(c) >= buff->length) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
memcpy(c, &buff[buff->position], sizeof(*c));
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int BbGetShort(PBYTE_BUFFER buff, short *s) {
|
||||
if (buff->position + sizeof(s) >= buff->length) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
memcpy(s, &buff[buff->position], sizeof(*s));
|
||||
|
||||
*s = byteSwapShort(buff, *s);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int BbGetInt(PBYTE_BUFFER buff, int *i) {
|
||||
if (buff->position + sizeof(i) >= buff->length) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
memcpy(i, &buff[buff->position], sizeof(*i));
|
||||
|
||||
*i = byteSwapInt(buff, *i);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int BbPutInt(PBYTE_BUFFER buff, int i) {
|
||||
if (buff->position + sizeof(i) >= buff->length) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
i = byteSwapInt(buff, i);
|
||||
|
||||
memcpy(&buff[buff->position], &i, sizeof(i));
|
||||
buff->position += sizeof(i);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int BbPutShort(PBYTE_BUFFER buff, short s) {
|
||||
if (buff->position + sizeof(s) >= buff->length) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
s = byteSwapShort(buff, s);
|
||||
|
||||
memcpy(&buff[buff->position], &s, sizeof(s));
|
||||
buff->position += sizeof(s);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int BbPut(PBYTE_BUFFER buff, char c) {
|
||||
if (buff->position + sizeof(c) >= buff->length) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
memcpy(&buff[buff->position], &c, sizeof(c));
|
||||
buff->position += sizeof(c);
|
||||
|
||||
return 1;
|
||||
}
|
||||
Reference in New Issue
Block a user