Rename switch case helpers in src/message.c
This commit is contained in:
parent
bd20b8da36
commit
5f88edfed1
2 changed files with 35 additions and 10 deletions
25
examples/unpack.c
Normal file
25
examples/unpack.c
Normal 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;
|
||||||
|
}
|
|
@ -9,7 +9,7 @@
|
||||||
#include <skipstone/queue.h>
|
#include <skipstone/queue.h>
|
||||||
#include <skipstone/message.h>
|
#include <skipstone/message.h>
|
||||||
|
|
||||||
#define case_type(t, type_t) \
|
#define case_pack(t, type_t) \
|
||||||
case t: { \
|
case t: { \
|
||||||
type_t v = va_arg(args, type_t); \
|
type_t v = va_arg(args, type_t); \
|
||||||
if (len < offset + sizeof(v)) { \
|
if (len < offset + sizeof(v)) { \
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
break; \
|
break; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define case_type_int(t, type_t) \
|
#define case_pack_int(t, type_t) \
|
||||||
case t: { \
|
case t: { \
|
||||||
type_t v = (type_t)va_arg(args, int); \
|
type_t v = (type_t)va_arg(args, int); \
|
||||||
if (len < offset + sizeof(v)) { \
|
if (len < offset + sizeof(v)) { \
|
||||||
|
@ -47,14 +47,14 @@ ssize_t skipstone_message_pack(void *message,
|
||||||
char c = template[i];
|
char c = template[i];
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case_type_int('c', int8_t);
|
case_pack_int('c', int8_t);
|
||||||
case_type_int('C', uint8_t);
|
case_pack_int('C', uint8_t);
|
||||||
case_type_int('s', int16_t);
|
case_pack_int('s', int16_t);
|
||||||
case_type_int('S', uint16_t);
|
case_pack_int('S', uint16_t);
|
||||||
case_type('l', int32_t);
|
case_pack('l', int32_t);
|
||||||
case_type('L', uint32_t);
|
case_pack('L', uint32_t);
|
||||||
case_type('q', int64_t);
|
case_pack('q', int64_t);
|
||||||
case_type('Q', uint64_t);
|
case_pack('Q', uint64_t);
|
||||||
|
|
||||||
case 'z': {
|
case 'z': {
|
||||||
char *value = va_arg(args, char *);
|
char *value = va_arg(args, char *);
|
||||||
|
|
Loading…
Add table
Reference in a new issue