gdsl  1.7
Low-level doubly-linked node manipulation module

Typedefs

typedef struct _gdsl_node * _gdsl_node_t
 GDSL low-level doubly linked node type.
typedef int(* _gdsl_node_map_func_t )(const _gdsl_node_t NODE, void *USER_DATA)
 GDSL low-level doubly-linked node map function type.
typedef void(* _gdsl_node_write_func_t )(const _gdsl_node_t NODE, FILE *OUTPUT_FILE, void *USER_DATA)
 GDSL low-level doubly-linked node write function type.

Functions

_gdsl_node_t _gdsl_node_alloc (void)
 Create a new low-level node.
gdsl_element_t _gdsl_node_free (_gdsl_node_t NODE)
 Destroy a low-level node.
_gdsl_node_t _gdsl_node_get_succ (const _gdsl_node_t NODE)
 Get the successor of a low-level node.
_gdsl_node_t _gdsl_node_get_pred (const _gdsl_node_t NODE)
 Get the predecessor of a low-level node.
gdsl_element_t _gdsl_node_get_content (const _gdsl_node_t NODE)
 Get the content of a low-level node.
void _gdsl_node_set_succ (_gdsl_node_t NODE, const _gdsl_node_t SUCC)
 Set the successor of a low-level node.
void _gdsl_node_set_pred (_gdsl_node_t NODE, const _gdsl_node_t PRED)
 Set the predecessor of a low-level node.
void _gdsl_node_set_content (_gdsl_node_t NODE, const gdsl_element_t CONTENT)
 Set the content of a low-level node.
void _gdsl_node_link (_gdsl_node_t NODE1, _gdsl_node_t NODE2)
 Link two low-level nodes together.
void _gdsl_node_unlink (_gdsl_node_t NODE1, _gdsl_node_t NODE2)
 Unlink two low-level nodes.
void _gdsl_node_write (const _gdsl_node_t NODE, const _gdsl_node_write_func_t WRITE_F, FILE *OUTPUT_FILE, void *USER_DATA)
 Write a low-level node to a file.
void _gdsl_node_write_xml (const _gdsl_node_t NODE, const _gdsl_node_write_func_t WRITE_F, FILE *OUTPUT_FILE, void *USER_DATA)
 Write a low-level node to a file into XML.
void _gdsl_node_dump (const _gdsl_node_t NODE, const _gdsl_node_write_func_t WRITE_F, FILE *OUTPUT_FILE, void *USER_DATA)
 Dump the internal structure of a low-level node to a file.

Typedef Documentation

typedef struct _gdsl_node* _gdsl_node_t

GDSL low-level doubly linked node type.

This type is voluntary opaque. Variables of this kind could'nt be directly used, but by the functions of this module.

Definition at line 53 of file _gdsl_node.h.

typedef int(* _gdsl_node_map_func_t)(const _gdsl_node_t NODE, void *USER_DATA)

GDSL low-level doubly-linked node map function type.

Parameters:
NODEThe low-level node to map.
USER_DATAThe user datas to pass to this function.
Returns:
GDSL_MAP_STOP if the mapping must be stopped.
GDSL_MAP_CONT if the mapping must be continued.

Definition at line 62 of file _gdsl_node.h.

typedef void(* _gdsl_node_write_func_t)(const _gdsl_node_t NODE, FILE *OUTPUT_FILE, void *USER_DATA)

GDSL low-level doubly-linked node write function type.

Parameters:
TREEThe low-level doubly-linked node to write.
OUTPUT_FILEThe file where to write NODE.
USER_DATAThe user datas to pass to this function.

Definition at line 72 of file _gdsl_node.h.


Function Documentation

Create a new low-level node.

Allocate a new low-level node data structure.

Note:
Complexity: O( 1 )
Precondition:
nothing.
Returns:
the newly allocated low-level node in case of success.
NULL in case of insufficient memory.
See also:
_gdsl_node_free()

Destroy a low-level node.

Deallocate the low-level node NODE.

Note:
O( 1 )
Precondition:
NODE != NULL
Returns:
the content of NODE (without modification).
See also:
_gdsl_node_alloc()

Get the successor of a low-level node.

Note:
Complexity: O( 1 )
Precondition:
NODE != NULL
Parameters:
NODEThe low-level node which we want to get the successor from.
Returns:
the sucessor of the low-level node NODE if NODE has a successor.
NULL if the low-level node NODE has no successor.
See also:
_gdsl_node_get_pred()
_gdsl_node_set_succ()
_gdsl_node_set_pred()

Get the predecessor of a low-level node.

Note:
Complexity: O( 1 )
Precondition:
NODE != NULL
Parameters:
NODEThe low-level node which we want to get the predecessor from.
Returns:
the predecessor of the low-level node NODE if NODE has a predecessor.
NULL if the low-level node NODE has no predecessor.
See also:
_gdsl_node_get_succ()
_gdsl_node_set_succ()
_gdsl_node_set_pred()

Get the content of a low-level node.

