diff options
Diffstat (limited to 'vpp-api-test/vat/json_format.h')
-rw-r--r-- | vpp-api-test/vat/json_format.h | 254 |
1 files changed, 0 insertions, 254 deletions
diff --git a/vpp-api-test/vat/json_format.h b/vpp-api-test/vat/json_format.h deleted file mode 100644 index 154fb3df..00000000 --- a/vpp-api-test/vat/json_format.h +++ /dev/null @@ -1,254 +0,0 @@ -/* - *------------------------------------------------------------------ - * json_format.h - * - * Copyright (c) 2015 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *------------------------------------------------------------------ - */ - -#ifndef __JSON_FORMAT_H__ -#define __JSON_FORMAT_H__ - -#include <vppinfra/clib.h> -#include <vppinfra/format.h> -#include <netinet/ip.h> - -/* JSON value type */ -typedef enum -{ - VAT_JSON_NONE, - VAT_JSON_OBJECT, - VAT_JSON_ARRAY, - VAT_JSON_STRING, - VAT_JSON_REAL, - VAT_JSON_UINT, - VAT_JSON_INT, - VAT_JSON_IPV4, - VAT_JSON_IPV6, - VAT_JSON_MAX -} vat_json_val_type_t; - -typedef struct vat_json_node_s vat_json_node_t; -typedef struct vat_json_pair_s vat_json_pair_t; - -/* JSON object structure */ -struct vat_json_node_s -{ - vat_json_val_type_t type; - union - { - vat_json_pair_t *pairs; - vat_json_node_t *array; - u8 *string; - struct in_addr ip4; - struct in6_addr ip6; - u64 uint; - i64 sint; - f64 real; - }; -}; - -struct vat_json_pair_s -{ - const char *name; - vat_json_node_t value; -}; - -void vat_json_print (FILE * ofp, vat_json_node_t * node); -void vat_json_free (vat_json_node_t * node); - -static_always_inline void -vat_json_init_object (vat_json_node_t * json) -{ - json->type = VAT_JSON_OBJECT; - json->pairs = NULL; -} - -static_always_inline void -vat_json_init_array (vat_json_node_t * json) -{ - json->type = VAT_JSON_ARRAY; - json->array = NULL; -} - -static_always_inline void -vat_json_set_string (vat_json_node_t * json, u8 * str) -{ - json->type = VAT_JSON_STRING; - json->string = str; -} - -static_always_inline void -vat_json_set_string_copy (vat_json_node_t * json, const u8 * str) -{ - u8 *ns = NULL; - vec_validate (ns, strlen ((const char *) str)); - strcpy ((char *) ns, (const char *) str); - vec_add1 (ns, '\0'); - vat_json_set_string (json, ns); -} - -static_always_inline void -vat_json_set_int (vat_json_node_t * json, i64 num) -{ - json->type = VAT_JSON_INT; - json->sint = num; -} - -static_always_inline void -vat_json_set_uint (vat_json_node_t * json, u64 num) -{ - json->type = VAT_JSON_UINT; - json->uint = num; -} - -static_always_inline void -vat_json_set_real (vat_json_node_t * json, f64 real) -{ - json->type = VAT_JSON_REAL; - json->real = real; -} - -static_always_inline void -vat_json_set_ip4 (vat_json_node_t * json, struct in_addr ip4) -{ - json->type = VAT_JSON_IPV4; - json->ip4 = ip4; -} - -static_always_inline void -vat_json_set_ip6 (vat_json_node_t * json, struct in6_addr ip6) -{ - json->type = VAT_JSON_IPV6; - json->ip6 = ip6; -} - -static_always_inline vat_json_node_t * -vat_json_object_add (vat_json_node_t * json, const char *name) -{ - ASSERT (VAT_JSON_OBJECT == json->type); - uword pos = vec_len (json->pairs); - vec_validate (json->pairs, pos); - json->pairs[pos].name = name; - return &json->pairs[pos].value; -} - -static_always_inline vat_json_node_t * -vat_json_array_add (vat_json_node_t * json) -{ - ASSERT (VAT_JSON_ARRAY == json->type); - uword pos = vec_len (json->array); - vec_validate (json->array, pos); - return &json->array[pos]; -} - -static_always_inline vat_json_node_t * -vat_json_object_add_list (vat_json_node_t * json, const char *name) -{ - vat_json_node_t *array_node = vat_json_object_add (json, name); - vat_json_init_array (array_node); - return array_node; -} - -static_always_inline void -vat_json_object_add_string_copy (vat_json_node_t * json, - const char *name, u8 * str) -{ - vat_json_set_string_copy (vat_json_object_add (json, name), str); -} - -static_always_inline void -vat_json_object_add_uint (vat_json_node_t * json, - const char *name, u64 number) -{ - vat_json_set_uint (vat_json_object_add (json, name), number); -} - -static_always_inline void -vat_json_object_add_int (vat_json_node_t * json, const char *name, i64 number) -{ - vat_json_set_int (vat_json_object_add (json, name), number); -} - -static_always_inline void -vat_json_object_add_real (vat_json_node_t * json, const char *name, f64 real) -{ - vat_json_set_real (vat_json_object_add (json, name), real); -} - -static_always_inline void -vat_json_object_add_ip4 (vat_json_node_t * json, - const char *name, struct in_addr ip4) -{ - vat_json_set_ip4 (vat_json_object_add (json, name), ip4); -} - -static_always_inline void -vat_json_object_add_ip6 (vat_json_node_t * json, - const char *name, struct in6_addr ip6) -{ - vat_json_set_ip6 (vat_json_object_add (json, name), ip6); -} - -static_always_inline void -vat_json_array_add_int (vat_json_node_t * json, i64 number) -{ - vat_json_set_int (vat_json_array_add (json), number); -} - -static_always_inline void -vat_json_array_add_uint (vat_json_node_t * json, u64 number) -{ - vat_json_set_uint (vat_json_array_add (json), number); -} - -static_always_inline void -vat_json_object_add_bytes (vat_json_node_t * json, - const char *name, u8 * array, uword size) -{ - ASSERT (VAT_JSON_OBJECT == json->type); - vat_json_node_t *json_array = vat_json_object_add (json, name); - vat_json_init_array (json_array); - int i; - for (i = 0; i < size; i++) - { - vat_json_array_add_uint (json_array, array[i]); - } -} - -static_always_inline vat_json_node_t * -vat_json_object_get_element (vat_json_node_t * json, const char *name) -{ - int i = 0; - - ASSERT (VAT_JSON_OBJECT == json->type); - for (i = 0; i < vec_len (json->pairs); i++) - { - if (0 == strcmp (json->pairs[i].name, name)) - { - return &json->pairs[i].value; - } - } - return NULL; -} - -#endif /* __JSON_FORMAT_H__ */ - -/* - * fd.io coding-style-patch-verification: ON - * - * Local Variables: - * eval: (c-set-style "gnu") - * End: - */ |