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