htmlattrs.c   [plain text]


/* ANSI-C code produced by gperf version 2.7.2 */
/* Command-line: gperf -c -a -L ANSI-C -D -E -C -o -t -k '*' -NfindAttr -Hhash_attr -Wwordlist_attr -s 2 htmlattrs.gperf  */
/* This file is automatically generated from
#htmlattrs.in by makeattrs, do not edit */
/* Copyright 1999 Lars Knoll */
#include "htmlattrs.h"
struct attrs {
    const char *name;
    int id;
};
/* maximum key range = 797, duplicates = 1 */

#ifdef __GNUC__
__inline
#else
#ifdef __cplusplus
inline
#endif
#endif
static unsigned int
hash_attr (register const char *str, register unsigned int len)
{
  static const unsigned short asso_values[] =
    {
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801,   5, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801,  15, 130,  10,
      260,   0,  45, 115,  25,  45,   0, 150,   0,  35,
        0,   0,   0,   0,  30,   5,  90,  80, 300,  60,
       10,   0,  10, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801, 801, 801, 801, 801,
      801, 801, 801, 801, 801, 801
    };
  register int hval = len;

  switch (hval)
    {
      default:
      case 15:
        hval += asso_values[(unsigned char)str[14]];
      case 14:
        hval += asso_values[(unsigned char)str[13]];
      case 13:
        hval += asso_values[(unsigned char)str[12]];
      case 12:
        hval += asso_values[(unsigned char)str[11]];
      case 11:
        hval += asso_values[(unsigned char)str[10]];
      case 10:
        hval += asso_values[(unsigned char)str[9]];
      case 9:
        hval += asso_values[(unsigned char)str[8]];
      case 8:
        hval += asso_values[(unsigned char)str[7]];
      case 7:
        hval += asso_values[(unsigned char)str[6]];
      case 6:
        hval += asso_values[(unsigned char)str[5]];
      case 5:
        hval += asso_values[(unsigned char)str[4]];
      case 4:
        hval += asso_values[(unsigned char)str[3]];
      case 3:
        hval += asso_values[(unsigned char)str[2]];
      case 2:
        hval += asso_values[(unsigned char)str[1]];
      case 1:
        hval += asso_values[(unsigned char)str[0]];
        break;
    }
  return hval;
}

