0004-Remove-dllist.-ch.patch

text/x-patch

Filename: 0004-Remove-dllist.-ch.patch
Type: text/x-patch
Part: 3
Message: Re: embedded list v3

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: format-patch
Series: patch 0004
Subject: Remove dllist.[ch]
File+
src/backend/lib/dllist.c 0 214
src/backend/lib/Makefile 1 1
src/include/lib/dllist.h 0 85
From 0a7ccf3e72d9a2a3a4d5e11fdadf5be6d1d4840b Mon Sep 17 00:00:00 2001
From: Andres Freund <andres@anarazel.de>
Date: Fri, 28 Sep 2012 16:44:16 +0200
Subject: [PATCH 4/4] Remove dllist.[ch]

---
 src/backend/lib/Makefile |   2 +-
 src/backend/lib/dllist.c | 214 -----------------------------------------------
 src/include/lib/dllist.h |  85 -------------------
 3 files changed, 1 insertion(+), 300 deletions(-)
 delete mode 100644 src/backend/lib/dllist.c
 delete mode 100644 src/include/lib/dllist.h

diff --git a/src/backend/lib/Makefile b/src/backend/lib/Makefile
index c94297a..7da1c45 100644
--- a/src/backend/lib/Makefile
+++ b/src/backend/lib/Makefile
@@ -12,6 +12,6 @@ subdir = src/backend/lib
 top_builddir = ../../..
 include $(top_builddir)/src/Makefile.global
 
-OBJS = dllist.o stringinfo.o ilist.o
+OBJS = stringinfo.o ilist.o
 
 include $(top_srcdir)/src/backend/common.mk
