From aa65327e737e2d595fe4b0897620d0f4dbf3c023 Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Sat, 18 Jul 2020 18:16:54 +0200 Subject: [PATCH] Mayaqua/Pack: add PackGetStrSize(), for strings with non-constant length --- src/Mayaqua/Pack.c | 22 ++++++++++++++++++++++ src/Mayaqua/Pack.h | 2 ++ 2 files changed, 24 insertions(+) diff --git a/src/Mayaqua/Pack.c b/src/Mayaqua/Pack.c index 7d5b137b..5c11061f 100644 --- a/src/Mayaqua/Pack.c +++ b/src/Mayaqua/Pack.c @@ -1429,6 +1429,28 @@ bool PackGetStrEx(PACK *p, char *name, char *str, UINT size, UINT index) return true; } +// Get the string size from the PACK +bool PackGetStrSize(PACK *p, char *name) +{ + return PackGetStrSizeEx(p, name, 0); +} +bool PackGetStrSizeEx(PACK *p, char *name, UINT index) +{ + ELEMENT *e; + // Validate arguments + if (p == NULL || name == NULL) + { + return 0; + } + + e = GetElement(p, name, VALUE_STR); + if (e == NULL) + { + return 0; + } + return GetDataValueSize(e, index); +} + // Add the buffer to the PACK (array) ELEMENT *PackAddBufEx(PACK *p, char *name, BUF *b, UINT index, UINT total) { diff --git a/src/Mayaqua/Pack.h b/src/Mayaqua/Pack.h index f0d553b8..2260d4cd 100644 --- a/src/Mayaqua/Pack.h +++ b/src/Mayaqua/Pack.h @@ -143,6 +143,8 @@ ELEMENT *PackAddData(PACK *p, char *name, void *data, UINT size); ELEMENT *PackAddDataEx(PACK *p, char *name, void *data, UINT size, UINT index, UINT total); ELEMENT *PackAddBuf(PACK *p, char *name, BUF *b); ELEMENT *PackAddBufEx(PACK *p, char *name, BUF *b, UINT index, UINT total); +bool PackGetStrSize(PACK *p, char *name); +bool PackGetStrSizeEx(PACK *p, char *name, UINT index); bool PackGetStr(PACK *p, char *name, char *str, UINT size); bool PackGetStrEx(PACK *p, char *name, char *str, UINT size, UINT index); bool PackGetUniStr(PACK *p, char *name, wchar_t *unistr, UINT size);