| 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 | |