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>