snl - Generic Single Linked List
Module Description
The snl module implements a single linked list that can store variable size
nodes. It is the base module for more specialized modules, for example the
single linked cell list [scl] module.
Module Words
List structure
- snl% ( -- n )
- Get the required space for a snl variable
List creation, initialisation and destruction
- snl-init ( snl -- )
- Initialise the snl list
- snl-(free) ( xt scl -- )
- Free the nodes from the heap using xt
- snl-create ( "<spaces>name" -- ; -- snl )
- Create a named snl list in the dictionary
- snl-new ( -- snl )
- Create a new snl list on the heap
- snl-free ( snl -- )
- Free the list from the heap
Member words
- snl-length@ ( snl -- u )
- Get the number of nodes in the list
- snl-empty? ( snl -- flag )
- Check for an empty list
- snl-first@ ( snl -- snn | nil )
- Get the first node from the list
- snl-last@ ( snl -- snn | nil )
- Get the last node from the list
List words
- snl-append ( snn snl -- )
- Append the node snn to the list
- snl-prepend ( snn snl -- )
- Prepend the node snn in the list
- snl-insert-after ( snn1 snn2 snl -- )
- Insert the node snn1 after the reference node snn2 in the list
- snl-remove-first ( snl -- snn | nil )
- Remove the first node from the list, return the removed node
- snl-remove-after ( snn1 snl -- snn2 | nil )
- Remove the node after the reference node snn1 from the list, return the removed node
Index words
- snl-index? ( n snl -- flag )
- Check if the index n is valid in the list
- snl-get ( n snl -- snn )
- Get the nth node from the list
- snl-insert ( snn n snl -- )
- Insert a node before the nth node in the list
- snl-delete ( n snl -- snn )
- Delete the nth node from the list, return the deleted node
LIFO words
- snl-push ( snn snl -- )
- Push the node snn at the top of the stack [= start of the list]
- snl-pop ( snl -- snn | nil )
- Pop the node at the top of the stack [= start of the list], return the popped node
- snl-tos ( snl -- snn | nil )
- Get the node at the top of the stack [= start of the list], return this node
FIFO words
- snl-enqueue ( snn snl -- )
- Enqueue the node snn at the start of the queue [=end of the list]
- snl-dequeue ( snl -- snn | nil )
- Dequeue the node at the end of the queue [= start of the list], return this node
Special words
- snl-execute ( i*x xt snl -- j*x )
- Execute xt for every node in list
- snl-execute? ( i*x xt snl -- j*x flag )
- Execute xt for every node in the list until xt returns true
- snl-reverse ( snl -- )
- Reverse or mirror the list
Inspection
- snl-dump ( snl -- )
- Dump the list
generated 03-Jun-2010 by ofcfrth-0.10.0