Coverage Report

Created: 2026-06-10 06:21

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/resiprocate/resip/stack/gen/MethodHash.cxx
Line
Count
Source
1
/* C++ code produced by gperf version 3.1 */
2
/* Command-line: gperf -C -D -E -L C++ -t --key-positions='*' --compare-strncmp -Z MethodHash MethodHash.gperf  */
3
4
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
5
      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
6
      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
7
      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
8
      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
9
      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
10
      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
11
      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
12
      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
13
      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
14
      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
15
      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
16
      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
17
      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
18
      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
19
      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
20
      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
21
      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
22
      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
23
      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
24
      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
25
      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
26
      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
27
/* The character set is not based on ISO-646.  */
28
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
29
#endif
30
31
#line 1 "MethodHash.gperf"
32
33
#include <string.h>
34
#include <ctype.h>
35
#include "resip/stack/MethodTypes.hxx"
36
37
namespace resip
38
{
39
#line 9 "MethodHash.gperf"
40
struct methods { const char *name; MethodTypes type; };
41
/* maximum key range = 31, duplicates = 0 */
42
43
class MethodHash
44
{
45
private:
46
  static inline unsigned int hash (const char *str, size_t len);
47
public:
48
  static const struct methods *in_word_set (const char *str, size_t len);
49
};
50
51
inline unsigned int
52
MethodHash::hash (const char *str, size_t len)
53
3.48k
{
54
3.48k
  static const unsigned char asso_values[] =
55
3.48k
    {
56
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
57
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
58
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
59
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
60
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
61
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
62
3.48k
      35, 35, 35, 35, 35,  5, 10,  5,  5,  0,
63
3.48k
       0, 15,  0,  0, 35,  0,  0,  0,  0,  0,
64
3.48k
       0, 35,  0,  0,  0,  0,  0, 35, 35,  5,
65
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
66
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
67
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
68
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
69
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
70
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
71
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
72
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
73
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
74
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
75
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
76
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
77
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
78
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
79
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
80
3.48k
      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
81
3.48k
      35, 35, 35, 35, 35, 35
82
3.48k
    };
83
3.48k
  unsigned int hval = len;
84
85
3.48k
  switch (hval)
86
3.48k
    {
87
98
      default:
88
98
        hval += asso_values[static_cast<unsigned char>(str[8])];
89
      /*FALLTHROUGH*/
90
402
      case 8:
91
402
        hval += asso_values[static_cast<unsigned char>(str[7])];
92
      /*FALLTHROUGH*/
93
579
      case 7:
94
579
        hval += asso_values[static_cast<unsigned char>(str[6])];
95
      /*FALLTHROUGH*/
96
795
      case 6:
97
795
        hval += asso_values[static_cast<unsigned char>(str[5])];
98
      /*FALLTHROUGH*/
99
960
      case 5:
100
960
        hval += asso_values[static_cast<unsigned char>(str[4])];
101
      /*FALLTHROUGH*/
102
1.26k
      case 4:
103
1.26k
        hval += asso_values[static_cast<unsigned char>(str[3])];
104
      /*FALLTHROUGH*/
105
3.48k
      case 3:
106
3.48k
        hval += asso_values[static_cast<unsigned char>(str[2])];
107
      /*FALLTHROUGH*/
108
3.48k
      case 2:
109
3.48k
        hval += asso_values[static_cast<unsigned char>(str[1])];
110
      /*FALLTHROUGH*/
111
3.48k
      case 1:
112
3.48k
        hval += asso_values[static_cast<unsigned char>(str[0])];
113
3.48k
        break;
114
3.48k
    }
115
3.48k
  return hval;
116
3.48k
}
117
118
const struct methods *
119
MethodHash::in_word_set (const char *str, size_t len)
120
6.58k
{
121
6.58k
  enum
122
6.58k
    {
123
6.58k
      TOTAL_KEYWORDS = 16,
124
6.58k
      MIN_WORD_LENGTH = 3,
125
6.58k
      MAX_WORD_LENGTH = 9,
126
6.58k
      MIN_HASH_VALUE = 4,
127
6.58k
      MAX_HASH_VALUE = 34
128
6.58k
    };
129
130
6.58k
  static const struct methods wordlist[] =
131
6.58k
    {
132
6.58k
#line 24 "MethodHash.gperf"
133
6.58k
      {"INFO", INFO},
134
6.58k
#line 19 "MethodHash.gperf"
135
6.58k
      {"REFER", REFER},
136
6.58k
#line 14 "MethodHash.gperf"
137
6.58k
      {"INVITE", INVITE},
138
6.58k
#line 16 "MethodHash.gperf"
139
6.58k
      {"OPTIONS", OPTIONS},
140
6.58k
#line 22 "MethodHash.gperf"
141
6.58k
      {"RESPONSE", RESPONSE},
142
6.58k
#line 15 "MethodHash.gperf"
143
6.58k
      {"NOTIFY", NOTIFY},
144
6.58k
#line 25 "MethodHash.gperf"
145
6.58k
      {"SERVICE", SERVICE},
146
6.58k
#line 11 "MethodHash.gperf"
147
6.58k
      {"ACK", ACK},
148
6.58k
#line 17 "MethodHash.gperf"
149
6.58k
      {"PRACK", PRACK},
150
6.58k
#line 26 "MethodHash.gperf"
151
6.58k
      {"UPDATE", UPDATE},
152
6.58k
#line 18 "MethodHash.gperf"
153
6.58k
      {"PUBLISH", PUBLISH},
154
6.58k
#line 12 "MethodHash.gperf"
155
6.58k
      {"BYE", BYE},
156
6.58k
#line 13 "MethodHash.gperf"
157
6.58k
      {"CANCEL", CANCEL},
158
6.58k
#line 20 "MethodHash.gperf"
159
6.58k
      {"REGISTER", REGISTER},
160
6.58k
#line 23 "MethodHash.gperf"
161
6.58k
      {"MESSAGE", MESSAGE},
162
6.58k
#line 21 "MethodHash.gperf"
163
6.58k
      {"SUBSCRIBE", SUBSCRIBE}
164
6.58k
    };
165
166
6.58k
  static const signed char lookup[] =
167
6.58k
    {
168
6.58k
      -1, -1, -1, -1,  0,  1,  2,  3,  4, -1, -1,  5,  6,  7,
169
6.58k
      -1,  8,  9, 10, 11, -1, -1, 12, -1, 13, -1, -1, -1, 14,
170
6.58k
      -1, -1, -1, -1, -1, -1, 15
171
6.58k
    };
172
173
6.58k
  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
174
3.48k
    {
175
3.48k
      unsigned int key = hash (str, len);
176
177
3.48k
      if (key <= MAX_HASH_VALUE)
178
44
        {
179
44
          int index = lookup[key];
180
181
44
          if (index >= 0)
182
42
            {
183
42
              const char *s = wordlist[index].name;
184
185
42
              if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
186
1
                return &wordlist[index];
187
42
            }
188
44
        }
189
3.48k
    }
190
6.58k
  return 0;
191
6.58k
}
192
#line 27 "MethodHash.gperf"
193
194
}