Annotation of embedaddon/ntp/sntp/libopts/xat-attribute.c, revision 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 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>