PX4 Firmware
PX4 Autopilot Software http://px4.io
|
A simple subset SAX-style BSON parser and generator. More...
#include <sys/types.h>
#include <stdint.h>
#include <stdbool.h>
Go to the source code of this file.
Classes | |
struct | bson_node_s |
Node structure passed to the callback. More... | |
struct | bson_decoder_s |
struct | bson_encoder_s |
Encoder state structure. More... | |
Macros | |
#define | BSON_MAXNAME 32 |
Maximum node name length. More... | |
#define | BSON_BUF_INCREMENT 128 |
Buffer growth increment when writing to a buffer. More... | |
Typedefs | |
typedef enum bson_binary_subtype | bson_binary_subtype_t |
typedef struct bson_node_s * | bson_node_t |
Node structure passed to the callback. More... | |
typedef struct bson_decoder_s * | bson_decoder_t |
typedef int(* | bson_decoder_callback) (bson_decoder_t decoder, void *priv, bson_node_t node) |
Node callback. More... | |
typedef struct bson_encoder_s * | bson_encoder_t |
Encoder state structure. More... | |
Enumerations | |
enum | bson_type_t { BSON_EOO = 0, BSON_DOUBLE = 1, BSON_STRING = 2, BSON_OBJECT = 3, BSON_ARRAY = 4, BSON_BINDATA = 5, BSON_UNDEFINED = 6, BSON_BOOL = 8, BSON_DATE = 9, BSON_nullptr = 10, BSON_INT32 = 16, BSON_INT64 = 18 } |
subset of the BSON node types we might care about More... | |
enum | bson_binary_subtype { BSON_BIN_BINARY = 0, BSON_BIN_USER = 128 } |
Functions | |
__EXPORT int | bson_decoder_init_file (bson_decoder_t decoder, int fd, bson_decoder_callback callback, void *priv) |
Initialise the decoder to read from a file. More... | |
__EXPORT int | bson_decoder_init_buf (bson_decoder_t decoder, void *buf, unsigned bufsize, bson_decoder_callback callback, void *priv) |
Initialise the decoder to read from a buffer in memory. More... | |
__EXPORT int | bson_decoder_next (bson_decoder_t decoder) |
Process the next node from the stream and invoke the callback. More... | |
__EXPORT int | bson_decoder_copy_data (bson_decoder_t decoder, void *buf) |
Copy node data. More... | |
__EXPORT size_t | bson_decoder_data_pending (bson_decoder_t decoder) |
Report copyable data size. More... | |
__EXPORT int | bson_encoder_init_file (bson_encoder_t encoder, int fd) |
Initialze the encoder for writing to a file. More... | |
__EXPORT int | bson_encoder_init_buf_file (bson_encoder_t encoder, int fd, void *buf, unsigned bufsize) |
Initialze the encoder for writing to a file. More... | |
__EXPORT int | bson_encoder_init_buf (bson_encoder_t encoder, void *buf, unsigned bufsize) |
Initialze the encoder for writing to a buffer. More... | |
__EXPORT int | bson_encoder_fini (bson_encoder_t encoder) |
Finalise the encoded stream. More... | |
__EXPORT int | bson_encoder_buf_size (bson_encoder_t encoder) |
Fetch the size of the encoded object; only valid for buffer operations. More... | |
__EXPORT void * | bson_encoder_buf_data (bson_encoder_t encoder) |
Get a pointer to the encoded object buffer. More... | |
__EXPORT int | bson_encoder_append_bool (bson_encoder_t encoder, const char *name, bool value) |
Append a boolean to the encoded stream. More... | |
__EXPORT int | bson_encoder_append_int (bson_encoder_t encoder, const char *name, int64_t value) |
Append an integer to the encoded stream. More... | |
__EXPORT int | bson_encoder_append_double (bson_encoder_t encoder, const char *name, double value) |
Append a double to the encoded stream. More... | |
__EXPORT int | bson_encoder_append_string (bson_encoder_t encoder, const char *name, const char *string) |
Append a string to the encoded stream. More... | |
__EXPORT int | bson_encoder_append_binary (bson_encoder_t encoder, const char *name, bson_binary_subtype_t subtype, size_t size, const void *data) |
Append a binary blob to the encoded stream. More... | |
A simple subset SAX-style BSON parser and generator.
Some types and defines taken from the standalone BSON parser/generator in the Mongo C connector.
Definition in file tinybson.h.
#define BSON_BUF_INCREMENT 128 |
Buffer growth increment when writing to a buffer.
Definition at line 79 of file tinybson.h.
Referenced by write_x().
#define BSON_MAXNAME 32 |
Maximum node name length.
Definition at line 74 of file tinybson.h.
Referenced by bson_decoder_next(), and write_name().
typedef enum bson_binary_subtype bson_binary_subtype_t |
typedef int(* bson_decoder_callback) (bson_decoder_t decoder, void *priv, bson_node_t node) |
Node callback.
The node callback function's return value is returned by bson_decoder_next.
Definition at line 102 of file tinybson.h.
typedef struct bson_decoder_s* bson_decoder_t |
Definition at line 95 of file tinybson.h.
typedef struct bson_encoder_s * bson_encoder_t |
Encoder state structure.
typedef struct bson_node_s * bson_node_t |
Node structure passed to the callback.
enum bson_binary_subtype |
Enumerator | |
---|---|
BSON_BIN_BINARY | |
BSON_BIN_USER |
Definition at line 66 of file tinybson.h.
enum bson_type_t |
subset of the BSON node types we might care about
Enumerator | |
---|---|
BSON_EOO | |
BSON_DOUBLE | |
BSON_STRING | |
BSON_OBJECT | |
BSON_ARRAY | |
BSON_BINDATA | |
BSON_UNDEFINED | |
BSON_BOOL | |
BSON_DATE | |
BSON_nullptr | |
BSON_INT32 | |
BSON_INT64 |
Definition at line 51 of file tinybson.h.
__EXPORT int bson_decoder_copy_data | ( | bson_decoder_t | decoder, |
void * | buf | ||
) |
Copy node data.
decoder | Decoder state, must have been initialised with bson_decoder_init. |
Definition at line 312 of file tinybson.cpp.
References CODER_CHECK, CODER_KILL, bson_decoder_s::pending, and read_x().
Referenced by decode_callback(), and param_import_callback().
__EXPORT size_t bson_decoder_data_pending | ( | bson_decoder_t | decoder | ) |
Report copyable data size.
decoder | Decoder state, must have been initialised with bson_decoder_init. |
Definition at line 331 of file tinybson.cpp.
References bson_decoder_s::pending.
Referenced by decode_callback(), and param_import_callback().
__EXPORT int bson_decoder_init_buf | ( | bson_decoder_t | decoder, |
void * | buf, | ||
unsigned | bufsize, | ||
bson_decoder_callback | callback, | ||
void * | priv | ||
) |
Initialise the decoder to read from a buffer in memory.
decoder | Decoder state structure to be initialised. |
buf | Buffer to read from. |
bufsize | Size of the buffer (BSON object may be smaller). May be passed as zero if the buffer size should be extracted from the BSON header only. |
callback | Callback to be invoked by bson_decoder_next |
priv | Callback private data, stored in node. |
Definition at line 137 of file tinybson.cpp.
References BSON_UNDEFINED, bson_decoder_s::buf, bson_decoder_s::bufpos, bson_decoder_s::bufsize, bson_decoder_s::callback, CODER_KILL, bson_decoder_s::dead, debug, bson_decoder_s::fd, bson_decoder_s::nesting, bson_decoder_s::node, bson_decoder_s::pending, bson_decoder_s::priv, read_int32(), and bson_node_s::type.
Referenced by param_import_internal(), and test_bson().
__EXPORT int bson_decoder_init_file | ( | bson_decoder_t | decoder, |
int | fd, | ||
bson_decoder_callback | callback, | ||
void * | priv | ||
) |
Initialise the decoder to read from a file.
decoder | Decoder state structure to be initialised. |
fd | File to read BSON data from. |
callback | Callback to be invoked by bson_decoder_next |
priv | Callback private data, stored in node. |
Definition at line 114 of file tinybson.cpp.
References BSON_UNDEFINED, bson_decoder_s::buf, bson_decoder_s::callback, CODER_KILL, bson_decoder_s::dead, bson_decoder_s::fd, fd, bson_decoder_s::nesting, bson_decoder_s::node, bson_decoder_s::pending, bson_decoder_s::priv, read_int32(), and bson_node_s::type.
Referenced by param_import_internal().
__EXPORT int bson_decoder_next | ( | bson_decoder_t | decoder | ) |
Process the next node from the stream and invoke the callback.
decoder | Decoder state, must have been initialised with bson_decoder_init. |
Definition at line 180 of file tinybson.cpp.
References bson_node_s::b, BSON_BINDATA, BSON_BOOL, BSON_DOUBLE, BSON_EOO, BSON_INT32, BSON_INT64, BSON_MAXNAME, BSON_STRING, bson_decoder_s::callback, CODER_CHECK, CODER_KILL, bson_node_s::d, debug, bson_decoder_s::fd, bson_node_s::i, bson_node_s::name, bson_decoder_s::nesting, bson_decoder_s::node, bson_decoder_s::pending, bson_decoder_s::priv, read_double(), read_int32(), read_int64(), read_int8(), bson_node_s::subtype, and bson_node_s::type.
Referenced by decode(), and param_import_internal().
__EXPORT int bson_encoder_append_binary | ( | bson_encoder_t | encoder, |
const char * | name, | ||
bson_binary_subtype_t | subtype, | ||
size_t | size, | ||
const void * | data | ||
) |
Append a binary blob to the encoded stream.
encoder | Encoder state. |
name | Node name. |
subtype | Binary data subtype. |
size | Data size. |
data | Buffer containing data to be encoded. |
Definition at line 614 of file tinybson.cpp.
References BSON_BINDATA, CODER_CHECK, CODER_KILL, write_int32(), write_int8(), write_name(), and write_x().
Referenced by encode(), param_export(), and param_export_internal().
__EXPORT int bson_encoder_append_bool | ( | bson_encoder_t | encoder, |
const char * | name, | ||
bool | value | ||
) |
Append a boolean to the encoded stream.
encoder | Encoder state. |
name | Node name. |
value | Value to be encoded. |
Definition at line 538 of file tinybson.cpp.
References BSON_BOOL, CODER_CHECK, CODER_KILL, write_int8(), and write_name().
Referenced by encode().
__EXPORT int bson_encoder_append_double | ( | bson_encoder_t | encoder, |
const char * | name, | ||
double | value | ||
) |
Append a double to the encoded stream.
encoder | Encoder state. |
name | Node name. |
value | Value to be encoded. |
Definition at line 580 of file tinybson.cpp.
References BSON_DOUBLE, CODER_CHECK, CODER_KILL, write_double(), write_int8(), and write_name().
Referenced by encode(), param_export(), and param_export_internal().
__EXPORT int bson_encoder_append_int | ( | bson_encoder_t | encoder, |
const char * | name, | ||
int64_t | value | ||
) |
Append an integer to the encoded stream.
encoder | Encoder state. |
name | Node name. |
value | Value to be encoded. |
Definition at line 552 of file tinybson.cpp.
References BSON_INT32, BSON_INT64, CODER_CHECK, CODER_KILL, debug, write_int32(), write_int64(), write_int8(), and write_name().
Referenced by encode(), param_export(), and param_export_internal().
__EXPORT int bson_encoder_append_string | ( | bson_encoder_t | encoder, |
const char * | name, | ||
const char * | string | ||
) |
Append a string to the encoded stream.
encoder | Encoder state. |
name | Node name. |
string | Nul-terminated C string. |
Definition at line 595 of file tinybson.cpp.
References BSON_STRING, CODER_CHECK, CODER_KILL, write_int32(), write_int8(), write_name(), and write_x().
Referenced by encode().
__EXPORT void* bson_encoder_buf_data | ( | bson_encoder_t | encoder | ) |
Get a pointer to the encoded object buffer.
Note that if the buffer was allocated by the encoder, it is the caller's responsibility to free this buffer.
Definition at line 527 of file tinybson.cpp.
References bson_encoder_s::buf, and bson_encoder_s::fd.
Referenced by param_export_internal(), and test_bson().
__EXPORT int bson_encoder_buf_size | ( | bson_encoder_t | encoder | ) |
Fetch the size of the encoded object; only valid for buffer operations.
Definition at line 515 of file tinybson.cpp.
References bson_encoder_s::bufpos, CODER_CHECK, and bson_encoder_s::fd.
Referenced by bson_encoder_fini(), param_export_internal(), and test_bson().
__EXPORT int bson_encoder_fini | ( | bson_encoder_t | encoder | ) |
Finalise the encoded stream.
encoder | The encoder to finalise. |
Definition at line 484 of file tinybson.cpp.
References bson_encoder_buf_size(), BSON_EOO, BSON_FSYNC, BSON_WRITE, bson_encoder_s::buf, bson_encoder_s::bufpos, CODER_CHECK, CODER_KILL, bson_encoder_s::fd, and write_int8().
Referenced by encode(), param_export(), and param_export_internal().
__EXPORT int bson_encoder_init_buf | ( | bson_encoder_t | encoder, |
void * | buf, | ||
unsigned | bufsize | ||
) |
Initialze the encoder for writing to a buffer.
encoder | Encoder state structure to be initialised. |
buf | Buffer pointer to use, or nullptr if the buffer should be allocated by the encoder. |
bufsize | Maximum buffer size, or zero for no limit. If the buffer is supplied, the size of the supplied buffer. |
Definition at line 460 of file tinybson.cpp.
References bson_encoder_s::buf, bson_encoder_s::bufpos, bson_encoder_s::bufsize, CODER_KILL, bson_encoder_s::dead, bson_encoder_s::fd, bson_encoder_s::realloc_ok, and write_int32().
Referenced by param_export_internal(), and test_bson().
__EXPORT int bson_encoder_init_buf_file | ( | bson_encoder_t | encoder, |
int | fd, | ||
void * | buf, | ||
unsigned | bufsize | ||
) |
Initialze the encoder for writing to a file.
encoder | Encoder state structure to be initialised. |
fd | File to write to. |
buf | Buffer pointer to use, can't be nullptr |
bufsize | Supplied buffer size |
Definition at line 443 of file tinybson.cpp.
References bson_encoder_s::buf, bson_encoder_s::bufpos, bson_encoder_s::bufsize, CODER_KILL, bson_encoder_s::dead, fd, bson_encoder_s::fd, bson_encoder_s::realloc_ok, and write_int32().
Referenced by param_export().
__EXPORT int bson_encoder_init_file | ( | bson_encoder_t | encoder, |
int | fd | ||
) |
Initialze the encoder for writing to a file.
encoder | Encoder state structure to be initialised. |
fd | File to write to. |
Definition at line 429 of file tinybson.cpp.
References bson_encoder_s::buf, CODER_KILL, bson_encoder_s::dead, fd, bson_encoder_s::fd, and write_int32().
Referenced by param_export().