#ifdef __GNUC__
__inline
#endif
const struct attrs *
findAttr (register const char *str, register unsigned int len)
{
  enum
    {
      TOTAL_KEYWORDS = 155,
      MIN_WORD_LENGTH = 2,
      MAX_WORD_LENGTH = 15,
      MIN_HASH_VALUE = 4,
      MAX_HASH_VALUE = 800
    };

  static const struct attrs wordlist_attr[] =
    {
      {"loop", ATTR_LOOP},
      {"cols", ATTR_COLS},
      {"scope", ATTR_SCOPE},
      {"span", ATTR_SPAN},
      {"rel", ATTR_REL},
      {"colspan", ATTR_COLSPAN},
      {"class", ATTR_CLASS},
      {"color", ATTR_COLOR},
      {"src", ATTR_SRC},
      {"shape", ATTR_SHAPE},
      {"onscroll", ATTR_ONSCROLL},
      {"name", ATTR_NAME},
      {"clear", ATTR_CLEAR},
      {"hspace", ATTR_HSPACE},
      {"size", ATTR_SIZE},
      {"plain", ATTR_PLAIN},
      {"face", ATTR_FACE},
      {"for", ATTR_FOR},
      {"axis", ATTR_AXIS},
      {"scheme", ATTR_SCHEME},
      {"char", ATTR_CHAR},
      {"top", ATTR_TOP},
      {"type", ATTR_TYPE},
      {"onerror", ATTR_ONERROR},
      {"noresize", ATTR_NORESIZE},
      {"onresize", ATTR_ONRESIZE},
      {"rows", ATTR_ROWS},
      {"style", ATTR_STYLE},
      {"href", ATTR_HREF},
      {"ismap", ATTR_ISMAP},
      {"nohref", ATTR_NOHREF},
      {"enctype", ATTR_ENCTYPE},
      {"alt", ATTR_ALT},
      {"wrap", ATTR_WRAP},
      {"nowrap", ATTR_NOWRAP},
      {"onselect", ATTR_ONSELECT},
      {"rowspan", ATTR_ROWSPAN},
      {"rules", ATTR_RULES},
      {"profile", ATTR_PROFILE},
      {"frame", ATTR_FRAME},
      {"accept", ATTR_ACCEPT},
      {"onreset", ATTR_ONRESET},
      {"lang", ATTR_LANG},
      {"pagey", ATTR_PAGEY},
      {"left", ATTR_LEFT},
      {"usemap", ATTR_USEMAP},
      {"pagex", ATTR_PAGEX},
      {"onfocus", ATTR_ONFOCUS},
      {"cite", ATTR_CITE},
      {"label", ATTR_LABEL},
      {"html", ATTR_HTML},
      {"prompt", ATTR_PROMPT},
      {"action", ATTR_ACTION},
      {"compact", ATTR_COMPACT},
      {"onchange", ATTR_ONCHANGE},
      {"challenge", ATTR_CHALLENGE},
      {"charoff", ATTR_CHAROFF},
      {"align", ATTR_ALIGN},
      {"charset", ATTR_CHARSET},
      {"text", ATTR_TEXT},
      {"content", ATTR_CONTENT},
      {"link", ATTR_LINK},
      {"onkeypress", ATTR_ONKEYPRESS},
      {"accesskey", ATTR_ACCESSKEY},
      {"summary", ATTR_SUMMARY},
      {"onmouseup", ATTR_ONMOUSEUP},
      {"cellspacing", ATTR_CELLSPACING},
      {"scrolling", ATTR_SCROLLING},
      {"alink", ATTR_ALINK},
      {"onclick", ATTR_ONCLICK},
      {"title", ATTR_TITLE},
      {"start", ATTR_START},
      {"object", ATTR_OBJECT},
      {"onkeyup", ATTR_ONKEYUP},
      {"hreflang", ATTR_HREFLANG},
      {"mayscript", ATTR_MAYSCRIPT},
      {"onblur", ATTR_ONBLUR},
      {"keytype", ATTR_KEYTYPE},
      {"multiple", ATTR_MULTIPLE},
      {"onabort", ATTR_ONABORT},
      {"code", ATTR_CODE},
      {"scrollamount", ATTR_SCROLLAMOUNT},
      {"onload", ATTR_ONLOAD},
      {"bgcolor", ATTR_BGCOLOR},
      {"unknown", ATTR_UNKNOWN},
      {"maxlength", ATTR_MAXLENGTH},
      {"onmouseout", ATTR_ONMOUSEOUT},
      {"height", ATTR_HEIGHT},
      {"id", ATTR_ID},
      {"abbr", ATTR_ABBR},
      {"coords", ATTR_COORDS},
      {"noshade", ATTR_NOSHADE},
      {"readonly", ATTR_READONLY},
      {"accept-charset", ATTR_ACCEPT_CHARSET},
      {"declare", ATTR_DECLARE},
      {"nosave", ATTR_NOSAVE},
      {"oncontextmenu", ATTR_ONCONTEXTMENU},
      {"scrolldelay", ATTR_SCROLLDELAY},
      {"autocomplete", ATTR_AUTOCOMPLETE},
      {"rev", ATTR_REV},
      {"vspace", ATTR_VSPACE},
      {"z-index", ATTR_Z_INDEX},
      {"dir", ATTR_DIR},
      {"topmargin", ATTR_TOPMARGIN},
      {"defer", ATTR_DEFER},
      {"headers", ATTR_HEADERS},
      {"target", ATTR_TARGET},
      {"classid", ATTR_CLASSID},
      {"language", ATTR_LANGUAGE},
      {"pluginurl", ATTR_PLUGINURL},
      {"media", ATTR_MEDIA},
      {"onunload", ATTR_ONUNLOAD},
      {"codetype", ATTR_CODETYPE},
      {"selected", ATTR_SELECTED},
      {"pluginpage", ATTR_PLUGINPAGE},
      {"oversrc", ATTR_OVERSRC},
      {"data", ATTR_DATA},
      {"leftmargin", ATTR_LEFTMARGIN},
      {"pluginspage", ATTR_PLUGINSPAGE},
      {"version", ATTR_VERSION},
      {"onsubmit", ATTR_ONSUBMIT},
      {"longdesc", ATTR_LONGDESC},
      {"value", ATTR_VALUE},
      {"method", ATTR_METHOD},
      {"codebase", ATTR_CODEBASE},
      {"archive", ATTR_ARCHIVE},
      {"onmousedown", ATTR_ONMOUSEDOWN},
      {"border", ATTR_BORDER},
      {"bgproperties", ATTR_BGPROPERTIES},
      {"onmouseover", ATTR_ONMOUSEOVER},
      {"checked", ATTR_CHECKED},
      {"onmousemove", ATTR_ONMOUSEMOVE},
      {"truespeed", ATTR_TRUESPEED},
      {"onkeydown", ATTR_ONKEYDOWN},
      {"valign", ATTR_VALIGN},
      {"width", ATTR_WIDTH},
      {"direction", ATTR_DIRECTION},
      {"valuetype", ATTR_VALUETYPE},
      {"vlink", ATTR_VLINK},
      {"bordercolor", ATTR_BORDERCOLOR},
      {"standby", ATTR_STANDBY},
      {"datetime", ATTR_DATETIME},
      {"marginheight", ATTR_MARGINHEIGHT},
      {"behavior", ATTR_BEHAVIOR},
      {"tabindex", ATTR_TABINDEX},
      {"frameborder", ATTR_FRAMEBORDER},
      {"hidden", ATTR_HIDDEN},
      {"ondblclick", ATTR_ONDBLCLICK},
      {"http-equiv", ATTR_HTTP_EQUIV},
      {"visibility", ATTR_VISIBILITY},
      {"cellpadding", ATTR_CELLPADDING},
      {"disabled", ATTR_DISABLED},
      {"marginwidth", ATTR_MARGINWIDTH},
      {"contenteditable", ATTR_CONTENTEDITABLE},
      {"background", ATTR_BACKGROUND}
    };

  static const short lookup[] =
    {
        -1,   -1,   -1,   -1,    0,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,    1,    2,   -1,   -1,   -1,
         3,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,    4,   -1,   -1,   -1,    5,   -1,   -1,
         6,   -1,   -1,   -1,   -1,    7,   -1,   -1,
         8,   -1,    9,   -1,   -1,   10,   11,   -1,
        -1,   -1,   -1,   -1,   12,   13,   -1,   -1,
        14,   15,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   16,   -1,   -1,   -1,   17,   18,
        -1,   19,   -1,   -1,   20,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   21,   22,   -1,
        -1,   23, -257,   26,   27, -131,   -2,   -1,
        28,   29,   30,   31,   32,   33,   -1,   34,
        -1,   35,   -1,   -1,   -1,   36,   -1,   -1,
        37,   -1,   -1,   -1,   -1,   -1,   -1,   38,
        -1,   -1,   39,   40,   41,   -1,   42,   43,
        -1,   -1,   -1,   44,   -1,   45,   -1,   -1,
        -1,   46,   -1,   47,   -1,   48,   49,   -1,
        -1,   -1,   50,   -1,   -1,   -1,   -1,   -1,
        -1,   51,   -1,   -1,   -1,   -1,   52,   53,
        -1,   -1,   -1,   -1,   -1,   54,   55,   -1,
        -1,   56,   -1,   -1,   57,   -1,   58,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   59,   -1,   -1,   60,   -1,   61,
        62,   -1,   -1,   -1,   63,   -1,   -1,   64,
        -1,   65,   -1,   66,   -1,   -1,   67,   68,
        -1,   -1,   -1,   -1,   -1,   -1,   69,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   70,   -1,
        -1,   -1,   -1,   71,   72,   73,   74,   75,
        -1,   -1,   -1,   -1,   -1,   -1,   76,   77,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   78,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        79,   -1,   80,   -1,   -1,   81,   -1,   -1,
        -1,   82,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   83,   -1,   -1,   -1,
        -1,   84,   -1,   85,   86,   -1,   -1,   -1,
        -1,   -1,   87,   88,   -1,   89,   -1,   90,
        91,   92,   -1,   -1,   -1,   -1,   -1,   93,
        -1,   -1,   94,   -1,   -1,   -1,   95,   -1,
        96,   -1,   -1,   97,   98,   99,   -1,   -1,
       100,  101,  102,  103,  104,   -1,  105,   -1,
        -1,   -1,  106,  107,  108,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,  109,
       110,   -1,   -1,  111,   -1,   -1,   -1,   -1,
       112,   -1,   -1,   -1,   -1,  113,   -1,   -1,
        -1,   -1,   -1,   -1,  114,   -1,  115,   -1,
       116,  117,  118,  119,   -1,   -1,   -1,   -1,
        -1,  120,   -1,   -1,   -1,   -1,  121,   -1,
       122,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
       123,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,
       125,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,  126,   -1,   -1,   -1,   -1,
       127,  128,   -1,   -1,   -1,  129,  130,   -1,
        -1,   -1,  131,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,  132,   -1,   -1,   -1,   -1,  133,
        -1,  134,   -1,   -1,   -1,  135,   -1,   -1,
        -1,  136,   -1,   -1,   -1,   -1,  137,   -1,
        -1,   -1,   -1,   -1,  138,  139,   -1,   -1,
        -1,   -1,   -1,  140,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,  141,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
       142,  143,   -1,   -1,   -1,   -1,  144,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,  145,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,  146,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,  147,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,  148,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,  149,  150,   -1,   -1,   -1,
        -1,   -1,   -1,  151,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,  152,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,  153,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
       154
    };

  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      register int key = hash_attr (str, len);

      if (key <= MAX_HASH_VALUE && key >= 0)
        {
          register int index = lookup[key];

          if (index >= 0)
            {
              register const char *s = wordlist_attr[index].name;

              if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
                return &wordlist_attr[index];
            }
          else if (index < -TOTAL_KEYWORDS)
            {
              register int offset = - 1 - TOTAL_KEYWORDS - index;
              register const struct attrs *wordptr = &wordlist_attr[TOTAL_KEYWORDS + lookup[offset]];
              register const struct attrs *wordendptr = wordptr + -lookup[offset + 1];

              while (wordptr < wordendptr)
                {
                  register const char *s = wordptr->name;

                  if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
                    return wordptr;
                  wordptr++;
                }
            }
        }
    }
  return 0;
}


