12 if (ch <=
'Z' -
'A') ch +=
'a' -
'A';
13 h = ((
h << 5) +
h) ^ ch;
26 if (
h == cm->
hash[pos])
28 if (!case_diffb(cm->
input[pos],len,s))
44 for (
j = 0;
j < len; ++
j)
if (!s[
j]) ++cm->
num;
47 while (
h && (h < cm->
num))
h +=
h;
50 cm->
first = (
int *) alloc(
sizeof(
int) *
h);
52 cm->
input = (
char **) alloc(
sizeof(
char *) * cm->
num);
54 cm->
inputlen = (
int *) alloc(
sizeof(
int) * cm->
num);
58 cm->
next = (
int *) alloc(
sizeof(
int) * cm->
num);
64 for (
j = 0;
j < len; ++
j)
68 for (
k = i;
k <
j; ++
k)
69 if (s[
k] ==
':')
break;
70 if (
k >=
j) { i =
j + 1;
continue; }
73 cm->
input[pos] = s + i;
89 alloc_free(cm->
input);
91 alloc_free(cm->
first);
104 if (!flagchar || flagchar == 0 || flagchar ==
'\0') {
109 for (
j = 0;
j < len; ++
j)
if (!s[
j]) ++cm->
num;
112 while (
h && (h < cm->
num))
h +=
h;
115 cm->
first = (
int *) alloc(
sizeof(
int) *
h);
117 cm->
input = (
char **) alloc(
sizeof(
char *) * cm->
num);
119 cm->
inputlen = (
int *) alloc(
sizeof(
int) * cm->
num);
123 cm->
next = (
int *) alloc(
sizeof(
int) * cm->
num);
125 for (
h = 0;
h <= cm->
mask; ++
h)
129 for (
j = 0;
j < len; ++
j)
133 for (
k = i;
k <
j; ++
k)
134 if (s[
k] == flagchar)
break;
135 if (
k >=
j) { i =
j + 1;
continue; }
138 cm->
input[pos] = s + i;
150 alloc_free(cm->
hash);
154 alloc_free(cm->
input);
156 alloc_free(cm->
first);
163 alloc_free(cm->
next);
164 alloc_free(cm->
hash);
166 alloc_free(cm->
input);
167 alloc_free(cm->
first);
void constmap_free(struct constmap *cm)
int constmap_init_char(struct constmap *cm, char *s, int len, int flagcolon, char flagchar)
int constmap_init(struct constmap *cm, char *s, int len, int flagcolon)
unsigned long constmap_hash
void h(char *, char *, int, int, int)