diff --git a/src/backend/lib/dllist.c b/src/backend/lib/dllist.c
deleted file mode 100644
index 52af56a..0000000
--- a/src/backend/lib/dllist.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * dllist.c
- *	  this is a simple doubly linked list implementation
- *	  the elements of the lists are void*
- *
- * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- *
- * IDENTIFICATION
- *	  src/backend/lib/dllist.c
- *
- *-------------------------------------------------------------------------
- */
-#include "postgres.h"
-
-#include "lib/dllist.h"
-
-
-Dllist *
-DLNewList(void)
-{
-	Dllist	   *l;
-
-	l = (Dllist *) palloc(sizeof(Dllist));
-
-	l->dll_head = NULL;
-	l->dll_tail = NULL;
-
-	return l;
-}
-
-void
-DLInitList(Dllist *list)
-{
-	list->dll_head = NULL;
-	list->dll_tail = NULL;
-}
-
-/*
- * free up a list and all the nodes in it --- but *not* whatever the nodes
- * might point to!
- */
-void
-DLFreeList(Dllist *list)
-{
-	Dlelem	   *curr;
-
-	while ((curr = DLRemHead(list)) != NULL)
-		pfree(curr);
-
-	pfree(list);
-}
-
-Dlelem *
-DLNewElem(void *val)
-{
-	Dlelem	   *e;
-
-	e = (Dlelem *) palloc(sizeof(Dlelem));
-
-	e->dle_next = NULL;
-	e->dle_prev = NULL;
-	e->dle_val = val;
-	e->dle_list = NULL;
-	return e;
-}
-
-void
-DLInitElem(Dlelem *e, void *val)
-{
-	e->dle_next = NULL;
-	e->dle_prev = NULL;
-	e->dle_val = val;
-	e->dle_list = NULL;
-}
-
-void
-DLFreeElem(Dlelem *e)
-{
-	pfree(e);
-}
-
-void
-DLRemove(Dlelem *e)
-{
-	Dllist	   *l = e->dle_list;
-
-	if (e->dle_prev)
-		e->dle_prev->dle_next = e->dle_next;
-	else
-	{
-		/* must be the head element */
-		Assert(e == l->dll_head);
-		l->dll_head = e->dle_next;
-	}
-	if (e->dle_next)
-		e->dle_next->dle_prev = e->dle_prev;
-	else
-	{
-		/* must be the tail element */
-		Assert(e == l->dll_tail);
-		l->dll_tail = e->dle_prev;
-	}
-
-	e->dle_next = NULL;
-	e->dle_prev = NULL;
-	e->dle_list = NULL;
-}
-
-void
-DLAddHead(Dllist *l, Dlelem *e)
-{
-	e->dle_list = l;
-
-	if (l->dll_head)
-		l->dll_head->dle_prev = e;
-	e->dle_next = l->dll_head;
-	e->dle_prev = NULL;
-	l->dll_head = e;
-
-	if (l->dll_tail == NULL)	/* if this is first element added */
-		l->dll_tail = e;
-}
-
-void
-DLAddTail(Dllist *l, Dlelem *e)
-{
-	e->dle_list = l;
-
-	if (l->dll_tail)
-		l->dll_tail->dle_next = e;
-	e->dle_prev = l->dll_tail;
-	e->dle_next = NULL;
-	l->dll_tail = e;
-
-	if (l->dll_head == NULL)	/* if this is first element added */
-		l->dll_head = e;
-}
-
-Dlelem *
-DLRemHead(Dllist *l)
-{
-	/* remove and return the head */
-	Dlelem	   *result = l->dll_head;
-
-	if (result == NULL)
-		return result;
-
-	if (result->dle_next)
-		result->dle_next->dle_prev = NULL;
-
-	l->dll_head = result->dle_next;
-
-	if (result == l->dll_tail)	/* if the head is also the tail */
-		l->dll_tail = NULL;
-
-	result->dle_next = NULL;
-	result->dle_list = NULL;
-
-	return result;
-}
-
-Dlelem *
-DLRemTail(Dllist *l)
-{
-	/* remove and return the tail */
-	Dlelem	   *result = l->dll_tail;
-
-	if (result == NULL)
-		return result;
-
-	if (result->dle_prev)
-		result->dle_prev->dle_next = NULL;
-
-	l->dll_tail = result->dle_prev;
-
-	if (result == l->dll_head)	/* if the tail is also the head */
-		l->dll_head = NULL;
-
-	result->dle_prev = NULL;
-	result->dle_list = NULL;
-
-	return result;
-}
-
-/* Same as DLRemove followed by DLAddHead, but faster */
-void
-DLMoveToFront(Dlelem *e)
-{
-	Dllist	   *l = e->dle_list;
-
-	if (l->dll_head == e)
-		return;					/* Fast path if already at front */
-
-	Assert(e->dle_prev != NULL);	/* since it's not the head */
-	e->dle_prev->dle_next = e->dle_next;
-
-	if (e->dle_next)
-		e->dle_next->dle_prev = e->dle_prev;
-	else
-	{
-		/* must be the tail element */
-		Assert(e == l->dll_tail);
-		l->dll_tail = e->dle_prev;
-	}
-
-	l->dll_head->dle_prev = e;
-	e->dle_next = l->dll_head;
-	e->dle_prev = NULL;
-	l->dll_head = e;
-	/* We need not check dll_tail, since there must have been > 1 entry */
-}
diff --git a/src/include/lib/dllist.h b/src/include/lib/dllist.h
deleted file mode 100644
index 25ed64c..0000000
--- a/src/include/lib/dllist.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * dllist.h
- *		simple doubly linked list primitives
- *		the elements of the list are void* so the lists can contain anything
- *		Dlelem can only be in one list at a time
- *
- *
- *	 Here's a small example of how to use Dllists:
- *
- *	 Dllist *lst;
- *	 Dlelem *elt;
- *	 void	*in_stuff;	  -- stuff to stick in the list
- *	 void	*out_stuff
- *
- *	 lst = DLNewList();				   -- make a new dllist
- *	 DLAddHead(lst, DLNewElem(in_stuff)); -- add a new element to the list
- *											 with in_stuff as the value
- *	  ...
- *	 elt = DLGetHead(lst);			   -- retrieve the head element
- *	 out_stuff = (void*)DLE_VAL(elt);  -- get the stuff out
- *	 DLRemove(elt);					   -- removes the element from its list
- *	 DLFreeElem(elt);				   -- free the element since we don't
- *										  use it anymore
- *
- *
- * It is also possible to use Dllist objects that are embedded in larger
- * structures instead of being separately malloc'd.  To do this, use
- * DLInitElem() to initialize a Dllist field within a larger object.
- * Don't forget to DLRemove() each field from its list (if any) before
- * freeing the larger object!
- *
- *
- * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- * src/include/lib/dllist.h
- *
- *-------------------------------------------------------------------------
- */
-
-#ifndef DLLIST_H
-#define DLLIST_H
-
-struct Dllist;
-struct Dlelem;
-
-typedef struct Dlelem
-{
-	struct Dlelem *dle_next;	/* next element */
-	struct Dlelem *dle_prev;	/* previous element */
-	void	   *dle_val;		/* value of the element */
-	struct Dllist *dle_list;	/* what list this element is in */
-} Dlelem;
-
-typedef struct Dllist
-{
-	Dlelem	   *dll_head;
-	Dlelem	   *dll_tail;
-} Dllist;
-
-extern Dllist *DLNewList(void); /* allocate and initialize a list header */
-extern void DLInitList(Dllist *list);	/* init a header alloced by caller */
-extern void DLFreeList(Dllist *list);	/* free up a list and all the nodes in
-										 * it */
-extern Dlelem *DLNewElem(void *val);
-extern void DLInitElem(Dlelem *e, void *val);
-extern void DLFreeElem(Dlelem *e);
-extern void DLRemove(Dlelem *e);	/* removes node from list */
-extern void DLAddHead(Dllist *list, Dlelem *node);
-extern void DLAddTail(Dllist *list, Dlelem *node);
-extern Dlelem *DLRemHead(Dllist *list); /* remove and return the head */
-extern Dlelem *DLRemTail(Dllist *list);
-extern void DLMoveToFront(Dlelem *e);	/* move node to front of its list */
-
-/* These are macros for speed */
-#define DLGetHead(list)  ((list)->dll_head)
-#define DLGetTail(list)  ((list)->dll_tail)
-#define DLGetSucc(elem)  ((elem)->dle_next)
-#define DLGetPred(elem)  ((elem)->dle_prev)
-#define DLGetListHdr(elem)	((elem)->dle_list)
-
-#define DLE_VAL(elem)	((elem)->dle_val)
-
-#endif   /* DLLIST_H */
-- 
1.7.12.289.g0ce9864.dirty