/*
- * Project: libFIRM
- * File name: ir/adt/pdeq.c
- * Purpose: Pdeq --- double ended queue of generic pointers.
- * Author: Christian von Roques
- * Modified by:
- * Created: 1999 by getting from fiasco
- * CVS-ID: $Id$
- * Copyright: (c) 1995, 1996 Christian von Roques
- * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
+ * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved.
+ *
+ * This file is part of libFirm.
+ *
+ * This file may be distributed and/or modified under the terms of the
+ * GNU General Public License version 2 as published by the Free Software
+ * Foundation and appearing in the file LICENSE.GPL included in the
+ * packaging of this file.
+ *
+ * Licensees holding valid libFirm Professional Edition licenses may use
+ * this file in accordance with the libFirm Commercial License.
+ * Agreement provided with the Software.
+ *
+ * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+ * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
*/
-
+/**
+ * @file
+ * @brief double ended queue of generic pointers.
+ * @author Christian von Roques
+ * @date 1999 by getting from fiasco
+ * @version $Id$
+ */
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
+#endif
+#ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+# include <string.h>
+#endif
+
#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-# ifdef HAVE_STRING_H
-# include <string.h>
-# endif
#include "fourcc.h"
#include "pdeq.h"
*/
struct pdeq {
#ifndef NDEBUG
- unsigned magic; /**< debug magic */
+ unsigned magic; /**< debug magic */
#endif
- pdeq *l_end, *r_end; /**< left and right ends of the deque */
- pdeq *l, *r; /**< left and right neighbour */
- int n; /**< number of elements in the current chunk */
- int p; /**< the read/write pointer */
- const void *data[1]; /**< storage for elements */
+ pdeq *l_end, *r_end; /**< left and right ends of the queue */
+ pdeq *l, *r; /**< left and right neighbor */
+ int n; /**< number of elements in the current chunk */
+ int p; /**< the read/write pointer */
+ const void *data[1]; /**< storage for elements */
};
* cache of unused, pdeq blocks to speed up new_pdeq and del_pdeq.
* +1 for compilers that can't grok empty arrays
*/
-pdeq *pdeq_block_cache[TUNE_NSAVED_PDEQS+1];
+static pdeq *pdeq_block_cache[TUNE_NSAVED_PDEQS+1];
/**
* Number of pdeqs in pdeq_store.
*/
-unsigned pdeqs_cached;
+static unsigned pdeqs_cached;
/**
* Free a pdeq chunk, put in into the cache if possible.
if (TUNE_NSAVED_PDEQS && pdeqs_cached) {
p = pdeq_block_cache[--pdeqs_cached];
} else {
- p = xmalloc (PREF_MALLOC_SIZE);
+ p = xmalloc(PREF_MALLOC_SIZE);
}
return p;
}
{
pdeq *q;
-
assert ( dq
&& (dq->magic == PDEQ_MAGIC1)
&& (dq->l_end && dq->r_end));
}
/* Add a pointer to the right site of a double ended pointer list. */
-pdeq * pdeq_putr(pdeq *dq, const void *x)
+pdeq *pdeq_putr(pdeq *dq, const void *x)
{
pdeq *rdq;
int n;
if (n + p > NDATA) {
int nn = NDATA - p;
- memcpy(d, &q->data[p], nn * sizeof(void *)); d += nn;
+ memcpy((void *) d, &q->data[p], nn * sizeof(void *)); d += nn;
p = 0; n -= nn;
}
- memcpy(d, &q->data[p], n * sizeof(void *)); d += n;
+ memcpy((void *) d, &q->data[p], n * sizeof(void *)); d += n;
q = q->r;
}