diff options
Diffstat (limited to 'src/vlib/parse_builtin.c')
-rw-r--r-- | src/vlib/parse_builtin.c | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/src/vlib/parse_builtin.c b/src/vlib/parse_builtin.c deleted file mode 100644 index 0ce716b539e..00000000000 --- a/src/vlib/parse_builtin.c +++ /dev/null @@ -1,150 +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. - */ -#include <vlib/parse.h> - -always_inline void * -parse_last_match_value (vlib_parse_main_t * pm) -{ - vlib_parse_item_t *i; - i = pool_elt_at_index (pm->parse_items, - vec_elt (pm->match_items, - vec_len (pm->match_items) - 1)); - return i->value.as_pointer; -} - -vlib_parse_match_t -eof_match (vlib_parse_main_t * pm, vlib_parse_type_t * type, - vlib_lex_token_t * t, vlib_parse_value_t * valuep) -{ - return t->token == - VLIB_LEX_eof ? VLIB_PARSE_MATCH_DONE : VLIB_PARSE_MATCH_FAIL; -} - -PARSE_TYPE_INIT (eof, eof_match, 0 /* cleanup value */ , - 0 /* format value */ ); - -vlib_parse_match_t -rule_eof_match (vlib_parse_main_t * pm, vlib_parse_type_t * type, - vlib_lex_token_t * t, vlib_parse_value_t * valuep) -{ - vlib_parse_match_function_t *fp = parse_last_match_value (pm); - pm->current_token_index--; - return fp ? fp (pm, type, t, valuep) : VLIB_PARSE_MATCH_RULE; -} - -PARSE_TYPE_INIT (rule_eof, rule_eof_match, 0, 0); - -vlib_parse_match_t -word_match (vlib_parse_main_t * pm, vlib_parse_type_t * type, - vlib_lex_token_t * t, vlib_parse_value_t * valuep) -{ - u8 *tv, *iv; - int i; - - if (t->token != VLIB_LEX_word) - return VLIB_PARSE_MATCH_FAIL; - - tv = t->value.as_pointer; - iv = parse_last_match_value (pm); - - for (i = 0; tv[i]; i++) - { - if (tv[i] != iv[i]) - return VLIB_PARSE_MATCH_FAIL; - } - - return iv[i] == 0 ? VLIB_PARSE_MATCH_FULL : VLIB_PARSE_MATCH_PARTIAL; -} - -PARSE_TYPE_INIT (word, word_match, 0 /* clnup value */ , - 0 /* format value */ ); - -vlib_parse_match_t -number_match (vlib_parse_main_t * pm, vlib_parse_type_t * type, - vlib_lex_token_t * t, vlib_parse_value_t * valuep) -{ - if (t->token == VLIB_LEX_number) - { - valuep->value.as_uword = t->value.as_uword; - return VLIB_PARSE_MATCH_VALUE; - } - return VLIB_PARSE_MATCH_FAIL; -} - -static u8 * -format_value_number (u8 * s, va_list * args) -{ - vlib_parse_value_t *v = va_arg (*args, vlib_parse_value_t *); - uword a = v->value.as_uword; - - if (BITS (uword) == 64) - s = format (s, "%lld(0x%llx)", a, a); - else - s = format (s, "%ld(0x%lx)", a, a); - return s; -} - -PARSE_TYPE_INIT (number, number_match, 0 /* cln value */ , - format_value_number /* fmt value */ ); - - -#define foreach_vanilla_lex_match_function \ - _(plus) \ - _(minus) \ - _(star) \ - _(slash) \ - _(lpar) \ - _(rpar) - -#define LEX_MATCH_DEBUG 0 - -#define _(name) \ -vlib_parse_match_t name##_match (vlib_parse_main_t *pm, \ - vlib_parse_type_t *type, \ - vlib_lex_token_t *t, \ - vlib_parse_value_t *valuep) \ -{ \ - if (LEX_MATCH_DEBUG > 0) \ - clib_warning ("against %U returns %s", \ - format_vlib_lex_token, pm->lex_main, t, \ - (t->token == VLIB_LEX_##name) \ - ? "VLIB_PARSE_MATCH_FULL" : \ - "VLIB_PARSE_MATCH_FAIL"); \ - if (t->token == VLIB_LEX_##name) \ - return VLIB_PARSE_MATCH_FULL; \ - return VLIB_PARSE_MATCH_FAIL; \ -} \ - \ -PARSE_TYPE_INIT (name, name##_match, 0 /* cln value */, \ - 0 /* fmt val */); - -foreach_vanilla_lex_match_function -#undef _ -/* So we're linked in. */ -static clib_error_t * -parse_builtin_init (vlib_main_t * vm) -{ - return 0; -} - -VLIB_INIT_FUNCTION (parse_builtin_init); - -/* - * fd.io coding-style-patch-verification: ON - * - * Local Variables: - * eval: (c-set-style "gnu") - * End: - */ |