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