21 if (ch <=
'Z' -
'A') ch +=
'a' -
'A';
22 h = ((h << 5) + h) ^ ch;
42 if (h == cm->
hash[pos])
59 if (idx <= 0 || idx > cm->
num)
62 return cm->
input[idx - 1];
72 if (h == cm->
hash[pos])
90 for (j = 0; j < len; ++j)
if (!s[j]) ++cm->
num;
93 while (h && (h < cm->num)) h += h;
106 for (h = 0; h <= cm->
mask; ++h)
110 for (j = 0; j < len; ++j)
114 for (k = i; k < j; ++k)
115 if (s[k] ==
':')
break;
116 if (k >= j) { i = j + 1;
continue; }
119 cm->
input[pos] = s + i;
150 if (!flagchar || flagchar == 0 || flagchar ==
'\0') {
155 for (j = 0; j < len; ++j)
if (!s[j]) ++cm->
num;
158 while (h && (h < cm->num)) h += h;
171 for (h = 0; h <= cm->
mask; ++h)
175 for (j = 0; j < len; ++j) {
179 for (k = i; k < j; ++k)
180 if (s[k] == flagchar)
break;
181 if (k >= j) { i = j + 1;
continue; }
184 cm->
input[pos] = s + i;
void * alloc(unsigned int)
unsigned long constmap_hash
int case_diffb(char *, unsigned int, char *)
int constmap_index(struct constmap *cm, const char *s, int len)
char * constmap(struct constmap *cm, const char *s, int len)
void constmap_free(struct constmap *cm)
int constmap_init(struct constmap *cm, const char *s, int len, int flagcolon)
char * constmap_get(struct constmap *cm, int idx)
int constmap_init_char(struct constmap *cm, const char *s, int len, int flagcolon, char flagchar)