Annotation of embedaddon/ntp/sntp/libopts/value-type.c, revision 1.1.1.1
1.1 misho 1: /* ANSI-C code produced by gperf version 3.0.4 */
2:
3:
4: #if 0 /* gperf build options: */
5: // %struct-type
6: // %language=ANSI-C
7: // %includes
8: // %global-table
9: // %omit-struct-type
10: // %readonly-tables
11: // %compare-strncmp
12: //
13: // %define slot-name vtp_name
14: // %define hash-function-name value_type_hash
15: // %define lookup-function-name find_value_type_name
16: // %define word-array-name value_type_table
17: // %define initializer-suffix ,VTP_COUNT_KWD
18: #endif /* gperf build options: */
19:
20: #include "value-type.h"
21:
22: typedef struct {
23: char const * vtp_name;
24: value_type_enum_t vtp_id;
25: } value_type_map_t;
26: #include <string.h>
27:
28: /* maximum key range = 20, duplicates = 0 */
29:
30: #ifdef __GNUC__
31: #else
32: #ifdef __cplusplus
33: #endif
34: #endif
35: inline static unsigned int
36: value_type_hash (register const char *str, register unsigned int len)
37: {
38: static const unsigned char asso_values[] =
39: {
40: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
41: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
42: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
43: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
44: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
45: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
46: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
47: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
48: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
49: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
50: 23, 10, 23, 23, 23, 23, 23, 23, 23, 23,
51: 23, 5, 23, 23, 5, 0, 0, 23, 15, 23,
52: 23, 10, 23, 23, 23, 23, 23, 23, 23, 23,
53: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
54: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
55: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
56: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
57: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
58: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
59: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
60: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
61: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
62: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
63: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
64: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
65: 23, 23, 23, 23, 23, 23
66: };
67: return len + asso_values[(unsigned char)str[2]];
68: }
69:
70: static const value_type_map_t value_type_table[] =
71: {
72: {"",VTP_COUNT_KWD}, {"",VTP_COUNT_KWD},
73: {"",VTP_COUNT_KWD},
74: {"set", VTP_KWD_SET},
75: {"",VTP_COUNT_KWD}, {"",VTP_COUNT_KWD},
76: {"nested", VTP_KWD_NESTED},
77: {"integer", VTP_KWD_INTEGER},
78: {"",VTP_COUNT_KWD},
79: {"bool", VTP_KWD_BOOL},
80: {"",VTP_COUNT_KWD},
81: {"string", VTP_KWD_STRING},
82: {"boolean", VTP_KWD_BOOLEAN},
83: {"",VTP_COUNT_KWD},
84: {"set-membership", VTP_KWD_SET_MEMBERSHIP},
85: {"",VTP_COUNT_KWD}, {"",VTP_COUNT_KWD},
86: {"keyword", VTP_KWD_KEYWORD},
87: {"",VTP_COUNT_KWD},
88: {"hierarchy", VTP_KWD_HIERARCHY},
89: {"",VTP_COUNT_KWD}, {"",VTP_COUNT_KWD},
90: {"invalid", VTP_KWD_INVALID}
91: };
92:
93: #ifdef __GNUC__
94: #if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
95: __attribute__ ((__gnu_inline__))
96: #endif
97: #endif
98: static inline const value_type_map_t *
99: find_value_type_name (register const char *str, register unsigned int len)
100: {
101: if (len <= 14 && len >= 3)
102: {
103: register int key = value_type_hash (str, len);
104:
105: if (key <= 22 && key >= 0)
106: {
107: register const char *s = value_type_table[key].vtp_name;
108:
109: if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
110: return &value_type_table[key];
111: }
112: }
113: return 0;
114: }
115:
116:
117: value_type_enum_t
118: find_value_type_id(char const * str, unsigned int len)
119: {
120: const value_type_map_t * p =
121: find_value_type_name(str, len);
122: return (p == 0) ? VTP_KWD_INVALID : p->vtp_id;
123: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>