threads.sgml
timers.sgml
timezone.sgml
+trash_stack.sgml
trees-binary.sgml
trees-nary.sgml
unicode.sgml
+++ /dev/null
-<!-- ##### SECTION Title ##### -->
-Trash Stacks
-
-<!-- ##### SECTION Short_Description ##### -->
-maintain a stack of unused allocated memory chunks
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-A #GTrashStack is an efficient way to keep a stack of unused allocated
-memory chunks. Each memory chunk is required to be large enough to hold
-a #gpointer. This allows the stack to be maintained without any space
-overhead, since the stack pointers can be stored inside the memory chunks.
-</para>
-<para>
-There is no function to create a #GTrashStack. A %NULL #GTrashStack*
-is a perfectly valid empty stack.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### SECTION Image ##### -->
-
-
-<!-- ##### STRUCT GTrashStack ##### -->
-<para>
-Each piece of memory that is pushed onto the stack
-is cast to a <structname>GTrashStack*</structname>.
-</para>
-
-@next: pointer to the previous element of the stack,
-gets stored in the first <literal>sizeof (gpointer)</literal>
-bytes of the element.
-
-<!-- ##### FUNCTION g_trash_stack_push ##### -->
-<para>
-Pushes a piece of memory onto a #GTrashStack.
-</para>
-
-@stack_p: a pointer to a #GTrashStack.
-@data_p: the piece of memory to push on the stack.
-
-
-<!-- ##### FUNCTION g_trash_stack_pop ##### -->
-<para>
-Pops a piece of memory off a #GTrashStack.
-</para>
-
-@stack_p: a pointer to a #GTrashStack.
-@Returns: the element at the top of the stack.
-
-
-<!-- ##### FUNCTION g_trash_stack_peek ##### -->
-<para>
-Returns the element at the top of a #GTrashStack which may be %NULL.
-</para>
-
-@stack_p: a pointer to a #GTrashStack.
-@Returns: the element at the top of the stack.
-
-
-<!-- ##### FUNCTION g_trash_stack_height ##### -->
-<para>
-Returns the height of a #GTrashStack.
-Note that execution of this function is of O(N) complexity
-where N denotes the number of items on the stack.
-</para>
-
-@stack_p: a pointer to a #GTrashStack.
-@Returns: the height of the stack.
-
-
gthreadpool.c \
gtimer.c \
gtimezone.c \
+ gtrashstack.c \
gtree.c \
guniprop.c \
gutf8.c \
gthreadpool.h \
gtimer.h \
gtimezone.h \
+ gtrashstack.h \
gtree.h \
gtypes.h \
gunicode.h \
#include <glib/gthreadpool.h>
#include <glib/gtimer.h>
#include <glib/gtimezone.h>
+#include <glib/gtrashstack.h>
#include <glib/gtree.h>
#include <glib/gtypes.h>
#include <glib/gunicode.h>
#include "gmem.h" /* gslice.h */
#include "gstrfuncs.h"
#include "gutils.h"
+#include "gtrashstack.h"
#include "gtestutils.h"
#include "gthread.h"
#include "glib_trace.h"
--- /dev/null
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1998 Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Modified by the GLib Team and others 1997-2000. See the AUTHORS
+ * file for a list of people on the GLib Team. See the ChangeLog
+ * files for a list of changes. These files are distributed with
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
+#include "config.h"
+
+/**
+ * SECTION:trash_stack
+ * @title: Trash Stacks
+ * @short_description: maintain a stack of unused allocated memory chunks
+ *
+ * A #GTrashStack is an efficient way to keep a stack of unused allocated
+ * memory chunks. Each memory chunk is required to be large enough to hold
+ * a #gpointer. This allows the stack to be maintained without any space
+ * overhead, since the stack pointers can be stored inside the memory chunks.
+ *
+ * There is no function to create a #GTrashStack. A %NULL #GTrashStack*
+ * is a perfectly valid empty stack.
+ */
+
+/**
+ * GTrashStack:
+ * @next: pointer to the previous element of the stack,
+ * gets stored in the first <literal>sizeof (gpointer)</literal>
+ * bytes of the element
+ *
+ * Each piece of memory that is pushed onto the stack
+ * is cast to a <structname>GTrashStack*</structname>.
+ */
+
+/**
+ * g_trash_stack_push:
+ * @stack_p: a #GTrashStack
+ * @data_p: the piece of memory to push on the stack
+ *
+ * Pushes a piece of memory onto a #GTrashStack.
+ */
+
+/**
+ * g_trash_stack_pop:
+ * @stack_p: a #GTrashStack
+ *
+ * Pops a piece of memory off a #GTrashStack.
+ *
+ * Returns: the element at the top of the stack
+ */
+
+/**
+ * g_trash_stack_peek:
+ * @stack_p: a #GTrashStack
+ *
+ * Returns the element at the top of a #GTrashStack
+ * which may be %NULL.
+ *
+ * Returns: the element at the top of the stack
+ */
+
+/**
+ * g_trash_stack_height:
+ * @stack_p: a #GTrashStack
+ *
+ * Returns the height of a #GTrashStack.
+ *
+ * Note that execution of this function is of O(N) complexity
+ * where N denotes the number of items on the stack.
+ *
+ * Returns: the height of the stack
+ */
+
+#define G_IMPLEMENT_INLINES 1
+#define __G_TRASH_STACK_C__
+#include "gtrashstack.h"
--- /dev/null
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Modified by the GLib Team and others 1997-2000. See the AUTHORS
+ * file for a list of people on the GLib Team. See the ChangeLog
+ * files for a list of changes. These files are distributed with
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#ifndef __G_TRASH_STACK_H__
+#define __G_TRASH_STACK_H__
+
+#include <glib/gutils.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GTrashStack GTrashStack;
+struct _GTrashStack
+{
+ GTrashStack *next;
+};
+
+G_INLINE_FUNC void g_trash_stack_push (GTrashStack **stack_p,
+ gpointer data_p);
+G_INLINE_FUNC gpointer g_trash_stack_pop (GTrashStack **stack_p);
+G_INLINE_FUNC gpointer g_trash_stack_peek (GTrashStack **stack_p);
+G_INLINE_FUNC guint g_trash_stack_height (GTrashStack **stack_p);
+
+#if defined (G_CAN_INLINE) || defined (__G_TRASH_STACK_C__)
+
+G_INLINE_FUNC void
+g_trash_stack_push (GTrashStack **stack_p,
+ gpointer data_p)
+{
+ GTrashStack *data = (GTrashStack *) data_p;
+
+ data->next = *stack_p;
+ *stack_p = data;
+}
+G_INLINE_FUNC gpointer
+g_trash_stack_pop (GTrashStack **stack_p)
+{
+ GTrashStack *data;
+
+ data = *stack_p;
+ if (data)
+ {
+ *stack_p = data->next;
+ /* NULLify private pointer here, most platforms store NULL as
+ * subsequent 0 bytes
+ */
+ data->next = NULL;
+ }
+
+ return data;
+}
+G_INLINE_FUNC gpointer
+g_trash_stack_peek (GTrashStack **stack_p)
+{
+ GTrashStack *data;
+
+ data = *stack_p;
+
+ return data;
+}
+G_INLINE_FUNC guint
+g_trash_stack_height (GTrashStack **stack_p)
+{
+ GTrashStack *data;
+ guint i = 0;
+
+ for (data = *stack_p; data; data = data->next)
+ i++;
+
+ return i;
+}
+
+#endif /* G_CAN_INLINE || __G_TRASH_STACK_C__ */
+
+G_END_DECLS
+
+#endif /* __G_UTILS_H__ */
gint nth_bit) G_GNUC_CONST;
G_INLINE_FUNC guint g_bit_storage (gulong number) G_GNUC_CONST;
-/* Trash Stacks
- * elements need to be >= sizeof (gpointer)
- */
-typedef struct _GTrashStack GTrashStack;
-struct _GTrashStack
-{
- GTrashStack *next;
-};
-
-G_INLINE_FUNC void g_trash_stack_push (GTrashStack **stack_p,
- gpointer data_p);
-G_INLINE_FUNC gpointer g_trash_stack_pop (GTrashStack **stack_p);
-G_INLINE_FUNC gpointer g_trash_stack_peek (GTrashStack **stack_p);
-G_INLINE_FUNC guint g_trash_stack_height (GTrashStack **stack_p);
-
/* inline function implementations
*/
#if defined (G_CAN_INLINE) || defined (__G_UTILS_C__)
return n_bits;
#endif
}
-G_INLINE_FUNC void
-g_trash_stack_push (GTrashStack **stack_p,
- gpointer data_p)
-{
- GTrashStack *data = (GTrashStack *) data_p;
-
- data->next = *stack_p;
- *stack_p = data;
-}
-G_INLINE_FUNC gpointer
-g_trash_stack_pop (GTrashStack **stack_p)
-{
- GTrashStack *data;
-
- data = *stack_p;
- if (data)
- {
- *stack_p = data->next;
- /* NULLify private pointer here, most platforms store NULL as
- * subsequent 0 bytes
- */
- data->next = NULL;
- }
-
- return data;
-}
-G_INLINE_FUNC gpointer
-g_trash_stack_peek (GTrashStack **stack_p)
-{
- GTrashStack *data;
-
- data = *stack_p;
-
- return data;
-}
-G_INLINE_FUNC guint
-g_trash_stack_height (GTrashStack **stack_p)
-{
- GTrashStack *data;
- guint i = 0;
-
- for (data = *stack_p; data; data = data->next)
- i++;
-
- return i;
-}
#endif /* G_CAN_INLINE || __G_UTILS_C__ */
/* Glib version.