mirror of
https://github.com/emqx/neuron.git
synced 2026-10-28 14:07:20 +08:00
Improve the implementation of set/get functions in data value
This commit is contained in:
@@ -247,11 +247,11 @@ void neu_dvalue_init_uint32(neu_data_val_t *val, uint32_t u32);
|
||||
void neu_dvalue_init_uint64(neu_data_val_t *val, uint64_t u64);
|
||||
void neu_dvalue_init_float(neu_data_val_t *val, float f32);
|
||||
void neu_dvalue_init_double(neu_data_val_t *val, double f64);
|
||||
void neu_dvalue_init_errorcode(neu_data_val_t *val, int32_t i32);
|
||||
void neu_dvalue_init_int_val(neu_data_val_t *val, neu_int_val_t int_val);
|
||||
void neu_dvalue_init_string_val(neu_data_val_t * val,
|
||||
neu_string_val_t string_val);
|
||||
void neu_dvalue_init_data_val(neu_data_val_t *val, void *data);
|
||||
void neu_dvalue_init_errorcode_val(neu_data_val_t *val, int32_t i32);
|
||||
|
||||
/* The parameter cstr/bytes/array/vec is copy to neu_data_val_t
|
||||
*/
|
||||
@@ -294,9 +294,9 @@ int neu_dvalue_set_uint32(neu_data_val_t *val, uint32_t u32);
|
||||
int neu_dvalue_set_uint64(neu_data_val_t *val, uint64_t u64);
|
||||
int neu_dvalue_set_float(neu_data_val_t *val, float f32);
|
||||
int neu_dvalue_set_double(neu_data_val_t *val, double f64);
|
||||
int neu_dvalue_set_errorcode(neu_data_val_t *val, int32_t i32);
|
||||
int neu_dvalue_set_int_val(neu_data_val_t *val, neu_int_val_t int_val);
|
||||
int neu_dvalue_set_string_val(neu_data_val_t *val, neu_string_val_t string_val);
|
||||
int neu_dvalue_set_errorcode(neu_data_val_t *val, int32_t i32);
|
||||
|
||||
/* The parameter cstr/bytes/array/vec is copy to neu_data_val_t
|
||||
*/
|
||||
@@ -338,11 +338,11 @@ int neu_dvalue_get_uint32(neu_data_val_t *val, uint32_t *p_u32);
|
||||
int neu_dvalue_get_uint64(neu_data_val_t *val, uint64_t *p_u64);
|
||||
int neu_dvalue_get_float(neu_data_val_t *val, float *p_f32);
|
||||
int neu_dvalue_get_double(neu_data_val_t *val, double *p_f64);
|
||||
int neu_dvalue_get_errorcode(neu_data_val_t *val, int32_t *p_i32);
|
||||
int neu_dvalue_get_int_val(neu_data_val_t *val, neu_int_val_t *p_int_val);
|
||||
int neu_dvalue_get_string_val(neu_data_val_t * val,
|
||||
neu_string_val_t *p_string_val);
|
||||
int neu_dvalue_get_data_val(neu_data_val_t *val, void **p_data);
|
||||
int neu_dvalue_get_errorcode(neu_data_val_t *val, int32_t *p_i32);
|
||||
|
||||
/* The parameter cstr/bytes/array/vec is copy from neu_data_val_t
|
||||
*/
|
||||
|
||||
@@ -395,7 +395,7 @@ static int handle_trans_data_value(neu_data_val_t *trans_val)
|
||||
|
||||
int_val = neu_fixed_array_get(array, 0);
|
||||
val_err = int_val->val;
|
||||
neu_dvalue_get_int32(val_err, &err);
|
||||
neu_dvalue_get_errorcode(val_err, &err);
|
||||
|
||||
int_val = neu_fixed_array_get(array, 1);
|
||||
val_i64 = int_val->val;
|
||||
@@ -434,7 +434,7 @@ static int handle_write_resp_value(neu_data_val_t *data_value)
|
||||
for (i = 0; i < array->length; i++) {
|
||||
int_val = neu_fixed_array_get(array, i);
|
||||
val_err = int_val->val;
|
||||
neu_dvalue_get_int32(val_err, &err);
|
||||
neu_dvalue_get_errorcode(val_err, &err);
|
||||
log_info("The sample driver write datatag(%d) return result(%d)",
|
||||
int_val->key, err);
|
||||
}
|
||||
|
||||
@@ -122,8 +122,8 @@ static neu_data_val_t *setup_read_resp_data_value()
|
||||
|
||||
neu_int_val_t int_val;
|
||||
neu_data_val_t *val_err;
|
||||
val_err = neu_dvalue_new(NEU_DTYPE_INT32);
|
||||
neu_dvalue_set_int32(val_err, 0);
|
||||
val_err = neu_dvalue_new(NEU_DTYPE_ERRORCODE);
|
||||
neu_dvalue_set_errorcode(val_err, 0);
|
||||
// tag id of first element is 0 for indicate all reading
|
||||
neu_int_val_init(&int_val, 0, val_err);
|
||||
neu_fixed_array_set(array, 0, (void *) &int_val);
|
||||
@@ -202,7 +202,7 @@ static int handle_write_data_value(neu_data_val_t * write_val,
|
||||
|
||||
val_i32 = neu_dvalue_unit_new();
|
||||
// all results of writing is success, so set 0
|
||||
neu_dvalue_init_int32(val_i32, 0);
|
||||
neu_dvalue_init_errorcode(val_i32, 0);
|
||||
neu_int_val_init(&resp_int_val, i, val_i32);
|
||||
neu_fixed_array_set(array, i, &resp_int_val);
|
||||
}
|
||||
|
||||
+133
-69
@@ -62,6 +62,7 @@ static bool type_has_pointer(neu_dtype_e type)
|
||||
case NEU_DTYPE_BYTES:
|
||||
case NEU_DTYPE_TEXT:
|
||||
case NEU_DTYPE_STRUCT:
|
||||
case NEU_DTYPE_DATA_VAL:
|
||||
return true;
|
||||
|
||||
default:
|
||||
@@ -327,6 +328,12 @@ void neu_dvalue_init_double(neu_data_val_t *val, double f64)
|
||||
val->val_double = f64;
|
||||
}
|
||||
|
||||
void neu_dvalue_init_errorcode(neu_data_val_t *val, int32_t i32)
|
||||
{
|
||||
val->type = NEU_DTYPE_ERRORCODE;
|
||||
val->val_int32 = i32;
|
||||
}
|
||||
|
||||
void neu_dvalue_init_int_val(neu_data_val_t *val, neu_int_val_t int_val)
|
||||
{
|
||||
neu_dtype_e type;
|
||||
@@ -356,18 +363,6 @@ void neu_dvalue_init_string_val(neu_data_val_t * val,
|
||||
}
|
||||
}
|
||||
|
||||
void neu_dvalue_init_data_val(neu_data_val_t *val, void *data)
|
||||
{
|
||||
val->type = NEU_DTYPE_DATA_VAL;
|
||||
val->val_data = data;
|
||||
}
|
||||
|
||||
void neu_dvalue_init_errorcode_val(neu_data_val_t *val, int32_t i32)
|
||||
{
|
||||
val->type = NEU_DTYPE_ERRORCODE;
|
||||
val->val_int32 = i32;
|
||||
}
|
||||
|
||||
void neu_dvalue_init_copy_cstr(neu_data_val_t *val, char *cstr)
|
||||
{
|
||||
val->type = NEU_DTYPE_CSTR | NEU_DTYPE_PTR | NEU_DTYPE_EXTERN_PTR;
|
||||
@@ -483,6 +478,17 @@ void neu_dvalue_init_move_bytes(neu_data_val_t *val, neu_bytes_t *bytes)
|
||||
val->val_data = bytes;
|
||||
}
|
||||
|
||||
void neu_dvalue_init_move_data_val(neu_data_val_t *val, neu_data_val_t *data)
|
||||
{
|
||||
neu_dtype_e type;
|
||||
|
||||
type = NEU_DTYPE_DATA_VAL;
|
||||
type |= NEU_DTYPE_PTR | NEU_DTYPE_EXTERN_PTR;
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
val->type = type;
|
||||
val->val_data = data;
|
||||
}
|
||||
|
||||
/* The owership of parameter array is move to neu_data_val_t
|
||||
*/
|
||||
void neu_dvalue_init_move_array(neu_data_val_t *val, neu_dtype_e type,
|
||||
@@ -642,6 +648,17 @@ int neu_dvalue_set_double(neu_data_val_t *val, double f64)
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_set_errorcode(neu_data_val_t *val, int32_t i32)
|
||||
{
|
||||
assert(val->type == NEU_DTYPE_ERRORCODE);
|
||||
if (val->type == NEU_DTYPE_ERRORCODE) {
|
||||
val->val_int32 = i32;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_set_int_val(neu_data_val_t *val, neu_int_val_t int_val)
|
||||
{
|
||||
neu_dtype_e type;
|
||||
@@ -691,29 +708,21 @@ int neu_dvalue_set_string_val(neu_data_val_t *val, neu_string_val_t string_val)
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_set_errorcode(neu_data_val_t *val, int32_t i32)
|
||||
{
|
||||
assert(val->type == NEU_DTYPE_ERRORCODE);
|
||||
if (val->type == NEU_DTYPE_ERRORCODE) {
|
||||
val->val_int32 = i32;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_set_cstr(neu_data_val_t *val, char *cstr)
|
||||
{
|
||||
neu_dtype_e type;
|
||||
neu_dtype_e val_type;
|
||||
|
||||
type = NEU_DTYPE_CSTR | NEU_DTYPE_PTR | NEU_DTYPE_EXTERN_PTR;
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val->type == type);
|
||||
if (val->type == type) {
|
||||
if (val->val_data != NULL) {
|
||||
val_type = val->type | NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val_type == type);
|
||||
if (val_type == type) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
free(val->val_data);
|
||||
}
|
||||
val->val_data = strdup(cstr);
|
||||
val->type = type;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
@@ -723,15 +732,18 @@ int neu_dvalue_set_cstr(neu_data_val_t *val, char *cstr)
|
||||
int neu_dvalue_set_string(neu_data_val_t *val, neu_string_t *string)
|
||||
{
|
||||
neu_dtype_e type;
|
||||
neu_dtype_e val_type;
|
||||
|
||||
type = NEU_DTYPE_BYTES | NEU_DTYPE_PTR | NEU_DTYPE_EXTERN_PTR;
|
||||
type = NEU_DTYPE_STRING | NEU_DTYPE_PTR | NEU_DTYPE_EXTERN_PTR;
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val->type == type);
|
||||
if (val->type == type) {
|
||||
if (val->val_data != NULL) {
|
||||
val_type = val->type | NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val_type == type);
|
||||
if (val_type == type) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
neu_string_free(val->val_data);
|
||||
}
|
||||
val->val_data = neu_string_clone(string);
|
||||
val->type = type;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
@@ -741,15 +753,18 @@ int neu_dvalue_set_string(neu_data_val_t *val, neu_string_t *string)
|
||||
int neu_dvalue_set_bytes(neu_data_val_t *val, neu_bytes_t *bytes)
|
||||
{
|
||||
neu_dtype_e type;
|
||||
neu_dtype_e val_type;
|
||||
|
||||
type = NEU_DTYPE_BYTES | NEU_DTYPE_PTR | NEU_DTYPE_EXTERN_PTR;
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val->type == type);
|
||||
if (val->type == type) {
|
||||
if (val->val_data != NULL) {
|
||||
val_type = val->type | NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val_type == type);
|
||||
if (val_type == type) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
neu_bytes_free(val->val_data);
|
||||
}
|
||||
val->val_data = neu_bytes_clone(bytes);
|
||||
val->type = type;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
@@ -759,15 +774,18 @@ int neu_dvalue_set_bytes(neu_data_val_t *val, neu_bytes_t *bytes)
|
||||
int neu_dvalue_set_array(neu_data_val_t *val, neu_fixed_array_t *array)
|
||||
{
|
||||
neu_dtype_e type;
|
||||
neu_dtype_e flags_type;
|
||||
|
||||
type = NEU_DTYPE_ARRAY | NEU_DTYPE_PTR | NEU_DTYPE_EXTERN_PTR;
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
assert(neu_flags_type_in_dtype(val->type) == type);
|
||||
if (neu_flags_type_in_dtype(val->type) == type) {
|
||||
if (val->val_data != NULL) {
|
||||
flags_type = neu_flags_type_in_dtype(val->type);
|
||||
assert((flags_type | NEU_DTYPE_OWNERED_PTR) == type);
|
||||
if ((flags_type | NEU_DTYPE_OWNERED_PTR) == type) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
neu_fixed_array_free(val->val_data);
|
||||
}
|
||||
val->val_data = neu_fixed_array_clone(array);
|
||||
val->type |= NEU_DTYPE_OWNERED_PTR;
|
||||
return 0;
|
||||
} else {
|
||||
log_error("value type: 0x%08x not match expect type: 0x%08x", val->type,
|
||||
@@ -779,15 +797,18 @@ int neu_dvalue_set_array(neu_data_val_t *val, neu_fixed_array_t *array)
|
||||
int neu_dvalue_set_vec(neu_data_val_t *val, vector_t *vec)
|
||||
{
|
||||
neu_dtype_e type;
|
||||
neu_dtype_e flags_type;
|
||||
|
||||
type = NEU_DTYPE_VEC | NEU_DTYPE_PTR | NEU_DTYPE_EXTERN_PTR;
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
assert(neu_flags_type_in_dtype(val->type) == type);
|
||||
if (neu_flags_type_in_dtype(val->type) == type) {
|
||||
if (val->val_data != NULL) {
|
||||
flags_type = neu_flags_type_in_dtype(val->type);
|
||||
assert((flags_type | NEU_DTYPE_OWNERED_PTR) == type);
|
||||
if ((flags_type | NEU_DTYPE_OWNERED_PTR) == type) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
vector_free(val->val_data);
|
||||
}
|
||||
val->val_data = vector_clone(vec);
|
||||
val->type |= NEU_DTYPE_OWNERED_PTR;
|
||||
return 0;
|
||||
} else {
|
||||
log_error("value type: 0x%08x not match expect type: 0x%08x", val->type,
|
||||
@@ -806,7 +827,7 @@ int neu_dvalue_set_ref_cstr(neu_data_val_t *val, char *cstr)
|
||||
val_type = val->type & ~NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val_type == type);
|
||||
if (val_type == type) {
|
||||
if (val->type & NEU_DTYPE_OWNERED_PTR) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
free(val->val_data);
|
||||
}
|
||||
val->val_data = cstr;
|
||||
@@ -827,7 +848,7 @@ int neu_dvalue_set_ref_string(neu_data_val_t *val, neu_string_t *string)
|
||||
val_type = val->type & ~NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val_type == type);
|
||||
if (val_type == type) {
|
||||
if (val->type & NEU_DTYPE_OWNERED_PTR) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
neu_string_free(val->val_data);
|
||||
}
|
||||
val->val_data = string;
|
||||
@@ -848,7 +869,7 @@ int neu_dvalue_set_ref_bytes(neu_data_val_t *val, neu_bytes_t *bytes)
|
||||
val_type = val->type & ~NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val_type == type);
|
||||
if (val_type == type) {
|
||||
if (val->type & NEU_DTYPE_OWNERED_PTR) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
neu_bytes_free(val->val_data);
|
||||
}
|
||||
val->val_data = bytes;
|
||||
@@ -869,11 +890,11 @@ int neu_dvalue_set_ref_array(neu_data_val_t *val, neu_fixed_array_t *array)
|
||||
flags_type = neu_flags_type_in_dtype(val->type);
|
||||
assert((flags_type & ~NEU_DTYPE_OWNERED_PTR) == type);
|
||||
if ((flags_type & ~NEU_DTYPE_OWNERED_PTR) == type) {
|
||||
if (val->type & NEU_DTYPE_OWNERED_PTR) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
neu_fixed_array_free(val->val_data);
|
||||
}
|
||||
val->val_data = array;
|
||||
val->type = neu_value_type_in_dtype(val->type) | type;
|
||||
val->type = type;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
@@ -890,11 +911,11 @@ int neu_dvalue_set_ref_vec(neu_data_val_t *val, vector_t *vec)
|
||||
flags_type = neu_flags_type_in_dtype(val->type);
|
||||
assert((flags_type & ~NEU_DTYPE_OWNERED_PTR) == type);
|
||||
if ((flags_type & ~NEU_DTYPE_OWNERED_PTR) == type) {
|
||||
if (val->type & NEU_DTYPE_OWNERED_PTR) {
|
||||
neu_fixed_array_free(val->val_data);
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
vector_free(val->val_data);
|
||||
}
|
||||
val->val_data = vec;
|
||||
val->type = neu_value_type_in_dtype(val->type) | type;
|
||||
val->type = type;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
@@ -945,6 +966,9 @@ int neu_dvalue_set_move_cstr(neu_data_val_t *val, char *cstr)
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val->type == type);
|
||||
if (val->type == type) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
free(val->val_data);
|
||||
}
|
||||
val->val_data = cstr;
|
||||
return 0;
|
||||
} else {
|
||||
@@ -960,6 +984,9 @@ int neu_dvalue_set_move_string(neu_data_val_t *val, neu_string_t *string)
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val->type == type);
|
||||
if (val->type == type) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
neu_string_free(val->val_data);
|
||||
}
|
||||
val->val_data = string;
|
||||
return 0;
|
||||
} else {
|
||||
@@ -975,6 +1002,9 @@ int neu_dvalue_set_move_bytes(neu_data_val_t *val, neu_bytes_t *bytes)
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val->type == type);
|
||||
if (val->type == type) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
neu_bytes_free(val->val_data);
|
||||
}
|
||||
val->val_data = bytes;
|
||||
return 0;
|
||||
} else {
|
||||
@@ -982,6 +1012,24 @@ int neu_dvalue_set_move_bytes(neu_data_val_t *val, neu_bytes_t *bytes)
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_set_move_data_val(neu_data_val_t *val, neu_data_val_t *data)
|
||||
{
|
||||
neu_dtype_e type;
|
||||
|
||||
type = NEU_DTYPE_DATA_VAL | NEU_DTYPE_PTR | NEU_DTYPE_EXTERN_PTR;
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
assert(val->type == type);
|
||||
if (val->type == type) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
neu_dvalue_free(val->val_data);
|
||||
}
|
||||
val->val_data = data;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_set_move_array(neu_data_val_t *val, neu_fixed_array_t *array)
|
||||
{
|
||||
neu_dtype_e type;
|
||||
@@ -990,6 +1038,9 @@ int neu_dvalue_set_move_array(neu_data_val_t *val, neu_fixed_array_t *array)
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
assert(neu_flags_type_in_dtype(val->type) == type);
|
||||
if (neu_flags_type_in_dtype(val->type) == type) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
neu_fixed_array_free(val->val_data);
|
||||
}
|
||||
val->val_data = array;
|
||||
return 0;
|
||||
} else {
|
||||
@@ -1005,6 +1056,9 @@ int neu_dvalue_set_move_vec(neu_data_val_t *val, vector_t *vec)
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
assert(neu_flags_type_in_dtype(val->type) == type);
|
||||
if (neu_flags_type_in_dtype(val->type) == type) {
|
||||
if (val->val_data != NULL && (val->type & NEU_DTYPE_OWNERED_PTR)) {
|
||||
vector_free(val->val_data);
|
||||
}
|
||||
val->val_data = vec;
|
||||
return 0;
|
||||
} else {
|
||||
@@ -1147,6 +1201,17 @@ int neu_dvalue_get_double(neu_data_val_t *val, double *p_f64)
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_get_errorcode(neu_data_val_t *val, int32_t *p_i32)
|
||||
{
|
||||
assert(val->type == NEU_DTYPE_ERRORCODE);
|
||||
if (val->type == NEU_DTYPE_ERRORCODE) {
|
||||
*p_i32 = val->val_int32;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_get_int_val(neu_data_val_t *val, neu_int_val_t *p_int_val)
|
||||
{
|
||||
neu_dtype_e val_type;
|
||||
@@ -1184,28 +1249,6 @@ int neu_dvalue_get_string_val(neu_data_val_t * val,
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_get_data_val(neu_data_val_t *val, void **p_data)
|
||||
{
|
||||
assert(val->type == NEU_DTYPE_DATA_VAL);
|
||||
if (val->type == NEU_DTYPE_DATA_VAL) {
|
||||
*p_data = val->val_data;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_get_errorcode(neu_data_val_t *val, int32_t *p_i32)
|
||||
{
|
||||
assert(val->type == NEU_DTYPE_ERRORCODE);
|
||||
if (val->type == NEU_DTYPE_ERRORCODE) {
|
||||
*p_i32 = val->val_int32;
|
||||
return 0;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_get_cstr(neu_data_val_t *val, char **p_cstr)
|
||||
{
|
||||
neu_dtype_e val_type;
|
||||
@@ -1470,6 +1513,27 @@ int neu_dvalue_get_move_bytes(neu_data_val_t *val, neu_bytes_t **p_bytes)
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_get_move_data_val(neu_data_val_t *val, neu_data_val_t **p_data)
|
||||
{
|
||||
neu_dtype_e val_type;
|
||||
neu_dtype_e type;
|
||||
|
||||
type = NEU_DTYPE_DATA_VAL | NEU_DTYPE_EXTERN_PTR;
|
||||
type |= NEU_DTYPE_OWNERED_PTR;
|
||||
|
||||
val_type = val->type & (~NEU_DTYPE_PTR_MASK);
|
||||
assert(val_type == type);
|
||||
if (val->type == type) {
|
||||
*p_data = (neu_data_val_t *) val->val_data;
|
||||
val->val_data = NULL;
|
||||
val->type &= ~NEU_DTYPE_OWNERED_PTR;
|
||||
return 0;
|
||||
} else {
|
||||
*p_data = NULL;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int neu_dvalue_get_move_array(neu_data_val_t *val, neu_fixed_array_t **p_array)
|
||||
{
|
||||
neu_dtype_e val_type;
|
||||
|
||||
@@ -57,6 +57,7 @@ int neu_parse_decode_update_plugin(char * buf,
|
||||
void neu_parse_decode_update_plugin_free(neu_parse_update_plugin_req_t *req);
|
||||
|
||||
typedef struct {
|
||||
uint32_t reserved;
|
||||
} neu_parse_get_plugins_req_t;
|
||||
|
||||
typedef struct {
|
||||
@@ -81,4 +82,4 @@ int neu_parse_encode_get_plugins(void *json_object, void *param);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
+4
-2
@@ -908,7 +908,9 @@ neu_fixed_array_t *neu_fixed_array_new(size_t length, size_t esize)
|
||||
/* shallow free */
|
||||
void neu_fixed_array_free(neu_fixed_array_t *array)
|
||||
{
|
||||
free(array);
|
||||
if (array != NULL) {
|
||||
free(array);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -956,4 +958,4 @@ int string_is_number(char *s)
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ TEST(DataValueTest, neu_dvalue_init_set_get_prim_val)
|
||||
/** test errorcode **/
|
||||
int32_t ret_error = 0;
|
||||
val = neu_dvalue_new(NEU_DTYPE_ERRORCODE);
|
||||
neu_dvalue_init_errorcode_val(val, -1);
|
||||
neu_dvalue_init_errorcode(val, -1);
|
||||
EXPECT_EQ(0, neu_dvalue_get_errorcode(val, &ret_error));
|
||||
EXPECT_EQ(NEU_DTYPE_ERRORCODE, neu_dvalue_get_type(val));
|
||||
EXPECT_EQ(-1, ret_error);
|
||||
|
||||
Reference in New Issue
Block a user