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
20typedef struct SimpleOidListCell
21{
22 struct SimpleOidListCell *next;
23 Oid val;
24} SimpleOidListCell;
25
26typedef struct SimpleOidList
27{
28 SimpleOidListCell *head;
29 SimpleOidListCell *tail;
30} SimpleOidList;
31
32typedef 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
40typedef struct SimpleStringList
41{
42 SimpleStringListCell *head;
43 SimpleStringListCell *tail;
44} SimpleStringList;
45
46
47extern void simple_oid_list_append(SimpleOidList *list, Oid val);
48extern bool simple_oid_list_member(SimpleOidList *list, Oid val);
49
50extern void simple_string_list_append(SimpleStringList *list, const char *val);
51extern bool simple_string_list_member(SimpleStringList *list, const char *val);
52
53extern const char *simple_string_list_not_touched(SimpleStringList *list);
54
55#endif /* SIMPLE_LIST_H */
56