blob: 6e77560aca2b94af7b43b2a8826a23320ce69da8 [file] [log] [blame]
/* C++ code produced by gperf version 3.0.4 */
/* Command-line: /usr/bin/gperf --key-positions='*' -m 10 -s 2 --output-file=SelectorPseudoElementTypeMap.cpp SelectorPseudoElementTypeMap.gperf */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
&& (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
&& ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
&& ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
&& ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
&& ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
&& ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
&& ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
&& ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
&& ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
&& ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
&& ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
&& ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
&& ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
&& ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
&& ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
&& ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
&& ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
&& ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
&& ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
/* The character set is not based on ISO-646. */
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
#endif
#line 2 "SelectorPseudoElementTypeMap.gperf"
/*
* Copyright (C) 2014 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
// This file is automatically generated from SelectorPseudoTypeMap.in by makeprop, do not edit by hand.
#include "config.h"
#include "SelectorPseudoTypeMap.h"
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wdeprecated-register"
#pragma clang diagnostic ignored "-Wimplicit-fallthrough"
#endif
namespace WebCore {
struct SelectorPseudoTypeEntry {
const char* name;
CSSSelector::PseudoElementType type;
};
enum
{
TOTAL_KEYWORDS = 15,
MIN_WORD_LENGTH = 3,
MAX_WORD_LENGTH = 29,
MIN_HASH_VALUE = 4,
MAX_HASH_VALUE = 29
};
/* maximum key range = 26, duplicates = 0 */
class SelectorPseudoElementTypeMapHash
{
private:
static inline unsigned int hash (const char *str, unsigned int len);
public:
static const struct SelectorPseudoTypeEntry *in_word_set (const char *str, unsigned int len);
};
inline unsigned int
SelectorPseudoElementTypeMapHash::hash (register const char *str, register unsigned int len)
{
static const unsigned char asso_values[] =
{
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 0, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 0, 0, 0,
0, 0, 0, 30, 0, 0, 30, 0, 0, 3,
0, 0, 0, 30, 0, 0, 0, 1, 30, 0,
30, 30, 0, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30
};
register int hval = len;
switch (hval)
{
default:
hval += asso_values[(unsigned char)str[28]];
/*FALLTHROUGH*/
case 28:
hval += asso_values[(unsigned char)str[27]];
/*FALLTHROUGH*/
case 27:
hval += asso_values[(unsigned char)str[26]];
/*FALLTHROUGH*/
case 26:
hval += asso_values[(unsigned char)str[25]];
/*FALLTHROUGH*/
case 25:
hval += asso_values[(unsigned char)str[24]];
/*FALLTHROUGH*/
case 24:
hval += asso_values[(unsigned char)str[23]];
/*FALLTHROUGH*/
case 23:
hval += asso_values[(unsigned char)str[22]];
/*FALLTHROUGH*/
case 22:
hval += asso_values[(unsigned char)str[21]];
/*FALLTHROUGH*/
case 21:
hval += asso_values[(unsigned char)str[20]];
/*FALLTHROUGH*/
case 20:
hval += asso_values[(unsigned char)str[19]];
/*FALLTHROUGH*/
case 19:
hval += asso_values[(unsigned char)str[18]];
/*FALLTHROUGH*/
case 18:
hval += asso_values[(unsigned char)str[17]];
/*FALLTHROUGH*/
case 17:
hval += asso_values[(unsigned char)str[16]];
/*FALLTHROUGH*/
case 16:
hval += asso_values[(unsigned char)str[15]];
/*FALLTHROUGH*/
case 15:
hval += asso_values[(unsigned char)str[14]];
/*FALLTHROUGH*/
case 14:
hval += asso_values[(unsigned char)str[13]];
/*FALLTHROUGH*/
case 13:
hval += asso_values[(unsigned char)str[12]];
/*FALLTHROUGH*/
case 12:
hval += asso_values[(unsigned char)str[11]];
/*FALLTHROUGH*/
case 11:
hval += asso_values[(unsigned char)str[10]];
/*FALLTHROUGH*/
case 10:
hval += asso_values[(unsigned char)str[9]];
/*FALLTHROUGH*/
case 9:
hval += asso_values[(unsigned char)str[8]];
/*FALLTHROUGH*/
case 8:
hval += asso_values[(unsigned char)str[7]];
/*FALLTHROUGH*/
case 7:
hval += asso_values[(unsigned char)str[6]];
/*FALLTHROUGH*/
case 6:
hval += asso_values[(unsigned char)str[5]];
/*FALLTHROUGH*/
case 5:
hval += asso_values[(unsigned char)str[4]];
/*FALLTHROUGH*/
case 4:
hval += asso_values[(unsigned char)str[3]];
/*FALLTHROUGH*/
case 3:
hval += asso_values[(unsigned char)str[2]];
/*FALLTHROUGH*/
case 2:
hval += asso_values[(unsigned char)str[1]];
/*FALLTHROUGH*/
case 1:
hval += asso_values[(unsigned char)str[0]];
break;
}
return hval;
}
static const struct SelectorPseudoTypeEntry wordlist[] =
{
{"",CSSSelector::PseudoElementUnknown},
{"",CSSSelector::PseudoElementUnknown},
{"",CSSSelector::PseudoElementUnknown},
{"",CSSSelector::PseudoElementUnknown},
#line 63 "SelectorPseudoElementTypeMap.gperf"
{"cue", CSSSelector::PseudoElementWebKitCustom},
#line 61 "SelectorPseudoElementTypeMap.gperf"
{"after", CSSSelector::PseudoElementAfter},
#line 62 "SelectorPseudoElementTypeMap.gperf"
{"before", CSSSelector::PseudoElementBefore},
{"",CSSSelector::PseudoElementUnknown},
{"",CSSSelector::PseudoElementUnknown},
#line 75 "SelectorPseudoElementTypeMap.gperf"
{"selection", CSSSelector::PseudoElementSelection},
#line 65 "SelectorPseudoElementTypeMap.gperf"
{"first-line", CSSSelector::PseudoElementFirstLine},
#line 66 "SelectorPseudoElementTypeMap.gperf"
{"placeholder", CSSSelector::PseudoElementWebKitCustom},
#line 64 "SelectorPseudoElementTypeMap.gperf"
{"first-letter", CSSSelector::PseudoElementFirstLetter},
{"",CSSSelector::PseudoElementUnknown},
{"",CSSSelector::PseudoElementUnknown},
#line 68 "SelectorPseudoElementTypeMap.gperf"
{"-webkit-resizer", CSSSelector::PseudoElementResizer},
{"",CSSSelector::PseudoElementUnknown},
#line 69 "SelectorPseudoElementTypeMap.gperf"
{"-webkit-scrollbar", CSSSelector::PseudoElementScrollbar},
{"",CSSSelector::PseudoElementUnknown},
{"",CSSSelector::PseudoElementUnknown},
{"",CSSSelector::PseudoElementUnknown},
{"",CSSSelector::PseudoElementUnknown},
{"",CSSSelector::PseudoElementUnknown},
#line 73 "SelectorPseudoElementTypeMap.gperf"
{"-webkit-scrollbar-track", CSSSelector::PseudoElementScrollbarTrack},
#line 71 "SelectorPseudoElementTypeMap.gperf"
{"-webkit-scrollbar-corner", CSSSelector::PseudoElementScrollbarCorner},
#line 70 "SelectorPseudoElementTypeMap.gperf"
{"-webkit-scrollbar-button", CSSSelector::PseudoElementScrollbarButton},
#line 67 "SelectorPseudoElementTypeMap.gperf"
{"-webkit-input-placeholder", CSSSelector::PseudoElementWebKitCustomLegacyPrefixed},
#line 72 "SelectorPseudoElementTypeMap.gperf"
{"-webkit-scrollbar-thumb", CSSSelector::PseudoElementScrollbarThumb},
{"",CSSSelector::PseudoElementUnknown},
#line 74 "SelectorPseudoElementTypeMap.gperf"
{"-webkit-scrollbar-track-piece", CSSSelector::PseudoElementScrollbarTrackPiece}
};
const struct SelectorPseudoTypeEntry *
SelectorPseudoElementTypeMapHash::in_word_set (register const char *str, register unsigned int len)
{
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
{
register int key = hash (str, len);
if (key <= MAX_HASH_VALUE && key >= 0)
{
register const char *s = wordlist[key].name;
if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
return &wordlist[key];
}
}
return 0;
}
#line 76 "SelectorPseudoElementTypeMap.gperf"
static inline CSSSelector::PseudoElementType parsePseudoElementString(const LChar* characters, unsigned length)
{
if (const SelectorPseudoTypeEntry* entry = SelectorPseudoElementTypeMapHash::in_word_set(reinterpret_cast<const char*>(characters), length))
return entry->type;
return CSSSelector::PseudoElementUnknown;
}
static inline CSSSelector::PseudoElementType parsePseudoElementString(const UChar* characters, unsigned length)
{
const unsigned maxKeywordLength = 29;
LChar buffer[maxKeywordLength];
if (length > maxKeywordLength)
return CSSSelector::PseudoElementUnknown;
for (unsigned i = 0; i < length; ++i) {
UChar character = characters[i];
if (character & ~0xff)
return CSSSelector::PseudoElementUnknown;
buffer[i] = static_cast<LChar>(character);
}
return parsePseudoElementString(buffer, length);
}
CSSSelector::PseudoElementType parsePseudoElementString(const StringImpl& pseudoTypeString)
{
if (pseudoTypeString.is8Bit())
return parsePseudoElementString(pseudoTypeString.characters8(), pseudoTypeString.length());
return parsePseudoElementString(pseudoTypeString.characters16(), pseudoTypeString.length());
}
} // namespace WebCore
#if defined(__clang__)
#pragma clang diagnostic pop
#endif