-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuilder.h
41 lines (34 loc) · 982 Bytes
/
builder.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#ifndef HANDOVER_BUILDER_H_INCLUDED
#define HANDOVER_BUILDER_H_INCLUDED
#include <string.h>
#include "handover.h"
typedef struct
{
void *buf;
size_t size;
char *string;
HandoverPayload *payload;
} HandoverBuilder;
static inline void handover_builder_init(HandoverBuilder *builder, void *buf, size_t size)
{
HandoverPayload *payload = (HandoverPayload *)buf;
payload->size = size;
*builder = (HandoverBuilder){
.buf = buf,
.size = size,
.string = ((char *)buf) + size,
.payload = payload,
};
}
static inline void handover_builder_append(HandoverBuilder *builder, HandoverRecord record)
{
builder->payload->records[builder->payload->count++] = record;
}
static inline size_t handover_builder_append_str(HandoverBuilder *builder, const char *str)
{
size_t len = strlen(str) + 1;
builder->string -= len;
memcpy(builder->string, str, len);
return builder->string - (char *)builder->buf;
}
#endif