PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
kwlookup.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * kwlookup.h
4 * Key word lookup for PostgreSQL
5 *
6 *
7 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * src/include/common/kwlookup.h
11 *
12 *-------------------------------------------------------------------------
13 */
14#ifndef KWLOOKUP_H
15#define KWLOOKUP_H
16
17/* Hash function used by ScanKeywordLookup */
18typedef int (*ScanKeywordHashFunc) (const void *key, size_t keylen);
19
20/*
21 * This struct contains the data needed by ScanKeywordLookup to perform a
22 * search within a set of keywords. The contents are typically generated by
23 * src/tools/gen_keywordlist.pl from a header containing PG_KEYWORD macros.
24 */
25typedef struct ScanKeywordList
26{
27 const char *kw_string; /* all keywords in order, separated by \0 */
28 const uint16 *kw_offsets; /* offsets to the start of each keyword */
29 ScanKeywordHashFunc hash; /* perfect hash function for keywords */
30 int num_keywords; /* number of keywords */
31 int max_kw_len; /* length of longest keyword */
33
34
35extern int ScanKeywordLookup(const char *str, const ScanKeywordList *keywords);
36
37/* Code that wants to retrieve the text of the N'th keyword should use this. */
38static inline const char *
40{
41 return keywords->kw_string + keywords->kw_offsets[n];
42}
43
44#endif /* KWLOOKUP_H */
uint16_t uint16
Definition: c.h:487
const char * str
static const JsonPathKeyword keywords[]
static const char * GetScanKeyword(int n, const ScanKeywordList *keywords)
Definition: kwlookup.h:39
struct ScanKeywordList ScanKeywordList
int(* ScanKeywordHashFunc)(const void *key, size_t keylen)
Definition: kwlookup.h:18
int ScanKeywordLookup(const char *str, const ScanKeywordList *keywords)
Definition: kwlookup.c:38
const uint16 * kw_offsets
Definition: kwlookup.h:28
int num_keywords
Definition: kwlookup.h:30
const char * kw_string
Definition: kwlookup.h:27
ScanKeywordHashFunc hash
Definition: kwlookup.h:29