reSIProcate/stack  9694
ParameterHash.cxx
Go to the documentation of this file.
00001 /* C++ code produced by gperf version 3.0.4 */
00002 /* Command-line: gperf -C -D -E -L C++ -t -k '*' --compare-strncmp --ignore-case -Z ParameterHash ParameterHash.gperf  */
00003 
00004 #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
00005       && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
00006       && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
00007       && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
00008       && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
00009       && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
00010       && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
00011       && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
00012       && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
00013       && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
00014       && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
00015       && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
00016       && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
00017       && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
00018       && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
00019       && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
00020       && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
00021       && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
00022       && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
00023       && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
00024       && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
00025       && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
00026       && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
00027 /* The character set is not based on ISO-646.  */
00028 #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
00029 #endif
00030 
00031 #line 1 "ParameterHash.gperf"
00032 
00033 #include <string.h>
00034 #include <ctype.h>
00035 #include "resip/stack/ParameterTypes.hxx"
00036 namespace resip {
00037 using namespace std;
00038 #line 8 "ParameterHash.gperf"
00039 struct params { const char *name; ParameterTypes::Type type; };
00040 /* maximum key range = 266, duplicates = 0 */
00041 
00042 #ifndef GPERF_DOWNCASE
00043 #define GPERF_DOWNCASE 1
00044 static unsigned char gperf_downcase[256] =
00045   {
00046       0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,
00047      15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
00048      30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
00049      45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
00050      60,  61,  62,  63,  64,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106,
00051     107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
00052     122,  91,  92,  93,  94,  95,  96,  97,  98,  99, 100, 101, 102, 103, 104,
00053     105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
00054     120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
00055     135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
00056     150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
00057     165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
00058     180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
00059     195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
00060     210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
00061     225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
00062     240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
00063     255
00064   };
00065 #endif
00066 
00067 #ifndef GPERF_CASE_STRNCMP
00068 #define GPERF_CASE_STRNCMP 1
00069 static int
00070 gperf_case_strncmp (register const char *s1, register const char *s2, register unsigned int n)
00071 {
00072   for (; n > 0;)
00073     {
00074       unsigned char c1 = gperf_downcase[(unsigned char)*s1++];
00075       unsigned char c2 = gperf_downcase[(unsigned char)*s2++];
00076       if (c1 != 0 && c1 == c2)
00077         {
00078           n--;
00079           continue;
00080         }
00081       return (int)c1 - (int)c2;
00082     }
00083   return 0;
00084 }
00085 #endif
00086 
00087 class ParameterHash
00088 {
00089 private:
00090   static inline unsigned int hash (const char *str, unsigned int len);
00091 public:
00092   static const struct params *in_word_set (const char *str, unsigned int len);
00093 };
00094 
00095 inline unsigned int
00096 ParameterHash::hash (register const char *str, register unsigned int len)
00097 {
00098   static const unsigned short asso_values[] =
00099     {
00100       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00101       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00102       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00103       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00104       268, 268, 268,   0, 268,  40,   0, 268, 268, 268,
00105       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00106       268, 268, 268, 268, 268,   0,  25,   0,  15,   0,
00107        15,  35,  75,  10, 268,  10,   0,  25,   5,   5,
00108         5,  45,   0,   0,   0,  40,  85,   5,  65,  65,
00109        40, 268, 268, 268, 268, 268, 268,   0,  25,   0,
00110        15,   0,  15,  35,  75,  10, 268,  10,   0,  25,
00111         5,   5,   5,  45,   0,   0,   0,  40,  85,   5,
00112        65,  65,  40, 268, 268, 268, 268, 268, 268, 268,
00113       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00114       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00115       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00116       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00117       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00118       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00119       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00120       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00121       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00122       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00123       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00124       268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
00125       268, 268, 268, 268, 268, 268
00126     };
00127   register int hval = len;
00128 
00129   switch (hval)
00130     {
00131       default:
00132         hval += asso_values[(unsigned char)str[12]];
00133       /*FALLTHROUGH*/
00134       case 12:
00135         hval += asso_values[(unsigned char)str[11]];
00136       /*FALLTHROUGH*/
00137       case 11:
00138         hval += asso_values[(unsigned char)str[10]];
00139       /*FALLTHROUGH*/
00140       case 10:
00141         hval += asso_values[(unsigned char)str[9]];
00142       /*FALLTHROUGH*/
00143       case 9:
00144         hval += asso_values[(unsigned char)str[8]];
00145       /*FALLTHROUGH*/
00146       case 8:
00147         hval += asso_values[(unsigned char)str[7]];
00148       /*FALLTHROUGH*/
00149       case 7:
00150         hval += asso_values[(unsigned char)str[6]];
00151       /*FALLTHROUGH*/
00152       case 6:
00153         hval += asso_values[(unsigned char)str[5]];
00154       /*FALLTHROUGH*/
00155       case 5:
00156         hval += asso_values[(unsigned char)str[4]];
00157       /*FALLTHROUGH*/
00158       case 4:
00159         hval += asso_values[(unsigned char)str[3]];
00160       /*FALLTHROUGH*/
00161       case 3:
00162         hval += asso_values[(unsigned char)str[2]];
00163       /*FALLTHROUGH*/
00164       case 2:
00165         hval += asso_values[(unsigned char)str[1]];
00166       /*FALLTHROUGH*/
00167       case 1:
00168         hval += asso_values[(unsigned char)str[0]];
00169         break;
00170     }
00171   return hval;
00172 }
00173 
00174 const struct params *
00175 ParameterHash::in_word_set (register const char *str, register unsigned int len)
00176 {
00177   enum
00178     {
00179       TOTAL_KEYWORDS = 89,
00180       MIN_WORD_LENGTH = 1,
00181       MAX_WORD_LENGTH = 13,
00182       MIN_HASH_VALUE = 2,
00183       MAX_HASH_VALUE = 267
00184     };
00185 
00186   static const struct params wordlist[] =
00187     {
00188 #line 39 "ParameterHash.gperf"
00189       {"lr", ParameterTypes::lr},
00190 #line 37 "ParameterHash.gperf"
00191       {"ttl", ParameterTypes::ttl},
00192 #line 63 "ParameterHash.gperf"
00193       {"stale", ParameterTypes::stale},
00194 #line 59 "ParameterHash.gperf"
00195       {"nc", ParameterTypes::nc},
00196 #line 23 "ParameterHash.gperf"
00197       {"actor", ParameterTypes::actor},
00198 #line 82 "ParameterHash.gperf"
00199       {"site", ParameterTypes::site},
00200 #line 53 "ParameterHash.gperf"
00201       {"rport", ParameterTypes::rport},
00202 #line 70 "ParameterHash.gperf"
00203       {"reason", ParameterTypes::reason},
00204 #line 10 "ParameterHash.gperf"
00205       {"data", ParameterTypes::data},
00206 #line 58 "ParameterHash.gperf"
00207       {"nonce", ParameterTypes::nonce},
00208 #line 55 "ParameterHash.gperf"
00209       {"cnonce", ParameterTypes::cnonce},
00210 #line 11 "ParameterHash.gperf"
00211       {"control", ParameterTypes::control},
00212 #line 62 "ParameterHash.gperf"
00213       {"response", ParameterTypes::response},
00214 #line 33 "ParameterHash.gperf"
00215       {"transport", ParameterTypes::transport},
00216 #line 57 "ParameterHash.gperf"
00217       {"id", ParameterTypes::id},
00218 #line 76 "ParameterHash.gperf"
00219       {"protocol", ParameterTypes::protocol},
00220 #line 51 "ParameterHash.gperf"
00221       {"rinstance", ParameterTypes::rinstance},
00222 #line 61 "ParameterHash.gperf"
00223       {"realm", ParameterTypes::realm},
00224 #line 28 "ParameterHash.gperf"
00225       {"ob", ParameterTypes::ob},
00226 #line 32 "ParameterHash.gperf"
00227       {"name", ParameterTypes::name},
00228 #line 29 "ParameterHash.gperf"
00229       {"gr", ParameterTypes::gr},
00230 #line 47 "ParameterHash.gperf"
00231       {"tag", ParameterTypes::tag},
00232 #line 52 "ParameterHash.gperf"
00233       {"comp", ParameterTypes::comp},
00234 #line 96 "ParameterHash.gperf"
00235       {"url", ParameterTypes::url},
00236 #line 34 "ParameterHash.gperf"
00237       {"user", ParameterTypes::user},
00238 #line 40 "ParameterHash.gperf"
00239       {"q", ParameterTypes::q},
00240 #line 26 "ParameterHash.gperf"
00241       {"+sip.instance", ParameterTypes::Instance},
00242 #line 84 "ParameterHash.gperf"
00243       {"mode", ParameterTypes::mode},
00244 #line 90 "ParameterHash.gperf"
00245       {"model", ParameterTypes::model},
00246 #line 18 "ParameterHash.gperf"
00247       {"application", ParameterTypes::application},
00248 #line 68 "ParameterHash.gperf"
00249       {"uri", ParameterTypes::uri},
00250 #line 80 "ParameterHash.gperf"
00251       {"size", ParameterTypes::size},
00252 #line 98 "ParameterHash.gperf"
00253       {"addtransport", ParameterTypes::addTransport},
00254 #line 67 "ParameterHash.gperf"
00255       {"qop", ParameterTypes::qop},
00256 #line 38 "ParameterHash.gperf"
00257       {"maddr", ParameterTypes::maddr},
00258 #line 13 "ParameterHash.gperf"
00259       {"description", ParameterTypes::description},
00260 #line 41 "ParameterHash.gperf"
00261       {"purpose", ParameterTypes::purpose},
00262 #line 75 "ParameterHash.gperf"
00263       {"filename", ParameterTypes::filename},
00264 #line 56 "ParameterHash.gperf"
00265       {"domain", ParameterTypes::domain},
00266 #line 35 "ParameterHash.gperf"
00267       {"ext", ParameterTypes::extension},
00268 #line 24 "ParameterHash.gperf"
00269       {"text", ParameterTypes::text},
00270 #line 81 "ParameterHash.gperf"
00271       {"permission", ParameterTypes::permission},
00272 #line 21 "ParameterHash.gperf"
00273       {"type", ParameterTypes::type},
00274 #line 77 "ParameterHash.gperf"
00275       {"micalg", ParameterTypes::micalg},
00276 #line 22 "ParameterHash.gperf"
00277       {"isfocus", ParameterTypes::isFocus},
00278 #line 64 "ParameterHash.gperf"
00279       {"username", ParameterTypes::username},
00280 #line 94 "ParameterHash.gperf"
00281       {"app-id", ParameterTypes::appId},
00282 #line 86 "ParameterHash.gperf"
00283       {"charset", ParameterTypes::charset},
00284 #line 44 "ParameterHash.gperf"
00285       {"duration", ParameterTypes::duration},
00286 #line 42 "ParameterHash.gperf"
00287       {"to-tag", ParameterTypes::toTag},
00288 #line 45 "ParameterHash.gperf"
00289       {"expires", ParameterTypes::expires},
00290 #line 85 "ParameterHash.gperf"
00291       {"server", ParameterTypes::server},
00292 #line 71 "ParameterHash.gperf"
00293       {"d-alg", ParameterTypes::dAlg},
00294 #line 14 "ParameterHash.gperf"
00295       {"events", ParameterTypes::events},
00296 #line 93 "ParameterHash.gperf"
00297       {"document", ParameterTypes::document},
00298 #line 66 "ParameterHash.gperf"
00299       {"refresher", ParameterTypes::refresher},
00300 #line 25 "ParameterHash.gperf"
00301       {"extensions", ParameterTypes::extensions},
00302 #line 60 "ParameterHash.gperf"
00303       {"opaque", ParameterTypes::opaque},
00304 #line 50 "ParameterHash.gperf"
00305       {"require", ParameterTypes::require},
00306 #line 15 "ParameterHash.gperf"
00307       {"priority", ParameterTypes::priority},
00308 #line 83 "ParameterHash.gperf"
00309       {"directory", ParameterTypes::directory},
00310 #line 27 "ParameterHash.gperf"
00311       {"reg-id", ParameterTypes::regid},
00312 #line 17 "ParameterHash.gperf"
00313       {"schemes", ParameterTypes::schemes},
00314 #line 79 "ParameterHash.gperf"
00315       {"expiration", ParameterTypes::expiration},
00316 #line 48 "ParameterHash.gperf"
00317       {"branch", ParameterTypes::branch},
00318 #line 91 "ParameterHash.gperf"
00319       {"version", ParameterTypes::version},
00320 #line 72 "ParameterHash.gperf"
00321       {"d-qop", ParameterTypes::dQop},
00322 #line 89 "ParameterHash.gperf"
00323       {"vendor", ParameterTypes::vendor},
00324 #line 95 "ParameterHash.gperf"
00325       {"network-user", ParameterTypes::networkUser},
00326 #line 49 "ParameterHash.gperf"
00327       {"received", ParameterTypes::received},
00328 #line 19 "ParameterHash.gperf"
00329       {"video", ParameterTypes::video},
00330 #line 87 "ParameterHash.gperf"
00331       {"access-type", ParameterTypes::accessType},
00332 #line 20 "ParameterHash.gperf"
00333       {"language", ParameterTypes::language},
00334 #line 36 "ParameterHash.gperf"
00335       {"method", ParameterTypes::method},
00336 #line 16 "ParameterHash.gperf"
00337       {"methods", ParameterTypes::methods},
00338 #line 43 "ParameterHash.gperf"
00339       {"from-tag", ParameterTypes::fromTag},
00340 #line 69 "ParameterHash.gperf"
00341       {"retry-after", ParameterTypes::retryAfter},
00342 #line 73 "ParameterHash.gperf"
00343       {"d-ver", ParameterTypes::dVer},
00344 #line 12 "ParameterHash.gperf"
00345       {"mobility", ParameterTypes::mobility},
00346 #line 46 "ParameterHash.gperf"
00347       {"handling", ParameterTypes::handling},
00348 #line 97 "ParameterHash.gperf"
00349       {"sigcomp-id", ParameterTypes::sigcompId},
00350 #line 88 "ParameterHash.gperf"
00351       {"profile-type", ParameterTypes::profileType},
00352 #line 54 "ParameterHash.gperf"
00353       {"algorithm", ParameterTypes::algorithm},
00354 #line 78 "ParameterHash.gperf"
00355       {"boundary", ParameterTypes::boundary},
00356 #line 74 "ParameterHash.gperf"
00357       {"smime-type", ParameterTypes::smimeType},
00358 #line 65 "ParameterHash.gperf"
00359       {"early-only", ParameterTypes::earlyOnly},
00360 #line 31 "ParameterHash.gperf"
00361       {"temp-gruu", ParameterTypes::tempGruu},
00362 #line 30 "ParameterHash.gperf"
00363       {"pub-gruu", ParameterTypes::pubGruu},
00364 #line 92 "ParameterHash.gperf"
00365       {"effective-by", ParameterTypes::effectiveBy}
00366     };
00367 
00368   static const signed char lookup[] =
00369     {
00370       -1, -1,  0,  1, -1,  2, -1,  3, -1, -1,  4, -1, -1, -1,
00371        5,  6,  7, -1, -1,  8,  9, 10, 11, 12, 13, -1, -1, 14,
00372       15, 16, 17, -1, 18, -1, 19, -1, -1, 20, 21, 22, -1, -1,
00373       -1, 23, 24, -1, 25, -1, 26, 27, 28, 29, -1, 30, 31, -1,
00374       -1, 32, 33, -1, 34, 35, 36, 37, -1, -1, 38, -1, 39, 40,
00375       41, -1, -1, -1, 42, -1, 43, 44, 45, -1, -1, 46, 47, 48,
00376       -1, -1, 49, 50, -1, -1, -1, 51, -1, -1, -1, 52, 53, -1,
00377       54, 55, 56, 57, 58, 59, 60, -1, 61, 62, -1, -1, 63, 64,
00378       65, -1, -1, 66, 67, 68, 69, -1, 70, 71, -1, 72, -1, -1,
00379       73, 74, 75, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1,
00380       -1, -1, -1, -1, -1, 77, -1, -1, 78, -1, -1, -1, -1, 79,
00381       -1, 80, -1, 81, -1, 82, -1, -1, -1, 83, -1, -1, -1, -1,
00382       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1,
00383       -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, 86, -1,
00384       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00385       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00386       -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1,
00387       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00388       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00389       -1, 88
00390     };
00391 
00392   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
00393     {
00394       register int key = hash (str, len);
00395 
00396       if (key <= MAX_HASH_VALUE && key >= 0)
00397         {
00398           register int index = lookup[key];
00399 
00400           if (index >= 0)
00401             {
00402               register const char *s = wordlist[index].name;
00403 
00404               if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0')
00405                 return &wordlist[index];
00406             }
00407         }
00408     }
00409   return 0;
00410 }
00411 #line 99 "ParameterHash.gperf"
00412 
00413 }