Note:
Complexity: O( 1 )
Precondition:
NODE != NULL
Parameters:
NODEThe low-level node which we want to get the content from.
Returns:
the content of the low-level node NODE if NODE has a content.
NULL if the low-level node NODE has no content.
See also:
_gdsl_node_set_content()
void _gdsl_node_set_succ ( _gdsl_node_t  NODE,
const _gdsl_node_t  SUCC 
)

Set the successor of a low-level node.

Modifie the sucessor of the low-level node NODE to SUCC.

Note:
Complexity: O( 1 )
Precondition:
NODE != NULL
Parameters:
NODEThe low-level node which want to change the successor from.
SUCCThe new successor of NODE.
See also:
_gdsl_node_get_succ()
void _gdsl_node_set_pred ( _gdsl_node_t  NODE,
const _gdsl_node_t  PRED 
)

Set the predecessor of a low-level node.

Modifie the predecessor of the low-level node NODE to PRED.

Note:
Complexity: O( 1 )
Precondition:
NODE != NULL
Parameters:
NODEThe low-level node which want to change the predecessor from.
PREDThe new predecessor of NODE.
See also:
_gdsl_node_get_pred()
void _gdsl_node_set_content ( _gdsl_node_t  NODE,
const gdsl_element_t  CONTENT 
)

Set the content of a low-level node.

Modifie the content of the low-level node NODE to CONTENT.

Note:
Complexity: O( 1 )
Precondition:
NODE != NULL
Parameters:
NODEThe low-level node which want to change the content from.
CONTENTThe new content of NODE.
See also:
_gdsl_node_get_content()
void _gdsl_node_link ( _gdsl_node_t  NODE1,
_gdsl_node_t  NODE2 
)

Link two low-level nodes together.

Link the two low-level nodes NODE1 and NODE2 together. After the link, NODE1's successor is NODE2 and NODE2's predecessor is NODE1.

Note:
Complexity: O( 1 )
Precondition:
NODE1 != NULL & NODE2 != NULL
Parameters:
NODE1The first low-level node to link to NODE2.
NODE2The second low-level node to link from NODE1.
See also:
_gdsl_node_unlink()
void _gdsl_node_unlink ( _gdsl_node_t  NODE1,
_gdsl_node_t  NODE2 
)

Unlink two low-level nodes.

Unlink the two low-level nodes NODE1 and NODE2. After the unlink, NODE1's successor is NULL and NODE2's predecessor is NULL.

Note:
Complexity: O( 1 )
Precondition:
NODE1 != NULL & NODE2 != NULL
Parameters:
NODE1The first low-level node to unlink from NODE2.
NODE2The second low-level node to unlink from NODE1.
See also:
_gdsl_node_link()
void _gdsl_node_write ( const _gdsl_node_t  NODE,
const _gdsl_node_write_func_t  WRITE_F,
FILE *  OUTPUT_FILE,
void *  USER_DATA 
)

Write a low-level node to a file.

Write the low-level node NODE to OUTPUT_FILE, using WRITE_F function. Additionnal USER_DATA argument could be passed to WRITE_F.

Note:
Complexity: O( 1 )
Precondition:
NODE != NULL & WRITE_F != NULL & OUTPUT_FILE != NULL
Parameters:
NODEThe low-level node to write.
WRITE_FThe write function.
OUTPUT_FILEThe file where to write NODE.
USER_DATAUser's datas passed to WRITE_F.
See also:
_gdsl_node_write_xml()
_gdsl_node_dump()
void _gdsl_node_write_xml ( const _gdsl_node_t  NODE,
const _gdsl_node_write_func_t  WRITE_F,
FILE *  OUTPUT_FILE,
void *  USER_DATA 
)

Write a low-level node to a file into XML.

Write the low-level node NODE to OUTPUT_FILE, into XML language. If WRITE_F != NULL, then uses WRITE_F function to write NODE to OUTPUT_FILE. Additionnal USER_DATA argument could be passed to WRITE_F.

Note:
Complexity: O( 1 )
Precondition:
NODE != NULL & OUTPUT_FILE != NULL
Parameters:
NODEThe low-level node to write.
WRITE_FThe write function.
OUTPUT_FILEThe file where to write NODE.
USER_DATAUser's datas passed to WRITE_F.
See also:
_gdsl_node_write()
_gdsl_node_dump()
void _gdsl_node_dump ( const _gdsl_node_t  NODE,
const _gdsl_node_write_func_t  WRITE_F,
FILE *  OUTPUT_FILE,
void *  USER_DATA 
)

Dump the internal structure of a low-level node to a file.

Dump the structure of the low-level node NODE to OUTPUT_FILE. If WRITE_F != NULL, then uses WRITE_F function to write NODE to OUTPUT_FILE. Additionnal USER_DATA argument could be passed to WRITE_F.

Note:
Complexity: O( 1 )
Precondition:
NODE != NULL & OUTPUT_FILE != NULL
Parameters:
NODEThe low-level node to dump.
WRITE_FThe write function.
OUTPUT_FILEThe file where to write NODE.
USER_DATAUser's datas passed to WRITE_F.
See also:
_gdsl_node_write()
_gdsl_node_write_xml()