Xfce Generics

Xfce Generics — Generic data types and related functions.

Functions

#define XFCE_GENERIC_STACK()
#define xfce_stack_new()
#define xfce_stack_free()
#define xfce_stack_top()
#define xfce_stack_pop()
#define xfce_stack_push()

Includes

#include <libxfce4util/libxfce4util.h>

Description

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);


Functions

XFCE_GENERIC_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.

Parameters

Type

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.

 

xfce_stack_new()

#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);

Parameters

StackType

Type of stack declared with XFCE_GENERIC_STACK.

 

xfce_stack_free()

#define             xfce_stack_free(stack)

Frees a stack, that was allocated using xfce_stack_new.

Parameters

stack

A stack object.

 

xfce_stack_top()

#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.


xfce_stack_pop()

#define             xfce_stack_pop(stack)

Removes the top element from stack.


xfce_stack_push()

#define             xfce_stack_push(stack, value)

Pushes a new value on top of stack.

Types and Values