1 | /*------------------------------------------------------------------------- |
2 | * |
3 | * Simple list facilities for frontend code |
4 | * |
5 | * Data structures for simple lists of OIDs and strings. The support for |
6 | * these is very primitive compared to the backend's List facilities, but |
7 | * it's all we need in, eg, pg_dump. |
8 | * |
9 | * |
10 | * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group |
11 | * Portions Copyright (c) 1994, Regents of the University of California |
12 | * |
13 | * src/include/fe_utils/simple_list.h |
14 | * |
15 | *------------------------------------------------------------------------- |
16 | */ |
17 | #ifndef SIMPLE_LIST_H |
18 | #define SIMPLE_LIST_H |
19 | |
20 | typedef struct SimpleOidListCell |
21 | { |
22 | struct SimpleOidListCell *next; |
23 | Oid val; |
24 | } SimpleOidListCell; |
25 | |
26 | typedef struct SimpleOidList |
27 | { |
28 | SimpleOidListCell *head; |
29 | SimpleOidListCell *tail; |
30 | } SimpleOidList; |
31 | |
32 | typedef struct SimpleStringListCell |
33 | { |
34 | struct SimpleStringListCell *next; |
35 | bool touched; /* true, when this string was searched and |
36 | * touched */ |
37 | char val[FLEXIBLE_ARRAY_MEMBER]; /* null-terminated string here */ |
38 | } SimpleStringListCell; |
39 | |
40 | typedef struct SimpleStringList |
41 | { |
42 | SimpleStringListCell *head; |
43 | SimpleStringListCell *tail; |
44 | } SimpleStringList; |
45 | |
46 | |
47 | extern void simple_oid_list_append(SimpleOidList *list, Oid val); |
48 | extern bool simple_oid_list_member(SimpleOidList *list, Oid val); |
49 | |
50 | extern void simple_string_list_append(SimpleStringList *list, const char *val); |
51 | extern bool simple_string_list_member(SimpleStringList *list, const char *val); |
52 | |
53 | extern const char *simple_string_list_not_touched(SimpleStringList *list); |
54 | |
55 | #endif /* SIMPLE_LIST_H */ |
56 | |