aboutsummaryrefslogtreecommitdiffstats
path: root/vlib/vlib/parse.h
diff options
context:
space:
mode:
Diffstat (limited to 'vlib/vlib/parse.h')
-rw-r--r--vlib/vlib/parse.h252
1 files changed, 151 insertions, 101 deletions
diff --git a/vlib/vlib/parse.h b/vlib/vlib/parse.h
index 5b9acebf774..036e744723b 100644
--- a/vlib/vlib/parse.h
+++ b/vlib/vlib/parse.h
@@ -19,11 +19,13 @@
#include <vlib/lex.h>
#include <vppinfra/mhash.h>
-typedef struct {
+typedef struct
+{
/* Word aligned value. */
- union {
+ union
+ {
u8 as_u8[32 - 1 * sizeof (u16)];
- void * as_pointer;
+ void *as_pointer;
uword as_uword;
word as_word;
u64 as_u64;
@@ -31,32 +33,44 @@ typedef struct {
/* 16 bit type at end so that 30 bytes of value are aligned. */
u16 type;
-} __attribute ((packed)) vlib_parse_value_t;
+} __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;
+ 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) \
@@ -68,84 +82,112 @@ typedef struct {
_(MATCH_AMBIGUOUS) \
_(MATCH_EVAL_FAIL)
-typedef enum {
+ typedef enum
+ {
#define _(a) VLIB_PARSE_##a,
- foreach_parse_match_type
+ 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;
+ } 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;
+ 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)
@@ -169,3 +211,11 @@ static _PARSE_TYPE_REGISTRATION_DATA(n) = { \
};
#endif /* included_vlib_parse_h */
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */