Skip to content

Commit fc2564a

Browse files
committed
Bools & undef implemented
1 parent 4c8c7bf commit fc2564a

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

src/cbor.c

+16-2
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ cbor_item_t * cbor_load(cbor_data source,
101101
.tag = &cbor_builder_tag_callback,
102102

103103
.null = &cbor_builder_null_callback,
104+
.undefined = &cbor_builder_undefined_callback,
105+
.boolean = &cbor_builder_boolean_callback,
104106
.float2 = &cbor_builder_float2_callback,
105107
.float4 = &cbor_builder_float4_callback,
106108
.float8 = &cbor_builder_float8_callback,
@@ -984,8 +986,20 @@ cbor_item_t * cbor_new_null()
984986
cbor_set_ctrl(item, CBOR_CTRL_NULL);
985987
return item;
986988
}
987-
cbor_item_t * cbor_new_undef();
988-
cbor_item_t * cbor_new_bool(bool value);
989+
990+
cbor_item_t * cbor_new_undef()
991+
{
992+
cbor_item_t * item = cbor_new_ctrl();
993+
cbor_set_ctrl(item, CBOR_CTRL_UNDEF);
994+
return item;
995+
}
996+
997+
cbor_item_t * cbor_new_bool(bool value)
998+
{
999+
cbor_item_t * item = cbor_new_ctrl();
1000+
cbor_set_ctrl(item, value ? CBOR_CTRL_TRUE : CBOR_CTRL_FALSE);
1001+
return item;
1002+
}
9891003

9901004
cbor_item_t * cbor_new_definite_string()
9911005
{

src/cbor_internal.c

+16-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <assert.h>
44
#include <string.h>
55
#include <math.h>
6+
#include <zlib.h>
67

78
// TODO asserts
89
// TODO check mallocs
@@ -338,8 +339,21 @@ enum cbor_callback_result cbor_builder_null_callback(void * context)
338339
return CBOR_CALLBACK_OK;
339340
}
340341

341-
enum cbor_callback_result cbor_builder_undefined_callback(void * context);
342-
enum cbor_callback_result cbor_builder_boolean_callback(void * context, bool value);
342+
enum cbor_callback_result cbor_builder_undefined_callback(void * context)
343+
{
344+
struct _cbor_decoder_context * ctx = context;
345+
cbor_item_t * res = cbor_new_undef();
346+
_cbor_builder_append(res, ctx);
347+
return CBOR_CALLBACK_OK;
348+
}
349+
350+
enum cbor_callback_result cbor_builder_boolean_callback(void * context, bool value)
351+
{
352+
struct _cbor_decoder_context * ctx = context;
353+
cbor_item_t * res = cbor_new_bool(value);
354+
_cbor_builder_append(res, ctx);
355+
return CBOR_CALLBACK_OK;
356+
}
343357

344358
enum cbor_callback_result cbor_builder_tag_callback(void * context, uint64_t value)
345359
{

0 commit comments

Comments
 (0)