Rename switch case helpers in src/message.c

This commit is contained in:
XANTRONIX Development 2020-09-22 09:34:31 -05:00
parent bd20b8da36
commit 5f88edfed1
2 changed files with 35 additions and 10 deletions

25
examples/unpack.c Normal file
View file

@ -0,0 +1,25 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <skipstone/message.h>
int main(int argc, char **argv) {
uint8_t buf[6] = "\x5KMFDM",
str[SKIPSTONE_MESSAGE_MAX_STRLEN];
if (skipstone_message_unpack(buf, sizeof(buf), "z", str) < 0) {
fprintf(stderr, "%s: %s: %s\n",
argv[0], "skipstone_message_unpack()", strerror(errno));
goto message_unpack;
}
printf("%s\n", str);
return 0;
error_message_unpack:
return 1;
}

View file

@ -9,7 +9,7 @@
#include <skipstone/queue.h>
#include <skipstone/message.h>
#define case_type(t, type_t) \
#define case_pack(t, type_t) \
case t: { \
type_t v = va_arg(args, type_t); \
if (len < offset + sizeof(v)) { \
@ -21,7 +21,7 @@
break; \
}
#define case_type_int(t, type_t) \
#define case_pack_int(t, type_t) \
case t: { \
type_t v = (type_t)va_arg(args, int); \
if (len < offset + sizeof(v)) { \
@ -47,14 +47,14 @@ ssize_t skipstone_message_pack(void *message,
char c = template[i];
switch (c) {
case_type_int('c', int8_t);
case_type_int('C', uint8_t);
case_type_int('s', int16_t);
case_type_int('S', uint16_t);
case_type('l', int32_t);
case_type('L', uint32_t);
case_type('q', int64_t);
case_type('Q', uint64_t);
case_pack_int('c', int8_t);
case_pack_int('C', uint8_t);
case_pack_int('s', int16_t);
case_pack_int('S', uint16_t);
case_pack('l', int32_t);
case_pack('L', uint32_t);
case_pack('q', int64_t);
case_pack('Q', uint64_t);
case 'z': {
char *value = va_arg(args, char *);