mischiefinitial commitbd439e57 years agoHistory
101 lines · 2.1 KB · C
RawDownload
#pragma lib	"libcbor.a" enum {	CBOR_UINT,	CBOR_SINT,	CBOR_BYTE,	CBOR_STRING,	CBOR_ARRAY,	CBOR_MAP,	CBOR_MAP_ELEMENT,	CBOR_TAG,	CBOR_NULL,	CBOR_FLOAT,	CBOR_DOUBLE, 	CBOR_TYPE_MAX, 	CBOR_TAG_DATETIME	= 0,	CBOR_TAG_UNIXTIME	= 1,	CBOR_TAG_CBOR		= 55799ULL,}; typedef struct cbor cbor;struct cbor{	uchar	type; 	union {		/* CBOR_UINT */		u64int	uint; 		/* CBOR_SINT */		s64int	sint; 		struct {			int len; 			union {				/* CBOR_BYTE */				uchar*	byte; 				/* CBOR_STRING */				char*	string; 				/* CBOR_ARRAY / CBOR_MAP */				cbor**	array;			};		}; 		/* CBOR_MAP_ELEMENT */		struct {			cbor*	key;			cbor*	value;		}; 		/* CBOR_TAG */		struct {			u64int	tag;			cbor*	item;		}; 		/* CBOR_FLOAT */		float	f; 		/* CBOR_DOUBLE */		double	d;	};}; typedef struct cbor_allocator cbor_allocator;struct cbor_allocator {	void*	(*alloc)(void*, ulong);	void*	(*realloc)(void*, void*, ulong, ulong);	void	(*free)(void*, void*);	void*	context;}; extern cbor_allocator cbor_default_allocator; cbor*	cbor_make_uint(cbor_allocator *a, u64int v);cbor*	cbor_make_sint(cbor_allocator *a, s64int v);cbor*	cbor_make_byte(cbor_allocator *a, uchar *buf, int n);cbor*	cbor_make_string(cbor_allocator *a, char *buf, int n);cbor*	cbor_make_array(cbor_allocator *a, int len);cbor*	cbor_array_append(cbor_allocator *a, cbor *array, cbor *item);cbor*	cbor_make_map(cbor_allocator *a, int len);cbor*	cbor_make_map_element(cbor_allocator *a, cbor *k, cbor *v);cbor*	cbor_map_append_element(cbor_allocator *a, cbor *map, cbor *elem);cbor*	cbor_map_append(cbor_allocator *a, cbor *map, cbor *key, cbor *value);cbor*	cbor_make_tag(cbor_allocator *a, u64int tag, cbor *e);cbor*	cbor_make_null(cbor_allocator *a);cbor*	cbor_make_float(cbor_allocator *a, float f);cbor*	cbor_make_double(cbor_allocator *a, double d); void	cbor_free(cbor_allocator *a, cbor *c);cbor*	cbor_decode(cbor_allocator *alloc, uchar *buf, ulong n);ulong	cbor_encode(cbor *c, uchar *buf, ulong n);ulong	cbor_encode_size(cbor *c); cbor*	cbor_pack(cbor_allocator *a, char *fmt, ...);int		cbor_unpack(cbor_allocator *a, cbor *c, char *fmt, ...);