tinybson: explicitly append int32 or int64

This commit is contained in:
Daniel Agar 2021-12-30 17:57:17 -05:00
parent 9cbb5c9920
commit 80ef6e19df
5 changed files with 32 additions and 24 deletions

View File

@ -106,7 +106,7 @@ param_export_internal(param_filter_func filter)
case PARAM_TYPE_INT32:
i = s->val.i;
if (bson_encoder_append_int(&encoder, param_name(s->param), i)) {
if (bson_encoder_append_int32(&encoder, param_name(s->param), i)) {
debug("BSON append failed for '%s'", param_name(s->param));
goto out;
}

View File

@ -1503,7 +1503,7 @@ static int param_export_internal(int fd, param_filter_func filter)
const int32_t i = s->val.i;
PX4_DEBUG("exporting: %s (%d) size: %lu val: %" PRIi32, name, s->param, (long unsigned int)size, i);
if (bson_encoder_append_int(&encoder, name, i) != 0) {
if (bson_encoder_append_int32(&encoder, name, i) != 0) {
PX4_ERR("BSON append failed for '%s'", name);
goto out;
}

View File

@ -575,28 +575,28 @@ int bson_encoder_append_bool(bson_encoder_t encoder, const char *name, bool valu
}
int
bson_encoder_append_int(bson_encoder_t encoder, const char *name, int64_t value)
bson_encoder_append_int32(bson_encoder_t encoder, const char *name, int32_t value)
{
bool result;
CODER_CHECK(encoder);
/* use the smallest encoding that will hold the value */
if (value == (int32_t)value) {
debug("encoding %lld as int32", value);
result = write_int8(encoder, BSON_INT32) ||
write_name(encoder, name) ||
write_int32(encoder, value);
} else {
debug("encoding %lld as int64", value);
result = write_int8(encoder, BSON_INT64) ||
write_name(encoder, name) ||
write_int64(encoder, value);
if (write_int8(encoder, BSON_INT32) ||
write_name(encoder, name) ||
write_int32(encoder, value)) {
CODER_KILL(encoder, "write error on BSON_INT32");
}
if (result) {
CODER_KILL(encoder, "write error on BSON_INT");
return 0;
}
int
bson_encoder_append_int64(bson_encoder_t encoder, const char *name, int64_t value)
{
CODER_CHECK(encoder);
if (write_int8(encoder, BSON_INT64) ||
write_name(encoder, name) ||
write_int64(encoder, value)) {
CODER_KILL(encoder, "write error on BSON_INT64");
}
return 0;
@ -613,7 +613,6 @@ bson_encoder_append_double(bson_encoder_t encoder, const char *name, double valu
CODER_KILL(encoder, "write error on BSON_DOUBLE");
}
return 0;
}

View File

@ -256,13 +256,22 @@ __EXPORT void *bson_encoder_buf_data(bson_encoder_t encoder);
__EXPORT int bson_encoder_append_bool(bson_encoder_t encoder, const char *name, bool value);
/**
* Append an integer to the encoded stream.
* Append an int32 to the encoded stream.
*
* @param encoder Encoder state.
* @param name Node name.
* @param value Value to be encoded.
*/
__EXPORT int bson_encoder_append_int(bson_encoder_t encoder, const char *name, int64_t value);
__EXPORT int bson_encoder_append_int32(bson_encoder_t encoder, const char *name, int32_t value);
/**
* Append an int64 to the encoded stream.
*
* @param encoder Encoder state.
* @param name Node name.
* @param value Value to be encoded.
*/
__EXPORT int bson_encoder_append_int64(bson_encoder_t encoder, const char *name, int64_t value);
/**
* Append a double to the encoded stream

View File

@ -65,12 +65,12 @@ encode(bson_encoder_t encoder)
return 1;
}
if (bson_encoder_append_int(encoder, "int1", sample_small_int) != 0) {
if (bson_encoder_append_int32(encoder, "int1", sample_small_int) != 0) {
PX4_ERR("FAIL: encoder: append int failed");
return 1;
}
if (bson_encoder_append_int(encoder, "int2", sample_big_int) != 0) {
if (bson_encoder_append_int64(encoder, "int2", sample_big_int) != 0) {
PX4_ERR("FAIL: encoder: append int failed");
return 1;
}