diff options
Diffstat (limited to 'protocols/WhatsAppWeb/src/utils.h')
-rw-r--r-- | protocols/WhatsAppWeb/src/utils.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/protocols/WhatsAppWeb/src/utils.h b/protocols/WhatsAppWeb/src/utils.h new file mode 100644 index 0000000000..d37c8fb187 --- /dev/null +++ b/protocols/WhatsAppWeb/src/utils.h @@ -0,0 +1,47 @@ +/* + +WhatsAppWeb plugin for Miranda NG +Copyright © 2019-21 George Hazan + +*/ + +#define LIST_EMPTY 0 +#define STREAM_END 2 +#define DICTIONARY_0 236 +#define DICTIONARY_1 237 +#define DICTIONARY_2 238 +#define DICTIONARY_3 239 +#define LIST_8 248 +#define LIST_16 249 +#define JID_PAIR 250 +#define HEX_8 251 +#define BINARY_8 252 +#define BINARY_20 253 +#define BINARY_32 254 +#define NIBBLE_8 255 + +class WAReader +{ + const BYTE *m_buf, *m_limit; + + uint32_t readIntN(int i); + CMStringA readStringFromChars(int size); + +public: + WAReader(const void *buf, size_t cbLen) : + m_buf((BYTE*)buf), + m_limit((BYTE*)buf + cbLen) + {} + + __forceinline uint32_t readInt8() { return readIntN(1); } + __forceinline uint32_t readInt16() { return readIntN(2); } + __forceinline uint32_t readInt32() { return readIntN(4); } + + bool readAttributes(JSONNode &node, int count); + uint32_t readInt20(); + bool readList(JSONNode &node, int tag); + int readListSize(int tag); + CMStringA readPacked(int tag); + CMStringA readString(int tag); + bool readNode(JSONNode&); +}; |