From 4b399b2f9133de4cbcc228a2b1fe2e69b4dfe99a Mon Sep 17 00:00:00 2001
From: Julien Rouhaud <julien.rouhaud@free.fr>
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

