My favorites | Sign in
Project Logo
ffl
                
Search
for
Updated Jun 03, 2009 by dvoudheusden
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 by ofcfrth-0.10.0

Hosted by Google Code