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_Test2 -D -T effective_tld_names_unittest2.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_unittest2.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 -c -o -t -k '*' -NFindDomain -ZPerfect_Hash_Test2 -D -T effective_tld_names_unittest2.gperf >  effective_tld_names_unittest2.cc
39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// to generate the perfect hashmap.
40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
41c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define TOTAL_KEYWORDS 2
42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define MIN_WORD_LENGTH 2
43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define MAX_WORD_LENGTH 6
44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define MIN_HASH_VALUE 2
45c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define MAX_HASH_VALUE 6
46c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* maximum key range = 5, duplicates = 0 */
47c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
48c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass Perfect_Hash_Test2
49c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{
50c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottprivate:
51c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  static inline unsigned int hash (const char *str, unsigned int len);
52c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottpublic:
53c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  static const struct DomainRule *FindDomain (const char *str, unsigned int len);
54c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott};
55c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
56c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottinline unsigned int
57c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottPerfect_Hash_Test2::hash (register const char *str, register unsigned int len)
58c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{
59c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  static const unsigned char asso_values[] =
60c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    {
61c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
62c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
63c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
64c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
65c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 0, 7, 7, 7,
66c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
67c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
68c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
69c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
70c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 0, 0, 7,
71c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 0, 7, 7, 7,
72c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 0, 7, 0, 7, 7, 7, 7, 7,
73c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
74c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
75c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
76c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
77c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
78c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
79c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
80c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
81c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
82c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
83c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
84c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
85c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
86c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      7, 7, 7, 7, 7, 7
87c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    };
88c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  register int hval = len;
89c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
90c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  switch (hval)
91c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    {
92c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      default:
93c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[5]];
94c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
95c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 5:
96c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[4]];
97c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
98c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 4:
99c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[3]];
100c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
101c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 3:
102c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[2]];
103c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
104c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 2:
105c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[1]];
106c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      /*FALLTHROUGH*/
107c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      case 1:
108c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        hval += asso_values[(unsigned char)str[0]];
109c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        break;
110c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    }
111c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  return hval;
112c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
113c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
114c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottconst struct DomainRule *
115c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottPerfect_Hash_Test2::FindDomain (register const char *str, register unsigned int len)
116c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{
117c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  static const struct DomainRule wordlist[] =
118c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    {
119c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 15 "effective_tld_names_unittest2.gperf"
120c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      {"jp", 0},
121c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 16 "effective_tld_names_unittest2.gperf"
122c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      {"bar.jp", 0}
123c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    };
124c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
125c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  static const signed char lookup[] =
126c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    {
127c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      -1, -1,  0, -1, -1, -1,  1
128c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    };
129c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
130c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
131c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    {
132c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      register int key = hash (str, len);
133c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
134c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott      if (key <= MAX_HASH_VALUE && key >= 0)
135c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        {
136c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott          register int index = lookup[key];
137c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
138c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott          if (index >= 0)
139c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott            {
140c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott              register const char *s = wordlist[index].name;
141c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
142c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott              if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
143c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott                return &wordlist[index];
144c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott            }
145c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott        }
146c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott    }
147c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  return 0;
148c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}
149c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#line 17 "effective_tld_names_unittest2.gperf"
150c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
151