diff options
Diffstat (limited to 'vpp-api-test/vat/json_format.c')
-rw-r--r-- | vpp-api-test/vat/json_format.c | 339 |
1 files changed, 191 insertions, 148 deletions
diff --git a/vpp-api-test/vat/json_format.c b/vpp-api-test/vat/json_format.c index 70447ed916c..6f316d972eb 100644 --- a/vpp-api-test/vat/json_format.c +++ b/vpp-api-test/vat/json_format.c @@ -24,22 +24,25 @@ #define VAT_TAB_WIDTH 2 -typedef struct vat_print_ctx_s { - FILE *ofp; - u32 indent; +typedef struct vat_print_ctx_s +{ + FILE *ofp; + u32 indent; } vat_print_ctx_t; /* Format an IP4 address. */ -static u8 * vat_json_format_ip4_address (u8 * s, va_list * args) +static u8 * +vat_json_format_ip4_address (u8 * s, va_list * args) { - u8 * a = va_arg (*args, u8 *); + u8 *a = va_arg (*args, u8 *); return format (s, "%d.%d.%d.%d", a[0], a[1], a[2], a[3]); } /* Format an IP6 address. */ -static u8 * vat_json_format_ip6_address (u8 * s, va_list * args) +static u8 * +vat_json_format_ip6_address (u8 * s, va_list * args) { - ip6_address_t * a = va_arg (*args, ip6_address_t *); + ip6_address_t *a = va_arg (*args, ip6_address_t *); u32 i, i_max_n_zero, max_n_zeros, i_first_zero, n_zeros, last_double_colon; i_max_n_zero = ARRAY_LEN (a->as_u16); @@ -50,77 +53,79 @@ static u8 * vat_json_format_ip6_address (u8 * s, va_list * args) { u32 is_zero = a->as_u16[i] == 0; if (is_zero && i_first_zero >= ARRAY_LEN (a->as_u16)) - { - i_first_zero = i; - n_zeros = 0; - } + { + i_first_zero = i; + n_zeros = 0; + } n_zeros += is_zero; - if ((! is_zero && n_zeros > max_n_zeros) - || (i + 1 >= ARRAY_LEN (a->as_u16) && n_zeros > max_n_zeros)) - { - i_max_n_zero = i_first_zero; - max_n_zeros = n_zeros; - i_first_zero = ARRAY_LEN (a->as_u16); - n_zeros = 0; - } + if ((!is_zero && n_zeros > max_n_zeros) + || (i + 1 >= ARRAY_LEN (a->as_u16) && n_zeros > max_n_zeros)) + { + i_max_n_zero = i_first_zero; + max_n_zeros = n_zeros; + i_first_zero = ARRAY_LEN (a->as_u16); + n_zeros = 0; + } } last_double_colon = 0; for (i = 0; i < ARRAY_LEN (a->as_u16); i++) { if (i == i_max_n_zero && max_n_zeros > 1) - { - s = format (s, "::"); - i += max_n_zeros - 1; - last_double_colon = 1; - } + { + s = format (s, "::"); + i += max_n_zeros - 1; + last_double_colon = 1; + } else - { - s = format (s, "%s%x", - (last_double_colon || i == 0) ? "" : ":", - clib_net_to_host_u16 (a->as_u16[i])); - last_double_colon = 0; - } + { + s = format (s, "%s%x", + (last_double_colon || i == 0) ? "" : ":", + clib_net_to_host_u16 (a->as_u16[i])); + last_double_colon = 0; + } } return s; } static void -vat_json_indent_print (vat_print_ctx_t *ctx) +vat_json_indent_print (vat_print_ctx_t * ctx) { - int i; - for (i=0; i<ctx->indent * VAT_TAB_WIDTH; i++) { - fformat(ctx->ofp, " "); + int i; + for (i = 0; i < ctx->indent * VAT_TAB_WIDTH; i++) + { + fformat (ctx->ofp, " "); } } static void -vat_json_indent_line (vat_print_ctx_t * ctx, char * fmt, ...) +vat_json_indent_line (vat_print_ctx_t * ctx, char *fmt, ...) { - va_list va; + va_list va; - vat_json_indent_print(ctx); - va_start(va, fmt); - va_fformat(ctx->ofp, fmt, &va); - va_end(va); + vat_json_indent_print (ctx); + va_start (va, fmt); + va_fformat (ctx->ofp, fmt, &va); + va_end (va); } static u8 is_num_only (vat_json_node_t * p) { - vat_json_node_t * elem; - vec_foreach(elem, p) { - if (VAT_JSON_INT != elem->type && - VAT_JSON_UINT != elem->type) { - return 0; - } - } - return 1; + vat_json_node_t *elem; + vec_foreach (elem, p) + { + if (VAT_JSON_INT != elem->type && VAT_JSON_UINT != elem->type) + { + return 0; + } + } + return 1; } static void -vat_json_print_internal (vat_print_ctx_t *ctx, vat_json_node_t *node) +vat_json_print_internal (vat_print_ctx_t * ctx, vat_json_node_t * node) { #define P(fmt,...) fformat(ctx->ofp, fmt, ##__VA_ARGS__) #define PL(fmt,...) fformat(ctx->ofp, fmt"\n", ##__VA_ARGS__) @@ -129,85 +134,106 @@ vat_json_print_internal (vat_print_ctx_t *ctx, vat_json_node_t *node) #define INCR (ctx->indent++) #define DECR (ctx->indent--) - vat_json_pair_t *pair; - u32 i, count; - vat_json_node_t *elem; - u8 num_only = 0; + vat_json_pair_t *pair; + u32 i, count; + vat_json_node_t *elem; + u8 num_only = 0; - if (!node) { - return; + if (!node) + { + return; } - switch (node->type) { + switch (node->type) + { case VAT_JSON_OBJECT: - count = vec_len(node->pairs); - if (count >= 1) { - PL("{"); - INCR; - for (i=0; i<count; i++) { - pair = &node->pairs[i]; - PP("\"%s\": ", pair->name); - vat_json_print_internal(ctx, &pair->value); - if (i < count - 1) { - P(","); - } - PL(); - } - DECR; - PP("}"); - } else { P("{}"); } - break; + count = vec_len (node->pairs); + if (count >= 1) + { + PL ("{"); + INCR; + for (i = 0; i < count; i++) + { + pair = &node->pairs[i]; + PP ("\"%s\": ", pair->name); + vat_json_print_internal (ctx, &pair->value); + if (i < count - 1) + { + P (","); + } + PL (); + } + DECR; + PP ("}"); + } + else + { + P ("{}"); + } + break; case VAT_JSON_ARRAY: - num_only = is_num_only(node->array); - count = vec_len(node->array); - if (count >= 1) { - if (num_only) - P("["); - else - PL("[ "); - INCR; - for (i=0; i<count; i++) { - elem = &node->array[i]; - if (!num_only) { - vat_json_indent_print(ctx); - } - vat_json_print_internal(ctx, elem); - if (i < count - 1) { - if (num_only) { - P(", "); - } else { - P(","); - } - } - if (!num_only) PL(); - } - DECR; - if (!num_only) - PP("]"); - else - P("]"); - } else { P("[]"); } - break; + num_only = is_num_only (node->array); + count = vec_len (node->array); + if (count >= 1) + { + if (num_only) + P ("["); + else + PL ("[ "); + INCR; + for (i = 0; i < count; i++) + { + elem = &node->array[i]; + if (!num_only) + { + vat_json_indent_print (ctx); + } + vat_json_print_internal (ctx, elem); + if (i < count - 1) + { + if (num_only) + { + P (", "); + } + else + { + P (","); + } + } + if (!num_only) + PL (); + } + DECR; + if (!num_only) + PP ("]"); + else + P ("]"); + } + else + { + P ("[]"); + } + break; case VAT_JSON_INT: - P("%d", node->sint); - break; + P ("%d", node->sint); + break; case VAT_JSON_UINT: - P("%"PRIu64, node->uint); - break; + P ("%" PRIu64, node->uint); + break; case VAT_JSON_REAL: - P("%f", node->real); - break; + P ("%f", node->real); + break; case VAT_JSON_STRING: - P("\"%s\"", node->string); - break; + P ("\"%s\"", node->string); + break; case VAT_JSON_IPV4: - P("\"%U\"", vat_json_format_ip4_address, &node->ip4); - break; + P ("\"%U\"", vat_json_format_ip4_address, &node->ip4); + break; case VAT_JSON_IPV6: - P("\"%U\"", vat_json_format_ip6_address, &node->ip6); - break; + P ("\"%U\"", vat_json_format_ip6_address, &node->ip6); + break; default: - break; + break; } #undef PPL #undef PP @@ -215,47 +241,64 @@ vat_json_print_internal (vat_print_ctx_t *ctx, vat_json_node_t *node) #undef P } -void vat_json_print(FILE *ofp, vat_json_node_t *node) +void +vat_json_print (FILE * ofp, vat_json_node_t * node) { - vat_print_ctx_t ctx; - memset(&ctx, 0, sizeof ctx); - ctx.indent = 0; - ctx.ofp = ofp; - fformat(ofp, "\n"); - vat_json_print_internal(&ctx, node); - fformat(ofp, "\n"); + vat_print_ctx_t ctx; + memset (&ctx, 0, sizeof ctx); + ctx.indent = 0; + ctx.ofp = ofp; + fformat (ofp, "\n"); + vat_json_print_internal (&ctx, node); + fformat (ofp, "\n"); } -void vat_json_free (vat_json_node_t *node) +void +vat_json_free (vat_json_node_t * node) { - int i = 0; + int i = 0; - if (NULL == node) { - return; + if (NULL == node) + { + return; } - switch (node->type) { + switch (node->type) + { case VAT_JSON_OBJECT: - for (i = 0; i < vec_len(node->pairs); i++) { - vat_json_free(&node->pairs[i].value); - } - if (NULL != node->pairs) { - vec_free(node->pairs); - } - break; + for (i = 0; i < vec_len (node->pairs); i++) + { + vat_json_free (&node->pairs[i].value); + } + if (NULL != node->pairs) + { + vec_free (node->pairs); + } + break; case VAT_JSON_ARRAY: - for (i = 0; i < vec_len(node->array); i++) { - vat_json_free(&node->array[i]); - } - if (NULL != node->array) { - vec_free(node->array); - } - break; + for (i = 0; i < vec_len (node->array); i++) + { + vat_json_free (&node->array[i]); + } + if (NULL != node->array) + { + vec_free (node->array); + } + break; case VAT_JSON_STRING: - if (NULL != node->string) { - vec_free(node->string); - } - break; + if (NULL != node->string) + { + vec_free (node->string); + } + break; default: - break; + break; } } + +/* + * fd.io coding-style-patch-verification: ON + * + * Local Variables: + * eval: (c-set-style "gnu") + * End: + */ |