| libxfce4util Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | ||||
#include <libxfce4util/libxfce4util.h> #define XFCE_GENERIC_STACK (Type) #define xfce_stack_new (StackType) #define xfce_stack_free (stack) #define xfce_stack_top (stack) #define xfce_stack_pop (stack) #define xfce_stack_push (stack, value)
This module provides generic data types - as known from the C++ standard template library - for the brave C programmer. Since C does not provide any template mechanism, these generics are completely based on C preprocessor macros and the functions offer no type safety at all (though some common mistakes will surely be caught by the C compiler).
Example 2. Using a generic stack
typedef XFCE_GENERIC_STACK(int) IntStack;
IntStack *stack = xfce_stack_new (IntStack);
xfce_stack_push (stack, 0);
xfce_stack_push (stack, 1);
printf ("Top is %d\n", xfce_stack_top (stack));
xfce_stack_pop (stack);
printf ("Top is %d\n", xfce_stack_top (stack));
xfce_stack_free (stack);
#define XFCE_GENERIC_STACK(Type)
This macro is used to create a new stack data type which elements are of
Type. For example, to create a stack type that handles elements of type
double, you'd write the following
typedef XFCE_GENERIC_STACK(double) MyDoubleStack;
and furtheron refer to your stack type as MyDoubleStack.
|
Data type of the elements that should be handled by the stack. Can be any valid data type from simple int's to complex structures. |
#define xfce_stack_new(StackType)
Creates a new instance of StackType and returns a pointer to the newly
created instance. For example, imagine you declared a type MyDoubleStack
as shown above, you can instantiate this type with
MyDoubleStack *my_stack = xfce_stack_new (MyDoubleStack);
|
Type of stack declared with XFCE_GENERIC_STACK. |
#define xfce_stack_free(stack)
Frees a stack, that was allocated using xfce_stack_new.
|
A stack object. |
#define xfce_stack_top(stack)
Returns the top element from stack. Note that this function does not
pop the top element, it just returns it.
|