dnl - Generic Double Linked List

Module Description

The dnl module implements a double linked list that can handle variable size nodes. It is the base module for more specialised modules, for example the double linked cell list [dcl] module.

Module Words

List structure

dnl% ( -- n )
Get the required space for a dnl variable

List creation, initialisation and destruction

dnl-init ( dnl -- )
Initialise the list

dnl-(free) ( xt dnl -- )
Free the nodes in the list from the heap using xt

dnl-create ( "<spaces>name" -- ; -- dnl )
Create a named dnl list in the dictionary

dnl-new ( -- dnl )
Create a new dnl list on the heap

dnl-free ( dnl -- )
Free the list from the heap

Member words

dnl-length@ ( dnl -- u )
Get the number of nodes in the list

dnl-empty? ( dnl -- flag )
Check for empty list

dnl-first@ ( dnl -- dnn | nil )
Get the first node in the list

dnl-last@ ( dnl -- dnn | nil )
Get the last node in the list

List words

dnl-append ( dnn dnl -- )
Append the node dnn in the list

dnl-prepend ( dnn dnl -- )
Prepend the node dnn in the list

dnl-insert-before ( dnn1 dnn2 dnl -- )
Insert the new node dnn1 before the reference node dnn2 in the list

dnl-insert-after ( dnn1 dnn2 dnl -- )
Insert the new node dnn1 after the reference node dnn2 in the list

dnl-remove ( dnn dnl -- )
Remove the node dnn from the list

Index words

dnl-index? ( n dnl -- flag )
Check if the index n is valid in the list

dnl-get ( n dnl -- dnn )
Get the nth node from the list

dnl-insert ( dnn n dnl -- )
Insert the node dnn before the nth node in the list

dnl-delete ( n dnl -- dnn )
Delete the nth node from the list, return the deleted node

LIFO words

dnl-push ( dnn dnl -- )
Push the node dnn at the end of the list

dnl-pop ( dnl -- dnn | nil )
Pop the node dnn from the end of the list

dnl-tos ( dnl -- dnn | nil )
Get the node dnn from the end of the list

FIFO words

dnl-enqueue ( dnn dnl -- )
Enqueue the node dnn at the start of the list

dnl-dequeue ( dnl -- dnn | nil )
Dequeue the node dnn from the end of the list

Special words

dnl-execute ( i*x xt dnl -- j*x )
Execute xt for every node in list

dnl-reverse ( dnl -- )
Reverse or mirror the list

Inspection

dnl-dump ( dnl -- )
Dump the list


generated 10-Apr-2008 by ofcfrth-0.5.0