diff options
Diffstat (limited to 'vlib/vlib/parse.h')
-rw-r--r-- | vlib/vlib/parse.h | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/vlib/vlib/parse.h b/vlib/vlib/parse.h deleted file mode 100644 index 036e744723b..00000000000 --- a/vlib/vlib/parse.h +++ /dev/null @@ -1,221 +0,0 @@ -/* - * 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 included_vlib_parse_h -#define included_vlib_parse_h - -#include <vlib/vlib.h> -#include <vlib/lex.h> -#include <vppinfra/mhash.h> - -typedef struct -{ - /* Word aligned value. */ - union - { - u8 as_u8[32 - 1 * sizeof (u16)]; - void *as_pointer; - uword as_uword; - word as_word; - u64 as_u64; - } value; - - /* 16 bit type at end so that 30 bytes of value are aligned. */ - u16 type; -} __attribute ((packed)) - vlib_parse_value_t; - -/* Instance of a type. */ - typedef struct - { - u32 - type; - - u32 - origin; - - u32 - help_index; - - union - { - void * - as_pointer; - uword - as_uword; - } value; - } vlib_parse_item_t; - - typedef struct - { - /* Index of item for this node. */ - u32 - item; - - /* Graph index of peer (sibling) node (linked list of peers). */ - u32 - peer; - - /* Graph index of deeper (child) node (linked list of children). */ - u32 - deeper; - } vlib_parse_graph_t; - -#define foreach_parse_match_type \ - _(MATCH_DONE) \ - _(MATCH_RULE) \ - _(MATCH_FAIL) \ - _(MATCH_FULL) \ - _(MATCH_VALUE) \ - _(MATCH_PARTIAL) \ - _(MATCH_AMBIGUOUS) \ - _(MATCH_EVAL_FAIL) - - typedef enum - { -#define _(a) VLIB_PARSE_##a, - foreach_parse_match_type -#undef _ - } vlib_parse_match_t; - - struct vlib_parse_type; - struct vlib_parse_main; - - typedef - vlib_parse_match_t (vlib_parse_match_function_t) - (struct vlib_parse_main *, - struct vlib_parse_type *, vlib_lex_token_t *, vlib_parse_value_t *); - typedef void (vlib_parse_value_cleanup_function_t) (vlib_parse_value_t - *); - - typedef struct vlib_parse_type - { - /* Type name. */ - char * - name; - - vlib_parse_match_function_t * - match_function; - - vlib_parse_value_cleanup_function_t * - value_cleanup_function; - - format_function_t * - format_value; - - u32 - rule_index; - } vlib_parse_type_t; - - typedef struct - { - char * - initializer; - void * - eof_match; - int - rule_length; - } parse_registration_t; - - typedef struct vlib_parse_main - { - /* (type, origin, help, value) tuples */ - vlib_parse_item_t * - parse_items; - mhash_t - parse_item_hash; - - /* (item, peer, deeper) tuples */ - vlib_parse_graph_t * - parse_graph; - u32 - root_index; - - u8 * - register_input; - - /* parser types */ - vlib_parse_type_t * - parse_types; - uword * - parse_type_by_name_hash; - - /* Vector of MATCH_VALUEs */ - vlib_parse_value_t * - parse_value; - u32 * - match_items; - - /* Parse registrations */ - parse_registration_t ** - parse_registrations; - - /* Token vector */ - vlib_lex_token_t * - tokens; - u32 - current_token_index; - - vlib_lex_main_t * - lex_main; - vlib_main_t * - vlib_main; - } vlib_parse_main_t; - - vlib_parse_main_t - vlib_parse_main; - - typedef - vlib_parse_match_t (vlib_parse_eval_function_t) - (vlib_parse_main_t *, vlib_parse_item_t *, vlib_parse_value_t *); - -vlib_parse_match_t -vlib_parse_eval (u8 * input); - - format_function_t format_vlib_parse_value; - -/* FIXME need these to be global? */ - vlib_parse_match_function_t rule_match, eof_match, word_match, - number_match; - -#define _PARSE_REGISTRATION_DATA(x) \ -VLIB_ELF_SECTION_DATA(x##_registration,parse_registration_t,parse_registrations) - -#define PARSE_INIT(x, s, e) \ -static _PARSE_REGISTRATION_DATA(x) = { \ - .initializer = s, \ - .eof_match = e, \ -}; - -#define _PARSE_TYPE_REGISTRATION_DATA(x) \ -VLIB_ELF_SECTION_DATA(x##_type_registration,vlib_parse_type_t, \ -parse_type_registrations) - -#define PARSE_TYPE_INIT(n, m, c, f) \ -static _PARSE_TYPE_REGISTRATION_DATA(n) = { \ - .name = #n, \ - .match_function = m, \ - .value_cleanup_function = c, \ - .format_value = f, \ -}; - -#endif /* included_vlib_parse_h */ - -/* - * fd.io coding-style-patch-verification: ON - * - * Local Variables: - * eval: (c-set-style "gnu") - * End: - */ |