Provided by: libzycore-doc_1.5.2-1_all 

NAME
include/Zycore/List.h
SYNOPSIS
#include <Zycore/Allocator.h>
#include <Zycore/Object.h>
#include <Zycore/Status.h>
#include <Zycore/Types.h>
Classes
struct ZyanListNode_
struct ZyanList_
Macros
#define ZYAN_LIST_INITIALIZER
#define ZYAN_LIST_GET(type, node) (*(const type*)ZyanListGetNodeData(node))
Typedefs
typedef struct ZyanListNode_ ZyanListNode
typedef struct ZyanList_ ZyanList
Functions
ZYCORE_EXPORT ZYAN_REQUIRES_LIBC ZyanStatus ZyanListInit (ZyanList *list, ZyanUSize element_size,
ZyanMemberProcedure destructor)
ZYCORE_EXPORT ZyanStatus ZyanListInitEx (ZyanList *list, ZyanUSize element_size, ZyanMemberProcedure
destructor, ZyanAllocator *allocator)
ZYCORE_EXPORT ZyanStatus ZyanListInitCustomBuffer (ZyanList *list, ZyanUSize element_size,
ZyanMemberProcedure destructor, void *buffer, ZyanUSize capacity)
ZYCORE_EXPORT ZyanStatus ZyanListDestroy (ZyanList *list)
ZYCORE_EXPORT ZYAN_REQUIRES_LIBC ZyanStatus ZyanListDuplicate (ZyanList *destination, const ZyanList
*source)
ZYCORE_EXPORT ZyanStatus ZyanListDuplicateEx (ZyanList *destination, const ZyanList *source,
ZyanAllocator *allocator)
ZYCORE_EXPORT ZyanStatus ZyanListDuplicateCustomBuffer (ZyanList *destination, const ZyanList *source,
void *buffer, ZyanUSize capacity)
ZYCORE_EXPORT ZyanStatus ZyanListGetHeadNode (const ZyanList *list, const ZyanListNode **node)
ZYCORE_EXPORT ZyanStatus ZyanListGetTailNode (const ZyanList *list, const ZyanListNode **node)
ZYCORE_EXPORT ZyanStatus ZyanListGetPrevNode (const ZyanListNode **node)
ZYCORE_EXPORT ZyanStatus ZyanListGetNextNode (const ZyanListNode **node)
ZYCORE_EXPORT const void * ZyanListGetNodeData (const ZyanListNode *node)
ZYCORE_EXPORT ZyanStatus ZyanListGetNodeDataEx (const ZyanListNode *node, const void **value)
ZYCORE_EXPORT void * ZyanListGetNodeDataMutable (const ZyanListNode *node)
ZYCORE_EXPORT ZyanStatus ZyanListGetNodeDataMutableEx (const ZyanListNode *node, void **value)
ZYCORE_EXPORT ZyanStatus ZyanListSetNodeData (const ZyanList *list, const ZyanListNode *node, const void
*value)
ZYCORE_EXPORT ZyanStatus ZyanListPushBack (ZyanList *list, const void *item)
ZYCORE_EXPORT ZyanStatus ZyanListPushFront (ZyanList *list, const void *item)
ZYCORE_EXPORT ZyanStatus ZyanListEmplaceBack (ZyanList *list, void **item, ZyanMemberFunction
constructor)
ZYCORE_EXPORT ZyanStatus ZyanListEmplaceFront (ZyanList *list, void **item, ZyanMemberFunction
constructor)
ZYCORE_EXPORT ZyanStatus ZyanListPopBack (ZyanList *list)
ZYCORE_EXPORT ZyanStatus ZyanListPopFront (ZyanList *list)
ZYCORE_EXPORT ZyanStatus ZyanListRemove (ZyanList *list, const ZyanListNode *node)
ZYCORE_EXPORT ZyanStatus ZyanListRemoveRange (ZyanList *list, const ZyanListNode *first, const
ZyanListNode *last)
ZYCORE_EXPORT ZyanStatus ZyanListClear (ZyanList *list)
ZYCORE_EXPORT ZyanStatus ZyanListResize (ZyanList *list, ZyanUSize size)
ZYCORE_EXPORT ZyanStatus ZyanListResizeEx (ZyanList *list, ZyanUSize size, const void *initializer)
ZYCORE_EXPORT ZyanStatus ZyanListGetSize (const ZyanList *list, ZyanUSize *size)
Detailed Description
Implements a doubly linked list.
Macro Definition Documentation
#define ZYAN_LIST_GET(type, node) (*(const type*)ZyanListGetNodeData(node))
Returns the data value of the given node.
Parameters
type The desired value type.
node A pointer to the ZyanListNode struct.
Returns
The data value of the given node.
Note that this function is unsafe and might dereference a null-pointer.
#define ZYAN_LIST_INITIALIZER
Value:.PP
{ \
/* allocator */ ZYAN_NULL, \
/* size */ 0, \
/* element_size */ 0, \
/* head */ ZYAN_NULL, \
/* destructor */ ZYAN_NULL, \
/* tail */ ZYAN_NULL, \
/* buffer */ ZYAN_NULL, \
/* capacity */ 0, \
/* first_unused */ ZYAN_NULL \
}
Defines an uninitialized ZyanList instance.
Typedef Documentation
typedef struct ZyanList_ ZyanList
Defines the ZyanList struct.
All fields in this struct should be considered as 'private'. Any changes may lead to unexpected behavior.
typedef struct ZyanListNode_ ZyanListNode
Defines the ZyanListNode struct.
All fields in this struct should be considered as 'private'. Any changes may lead to unexpected behavior.
Function Documentation
ZYCORE_EXPORT ZyanStatus ZyanListClear (ZyanList * list)
Erases all elements of the list.
Parameters
list A pointer to the ZyanList instance.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListDestroy (ZyanList * list)
Destroys the given ZyanList instance.
Parameters
list A pointer to the ZyanList instance.
Returns
A zyan status code.
ZYCORE_EXPORT ZYAN_REQUIRES_LIBC ZyanStatus ZyanListDuplicate (ZyanList * destination, const ZyanList *
source)
Initializes a new ZyanList instance by duplicating an existing list.
Parameters
destination A pointer to the (uninitialized) destination ZyanList instance.
source A pointer to the source list.
Returns
A zyan status code.
The memory for the list is dynamically allocated by the default allocator.
Finalization with ZyanListDestroy is required for all instances created by this function.
ZYCORE_EXPORT ZyanStatus ZyanListDuplicateCustomBuffer (ZyanList * destination, const ZyanList * source, void
* buffer, ZyanUSize capacity)
Initializes a new ZyanList instance by duplicating an existing list and configures it to use a custom
user defined buffer with a fixed size.
Parameters
destination A pointer to the (uninitialized) destination ZyanList instance.
source A pointer to the source list.
buffer A pointer to the buffer that is used as storage for the elements.
capacity The maximum capacity (number of bytes) of the buffer including the space required for the
list-nodes.
This function will fail, if the capacity of the buffer is not sufficient to store all elements of the
source list.
Returns
A zyan status code.
The buffer capacity required to store n elements of type T is be calculated by: size = n *
sizeof(ZyanListNode) + n * sizeof(T)
Finalization is not required for instances created by this function.
ZYCORE_EXPORT ZyanStatus ZyanListDuplicateEx (ZyanList * destination, const ZyanList * source, ZyanAllocator
* allocator)
Initializes a new ZyanList instance by duplicating an existing list and sets a custom allocator.
Parameters
destination A pointer to the (uninitialized) destination ZyanList instance.
source A pointer to the source list.
allocator A pointer to a ZyanAllocator instance.
Returns
A zyan status code.
Finalization with ZyanListDestroy is required for all instances created by this function.
ZYCORE_EXPORT ZyanStatus ZyanListEmplaceBack (ZyanList * list, void ** item, ZyanMemberFunction constructor)
Constructs an item in-place at the end of the list.
Parameters
list A pointer to the ZyanList instance.
item Receives a pointer to the new item.
constructor The constructor callback or ZYAN_NULL. The new item will be in undefined state, if no
constructor was passed.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListEmplaceFront (ZyanList * list, void ** item, ZyanMemberFunction constructor)
Constructs an item in-place at the beginning of the list.
Parameters
list A pointer to the ZyanList instance.
item Receives a pointer to the new item.
constructor The constructor callback or ZYAN_NULL. The new item will be in undefined state, if no
constructor was passed.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListGetHeadNode (const ZyanList * list, const ZyanListNode ** node)
Returns a pointer to the first ZyanListNode struct of the given list.
Parameters
list A pointer to the ZyanList instance.
node Receives a pointer to the first ZyanListNode struct of the list.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListGetNextNode (const ZyanListNode ** node)
Receives a pointer to the next ZyanListNode struct linked to the passed one.
Parameters
node Receives a pointer to the next ZyanListNode struct linked to the passed one.
Returns
A zyan status code.
ZYCORE_EXPORT const void * ZyanListGetNodeData (const ZyanListNode * node)
Returns a constant pointer to the data of the given node.
Parameters
node A pointer to the ZyanListNode struct.
Returns
A constant pointer to the the data of the given node or ZYAN_NULL, if an error occured.
Take a look at ZyanListGetNodeDataEx, if you need a function that returns a zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListGetNodeDataEx (const ZyanListNode * node, const void ** value)
Returns a constant pointer to the data of the given node..
Parameters
node A pointer to the ZyanListNode struct.
value Receives a constant pointer to the data of the given node.
Take a look at ZyanListGetNodeData, if you need a function that directly returns a pointer.
Returns
A zyan status code.
ZYCORE_EXPORT void * ZyanListGetNodeDataMutable (const ZyanListNode * node)
Returns a mutable pointer to the data of the given node.
Parameters
node A pointer to the ZyanListNode struct.
Returns
A mutable pointer to the the data of the given node or ZYAN_NULL, if an error occured.
Take a look at ZyanListGetPointerMutableEx instead, if you need a function that returns a zyan status
code.
ZYCORE_EXPORT ZyanStatus ZyanListGetNodeDataMutableEx (const ZyanListNode * node, void ** value)
Returns a mutable pointer to the data of the given node..
Parameters
node A pointer to the ZyanListNode struct.
value Receives a mutable pointer to the data of the given node.
Take a look at ZyanListGetNodeDataMutable, if you need a function that directly returns a pointer.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListGetPrevNode (const ZyanListNode ** node)
Receives a pointer to the previous ZyanListNode struct linked to the passed one.
Parameters
node Receives a pointer to the previous ZyanListNode struct linked to the passed one.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListGetSize (const ZyanList * list, ZyanUSize * size)
Returns the current size of the list.
Parameters
list A pointer to the ZyanList instance.
size Receives the size of the list.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListGetTailNode (const ZyanList * list, const ZyanListNode ** node)
Returns a pointer to the last ZyanListNode struct of the given list.
Parameters
list A pointer to the ZyanList instance.
node Receives a pointer to the last ZyanListNode struct of the list.
Returns
A zyan status code.
ZYCORE_EXPORT ZYAN_REQUIRES_LIBC ZyanStatus ZyanListInit (ZyanList * list, ZyanUSize element_size,
ZyanMemberProcedure destructor)
Initializes the given ZyanList instance.
Parameters
list A pointer to the ZyanList instance.
element_size The size of a single element in bytes.
destructor A destructor callback that is invoked every time an item is deleted, or ZYAN_NULL if not
needed.
Returns
A zyan status code.
The memory for the list elements is dynamically allocated by the default allocator.
Finalization with ZyanListDestroy is required for all instances created by this function.
ZYCORE_EXPORT ZyanStatus ZyanListInitCustomBuffer (ZyanList * list, ZyanUSize element_size,
ZyanMemberProcedure destructor, void * buffer, ZyanUSize capacity)
Initializes the given ZyanList instance and configures it to use a custom user defined buffer with a
fixed size.
Parameters
list A pointer to the ZyanList instance.
element_size The size of a single element in bytes.
destructor A destructor callback that is invoked every time an item is deleted, or ZYAN_NULL if not
needed.
buffer A pointer to the buffer that is used as storage for the elements.
capacity The maximum capacity (number of bytes) of the buffer including the space required for the
list-nodes.
Returns
A zyan status code.
The buffer capacity required to store n elements of type T is be calculated by: size = n *
sizeof(ZyanListNode) + n * sizeof(T)
Finalization is not required for instances created by this function.
ZYCORE_EXPORT ZyanStatus ZyanListInitEx (ZyanList * list, ZyanUSize element_size, ZyanMemberProcedure
destructor, ZyanAllocator * allocator)
Initializes the given ZyanList instance and sets a custom allocator.
Parameters
list A pointer to the ZyanList instance.
element_size The size of a single element in bytes.
destructor A destructor callback that is invoked every time an item is deleted, or ZYAN_NULL if not
needed.
allocator A pointer to a ZyanAllocator instance.
Returns
A zyan status code.
Finalization with ZyanListDestroy is required for all instances created by this function.
ZYCORE_EXPORT ZyanStatus ZyanListPopBack (ZyanList * list)
Removes the last element of the list.
Parameters
list A pointer to the ZyanList instance.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListPopFront (ZyanList * list)
Removes the firstelement of the list.
Parameters
list A pointer to the ZyanList instance.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListPushBack (ZyanList * list, const void * item)
Adds a new item to the end of the list.
Parameters
list A pointer to the ZyanList instance.
item A pointer to the item to add.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListPushFront (ZyanList * list, const void * item)
Adds a new item to the beginning of the list.
Parameters
list A pointer to the ZyanList instance.
item A pointer to the item to add.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListRemove (ZyanList * list, const ZyanListNode * node)
Removes the given node from the list.
Parameters
list A pointer to the ZyanList instance.
node A pointer to the ZyanListNode struct.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListRemoveRange (ZyanList * list, const ZyanListNode * first, const ZyanListNode
* last)
Removes multiple nodes from the list.
Parameters
list A pointer to the ZyanList instance.
first A pointer to the first node.
last A pointer to the last node.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListResize (ZyanList * list, ZyanUSize size)
Resizes the given ZyanList instance.
Parameters
list A pointer to the ZyanList instance.
size The new size of the list.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListResizeEx (ZyanList * list, ZyanUSize size, const void * initializer)
Resizes the given ZyanList instance.
Parameters
list A pointer to the ZyanList instance.
size The new size of the list.
initializer A pointer to a value to be used as initializer for new items.
Returns
A zyan status code.
ZYCORE_EXPORT ZyanStatus ZyanListSetNodeData (const ZyanList * list, const ZyanListNode * node, const void *
value)
Assigns a new data value to the given node.
Parameters
list A pointer to the ZyanList instance.
node A pointer to the ZyanListNode struct.
value The value to assign.
Returns
A zyan status code.
Author
Generated automatically by Doxygen for Zycore from the source code.
Zycore Version 1.5.2.0 include/Zycore/List.h(3)