File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / sntp / libopts / xat-attribute.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:08:38 2012 UTC (12 years, 7 months ago) by misho
Branches: ntp, MAIN
CVS tags: v4_2_6p5p0, v4_2_6p5, HEAD
ntp 4.2.6p5

    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               xat_name
   14: // %define hash-function-name      xat_attribute_hash
   15: // %define lookup-function-name    find_xat_attribute_name
   16: // %define word-array-name         xat_attribute_table
   17: // %define initializer-suffix      ,XAT_COUNT_KWD
   18: #endif /* gperf build options: */
   19: 
   20: #include "xat-attribute.h"
   21: 
   22: typedef struct {
   23:     char const *    xat_name;
   24:     xat_attribute_enum_t   xat_id;
   25: } xat_attribute_map_t;
   26: #include <string.h>
   27: 
   28: /* maximum key range = 9, duplicates = 0 */
   29: 
   30: #ifdef __GNUC__
   31: #else
   32: #ifdef __cplusplus
   33: #endif
   34: #endif
   35: inline static unsigned int
   36: xat_attribute_hash (register const char *str, register unsigned int len)
   37: {
   38:   static const unsigned char asso_values[] =
   39:     {
   40:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   41:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   42:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   43:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   44:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   45:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   46:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   47:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   48:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   49:       13, 13, 13, 13, 13, 13, 13, 13, 13,  0,
   50:       13, 13, 13, 13, 13,  5, 13,  5, 13,  0,
   51:       13, 13, 13, 13, 13, 13,  0,  0, 13,  0,
   52:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   53:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   54:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   55:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   56:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   57:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   58:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   59:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   60:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   61:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   62:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   63:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   64:       13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
   65:       13, 13, 13, 13, 13, 13
   66:     };
   67:   return len + asso_values[(unsigned char)str[0]];
   68: }
   69: 
   70: static const xat_attribute_map_t xat_attribute_table[] =
   71:   {
   72:     {"",XAT_COUNT_KWD}, {"",XAT_COUNT_KWD},
   73:     {"",XAT_COUNT_KWD}, {"",XAT_COUNT_KWD},
   74:     {"type",            XAT_KWD_TYPE},
   75:     {"words",           XAT_KWD_WORDS},
   76:     {"cooked",          XAT_KWD_COOKED},
   77:     {"members",         XAT_KWD_MEMBERS},
   78:     {"uncooked",        XAT_KWD_UNCOOKED},
   79:     {"keep",            XAT_KWD_KEEP},
   80:     {"",XAT_COUNT_KWD}, {"",XAT_COUNT_KWD},
   81:     {"invalid",         XAT_KWD_INVALID}
   82:   };
   83: 
   84: #ifdef __GNUC__
   85: #if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
   86: __attribute__ ((__gnu_inline__))
   87: #endif
   88: #endif
   89: static inline const xat_attribute_map_t *
   90: find_xat_attribute_name (register const char *str, register unsigned int len)
   91: {
   92:   if (len <= 8 && len >= 4)
   93:     {
   94:       register int key = xat_attribute_hash (str, len);
   95: 
   96:       if (key <= 12 && key >= 0)
   97:         {
   98:           register const char *s = xat_attribute_table[key].xat_name;
   99: 
  100:           if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
  101:             return &xat_attribute_table[key];
  102:         }
  103:     }
  104:   return 0;
  105: }
  106: 
  107: 
  108: xat_attribute_enum_t
  109: find_xat_attribute_id(char const * str, unsigned int len)
  110: {
  111:     const xat_attribute_map_t * p =
  112:         find_xat_attribute_name(str, len);
  113:     return (p == 0) ? XAT_KWD_INVALID : p->xat_id;
  114: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>