support array string

This commit is contained in:
xiang.zhou
2024-12-19 09:58:37 +08:00
parent 2499657f8d
commit bb9d5a71dc
8 changed files with 184 additions and 6 deletions
+17
View File
@@ -893,6 +893,11 @@ static inline void neu_trans_data_free(neu_reqresp_trans_data_t *data)
{
if (tag_value->value.type == NEU_TYPE_PTR) {
free(tag_value->value.value.ptr.ptr);
} else if (tag_value->value.type == NEU_TYPE_ARRAY_STRING) {
for (size_t i = 0; i < tag_value->value.value.strs.length;
++i) {
free(tag_value->value.value.strs.strs[i]);
}
}
}
utarray_free(data->tags);
@@ -1087,6 +1092,12 @@ static inline void neu_tag_value_to_json(neu_resp_tag_value_meta_t *tag_value,
tag_json->value.val_array_double.f64s =
tag_value->value.value.f64s.f64s;
break;
case NEU_TYPE_ARRAY_STRING:
tag_json->t = NEU_JSON_ARRAY_STR;
tag_json->value.val_array_str.length =
tag_value->value.value.strs.length;
tag_json->value.val_array_str.p_strs = tag_value->value.value.strs.strs;
break;
case NEU_TYPE_CUSTOM:
tag_json->t = NEU_JSON_OBJECT;
tag_json->value.val_object = tag_value->value.value.json;
@@ -1289,6 +1300,12 @@ neu_tag_value_to_json_paginate(neu_resp_tag_value_meta_paginate_t *tag_value,
tag_json->value.val_array_double.f64s =
tag_value->value.value.f64s.f64s;
break;
case NEU_TYPE_ARRAY_STRING:
tag_json->t = NEU_JSON_ARRAY_STR;
tag_json->value.val_array_str.length =
tag_value->value.value.strs.length;
tag_json->value.val_array_str.p_strs = tag_value->value.value.strs.strs;
break;
case NEU_TYPE_CUSTOM:
tag_json->t = NEU_JSON_OBJECT;
tag_json->value.val_object = tag_value->value.value.json;
+9
View File
@@ -67,6 +67,7 @@ typedef enum {
NEU_TYPE_ARRAY_FLOAT = 31,
NEU_TYPE_ARRAY_DOUBLE = 32,
NEU_TYPE_ARRAY_BOOL = 33,
NEU_TYPE_ARRAY_STRING = 34,
NEU_TYPE_CUSTOM = 40,
} neu_type_e;
@@ -139,6 +140,8 @@ inline static const char *neu_type_string(neu_type_e type)
return "NEU_TYPE_ARRAY_FLOAT";
case NEU_TYPE_ARRAY_BOOL:
return "NEU_TYPE_ARRAY_BOOL";
case NEU_TYPE_ARRAY_STRING:
return "NEU_TYPE_ARRAY_STRING";
case NEU_TYPE_CUSTOM:
return "NEU_TYPE_CUSTOM";
}
@@ -214,6 +217,11 @@ typedef struct {
uint8_t length;
} neu_value_array_bool_t;
typedef struct {
char * strs[NEU_VALUE_SIZE];
uint8_t length;
} neu_value_array_string_t;
typedef union {
bool boolean;
int8_t i8;
@@ -241,6 +249,7 @@ typedef union {
neu_value_array_float_t f32s;
neu_value_array_double_t f64s;
neu_value_array_bool_t bools;
neu_value_array_string_t strs;
} neu_value_u;
static inline char *neu_value_str(neu_type_e type, neu_value_u value)