From 4b399b2f9133de4cbcc228a2b1fe2e69b4dfe99a Mon Sep 17 00:00:00 2001 From: Julien Rouhaud Date: Fri, 28 Jun 2019 13:32:25 +0200 Subject: [PATCH 2/4] Add a SimplePtrList implementation --- src/fe_utils/simple_list.c | 21 +++++++++++++++++++++ src/include/fe_utils/simple_list.h | 15 +++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/fe_utils/simple_list.c b/src/fe_utils/simple_list.c index 8d605140a7..4636d24857 100644 --- a/src/fe_utils/simple_list.c +++ b/src/fe_utils/simple_list.c @@ -114,3 +114,24 @@ simple_string_list_not_touched(SimpleStringList *list) } return NULL; } + +/* + * Append a pointer to the list. + */ +void +simple_ptr_list_append(SimplePtrList *list, void *val) +{ + SimplePtrListCell *cell; + + cell = (SimplePtrListCell *) pg_malloc(sizeof(SimplePtrListCell)); + cell->next = NULL; + cell->val = val; + + list->size++; + + if (list->tail) + list->tail->next = cell; + else + list->head = cell; + list->tail = cell; +} diff --git a/src/include/fe_utils/simple_list.h b/src/include/fe_utils/simple_list.h index 8a95cbb3a8..88b427d04c 100644 --- a/src/include/fe_utils/simple_list.h +++ b/src/include/fe_utils/simple_list.h @@ -43,6 +43,19 @@ typedef struct SimpleStringList SimpleStringListCell *tail; } SimpleStringList; +typedef struct SimplePtrListCell +{ + struct SimplePtrListCell *next; + void *val; +} SimplePtrListCell; + +typedef struct SimplePtrList +{ + int size; + SimplePtrListCell *head; + SimplePtrListCell *tail; +} SimplePtrList; + extern void simple_oid_list_append(SimpleOidList *list, Oid val); extern bool simple_oid_list_member(SimpleOidList *list, Oid val); @@ -52,4 +65,6 @@ extern bool simple_string_list_member(SimpleStringList *list, const char *val); extern const char *simple_string_list_not_touched(SimpleStringList *list); +extern void simple_ptr_list_append(SimplePtrList *list, void *val); + #endif /* SIMPLE_LIST_H */ -- 2.20.1