37{
39 int h;
40 const char *kw;
41
42 /*
43 * Reject immediately if too long to be any keyword. This saves useless
44 * hashing work on long strings.
45 */
47 if (
len > ScanCKeywords.max_kw_len)
48 return -1;
49
50 /*
51 * Compute the hash function. Since it's a perfect hash, we need only
52 * match to the specific keyword it identifies.
53 */
54 h = ScanCKeywords_hash_func(
text,
len);
55
56 /* An out-of-range result implies no match */
57 if (h < 0 || h >= ScanCKeywords.num_keywords)
58 return -1;
59
61
62 if (strcmp(kw,
text) == 0)
64
65 return -1;
66}
static const uint16 ScanCKeywordTokens[]
static const char * GetScanKeyword(int n, const ScanKeywordList *keywords)