1c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* C++ code produced by gperf version 3.0.3 */
2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* Command-line: gperf -a -L C++ -C -c -o -t -k '*' -NFindDomain -ZPerfect_Hash_Test1 -D effective_tld_names_unittest1.gperf  */
3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* The character set is not based on ISO-646.  */
28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif
30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 1 "effective_tld_names_unittest1.gperf"
32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Copyright (c) 2009 The Chromium Authors. All rights reserved.
34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that
35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// can be found in the LICENSE file.
36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Test file used by registry_controlled_domain_unittest.
37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// We edit this file manually, then run
38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// gperf -a -L "C++" -C -G -c -o -t -k '*' -NFindDomain -ZPerfect_Hash_Test2 -Hhash_test1 -Wword_list1 -D effective_tld_names_unittest1.gperf >  effective_tld_names_unittest1.cc
39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// to generate the perfect hashmap.
40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 10 "effective_tld_names_unittest1.gperf"
41c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottstruct DomainRule {
42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  const char *name;
43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  int type;  // 1: exception, 2: wildcard
44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott};
45c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
46c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define TOTAL_KEYWORDS 8
47c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define MIN_WORD_LENGTH 1
48c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define MAX_WORD_LENGTH 11
49c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define MIN_HASH_VALUE 1
50c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define MAX_HASH_VALUE 16
51c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* maximum key range = 16, duplicates = 0 */
52c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
53c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass Perfect_Hash_Test1
54c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{
55c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottprivate:
56c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  static inline unsigned int hash (const char *str, unsigned int len);
57c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottpublic:
58c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  static const struct DomainRule *FindDomain (const char *str, unsigned int len);
59c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott};
60c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
61c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottinline unsigned int
62c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottPerfect_Hash_Test1::hash (register const char *str, register unsigned int len)
63c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{
64c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  static const unsigned char asso_values[] =
65c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    {
66c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
67c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
68c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
69c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
70c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17,  0, 17, 17, 17,
71c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
72c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
73c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
74c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
75c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17,  0,  0,  0,
76c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17,  5,  0, 17, 17, 17,  0, 17, 17,  0,
77c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17,  0,  0, 17,  0, 17, 17, 17, 17, 17,
78c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17,  0, 17, 17, 17, 17, 17, 17, 17,
79c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
80c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
81c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
82c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
83c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
84c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
85c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
86c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
87c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
88c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
89c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
90c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
91c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      17, 17, 17, 17, 17, 17
92c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    };
93c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  register int hval = len;
94c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
95c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  switch (hval)
96c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    {
97c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      default:
98c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[10]];
99c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
100c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 10:
101c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[9]];
102c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
103c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 9:
104c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[8]];
105c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
106c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 8:
107c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[7]];
108c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
109c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 7:
110c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[6]];
111c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
112c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 6:
113c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[5]];
114c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
115c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 5:
116c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[4]];
117c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
118c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 4:
119c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[3]];
120c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
121c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 3:
122c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[2]];
123c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
124c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 2:
125c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[1]];
126c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
127c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 1:
128c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[0]];
129c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        break;
130c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    }
131c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  return hval;
132c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
133c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
134c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottconst struct DomainRule *
135c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottPerfect_Hash_Test1::FindDomain (register const char *str, register unsigned int len)
136c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{
137c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  static const struct DomainRule wordlist[] =
138c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    {
139c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 21 "effective_tld_names_unittest1.gperf"
140c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      {"c", 2},
141c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 15 "effective_tld_names_unittest1.gperf"
142c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      {"jp", 0},
143c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 22 "effective_tld_names_unittest1.gperf"
144c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      {"b.c", 1},
145c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 16 "effective_tld_names_unittest1.gperf"
146c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      {"ac.jp", 0},
147c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 17 "effective_tld_names_unittest1.gperf"
148c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      {"bar.jp", 2},
149c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 18 "effective_tld_names_unittest1.gperf"
150c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      {"baz.bar.jp", 2},
151c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 20 "effective_tld_names_unittest1.gperf"
152c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      {"bar.baz.com", 0},
153c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 19 "effective_tld_names_unittest1.gperf"
154c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      {"pref.bar.jp", 1}
155c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    };
156c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
157c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  static const signed char lookup[] =
158c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    {
159c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      -1,  0,  1,  2, -1,  3,  4, -1, -1, -1,  5,  6, -1, -1,
160c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      -1, -1,  7
161c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    };
162c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
163c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
164c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    {
165c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      register int key = hash (str, len);
166c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
167c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      if (key <= MAX_HASH_VALUE && key >= 0)
168c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        {
169c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott          register int index = lookup[key];
170c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
171c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott          if (index >= 0)
172c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott            {
173c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott              register const char *s = wordlist[index].name;
174c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
175c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott              if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
176c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                return &wordlist[index];
177c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott            }
178c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        }
179c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    }
180c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  return 0;
181c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
182c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 23 "effective_tld_names_unittest1.gperf"
183c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
184