Name

Trash Stacks — maintain a stack of unused allocated memory chunks.


Library

glib.lib


Synopsis

#include <glib.h>

GTrashStack;
void g_trash_stack_push (GTrashStack **stack_p, gpointer data_p);
gpointer g_trash_stack_pop (GTrashStack **stack_p);
gpointer g_trash_stack_peek (GTrashStack **stack_p);
guint g_trash_stack_height (GTrashStack **stack_p);

Detailed Description

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.


Details

GTrashStack

typedef struct {
GTrashStack *next;
} GTrashStack;

Each piece of memory that is pushed onto the stack is cast to a GTrashStack*.

GTrashStack *next; pointer to the previous element of the stack, gets stored in the first sizeof (gpointer) bytes of the element.

g_trash_stack_push ()

void  g_trash_stack_push    (GTrashStack **stack_p, gpointer data_p);

Pushes a piece of memory onto a GTrashStack.

stack_p : a pointer to a GTrashStack.
data_p : the piece of memory to push on the stack.

g_trash_stack_pop ()

gpointer  g_trash_stack_pop  (GTrashStack **stack_p);

Pops a piece of memory off a GTrashStack.

stack_p : a pointer to a GTrashStack.
Returns : the element at the top of the stack.

g_trash_stack_peek ()

gpointer  g_trash_stack_peek   (GTrashStack **stack_p);

Returns the element at the top of a GTrashStack.

stack_p : a pointer to a GTrashStack.
Returns : the element at the top of the stack.

g_trash_stack_height ()

guint  g_trash_stack_height   (GTrashStack **stack_p);

Returns the height of a GTrashStack.

stack_p : a pointer to a GTrashStack.
Returns : the height of the stack.


Feedback

For additional information or queries on this page send feedback


© 2005-2007 Nokia

Top