static const char * const attrList[] = {
    "ABBR",
    "ACCEPT-CHARSET",
    "ACCEPT",
    "ACCESSKEY",
    "ACTION",
    "ALIGN",
    "ALINK",
    "ALT",
    "ARCHIVE",
    "AUTOCOMPLETE",
    "AXIS",
    "BACKGROUND",
    "BEHAVIOR",
    "BGCOLOR",
    "BGPROPERTIES",
    "BORDER",
    "BORDERCOLOR",
    "CELLPADDING",
    "CELLSPACING",
    "CHAR",
    "CHALLENGE",
    "CHAROFF",
    "CHARSET",
    "CHECKED",
    "CITE",
    "CLASS",
    "CLASSID",
    "CLEAR",
    "CODE",
    "CODEBASE",
    "CODETYPE",
    "COLOR",
    "COLS",
    "COLSPAN",
    "COMPACT",
    "CONTENT",
    "CONTENTEDITABLE",
    "COORDS",
    "DATA",
    "DATETIME",
    "DECLARE",
    "DEFER",
    "DIR",
    "DIRECTION",
    "DISABLED",
    "ENCTYPE",
    "FACE",
    "FOR",
    "FRAME",
    "FRAMEBORDER",
    "HEADERS",
    "HEIGHT",
    "HIDDEN",
    "HREF",
    "HREFLANG",
    "HSPACE",
    "HTML",
    "HTTP-EQUIV",
    "ID",
    "ISMAP",
    "KEYTYPE",
    "LABEL",
    "LANG",
    "LANGUAGE",
    "LEFT",
    "LEFTMARGIN",
    "LINK",
    "LONGDESC",
    "LOOP",
    "MARGINHEIGHT",
    "MARGINWIDTH",
    "MAXLENGTH",
    "MAYSCRIPT",
    "MEDIA",
    "METHOD",
    "MULTIPLE",
    "NAME",
    "NOHREF",
    "NORESIZE",
    "NOSAVE",
    "NOSHADE",
    "NOWRAP",
    "OBJECT",
    "ONABORT",
    "ONBLUR",
    "ONCHANGE",
    "ONCLICK",
    "ONCONTEXTMENU",
    "ONDBLCLICK",
    "ONERROR",
    "ONFOCUS",
    "ONKEYDOWN",
    "ONKEYPRESS",
    "ONKEYUP",
    "ONLOAD",
    "ONMOUSEDOWN",
    "ONMOUSEMOVE",
    "ONMOUSEOUT",
    "ONMOUSEOVER",
    "ONMOUSEUP",
    "ONRESET",
    "ONRESIZE",
    "ONSCROLL",
    "ONSELECT",
    "ONSUBMIT",
    "ONUNLOAD",
    "OVERSRC",
    "PAGEX",
    "PAGEY",
    "PLAIN",
    "PLUGINPAGE",
    "PLUGINSPAGE",
    "PLUGINURL",
    "PROFILE",
    "PROMPT",
    "READONLY",
    "REL",
    "REV",
    "ROWS",
    "ROWSPAN",
    "RULES",
    "SCHEME",
    "SCOPE",
    "SCROLLAMOUNT",
    "SCROLLDELAY",
    "SCROLLING",
    "SELECTED",
    "SHAPE",
    "SIZE",
    "SPAN",
    "SRC",
    "STANDBY",
    "START",
    "STYLE",
    "SUMMARY",
    "TABINDEX",
    "TARGET",
    "TEXT",
    "TITLE",
    "TOP",
    "TOPMARGIN",
    "TRUESPEED",
    "TYPE",
    "UNKNOWN",
    "USEMAP",
    "VALIGN",
    "VALUE",
    "VALUETYPE",
    "VERSION",
    "VISIBILITY",
    "VLINK",
    "VSPACE",
    "WIDTH",
    "WRAP",
    "Z-INDEX",
    0
};
DOMString getAttrName(unsigned short id)
{
    return attrList[id-1];
};