-
mdcs-obj.fs
construct( umaxdim0 ... umaxdimx udimension-quantity multi-cell-array -- )- udimension-quantity refers to umaxdim values proceeding call for fixed heap allocation table creation
destruct( multi-cell-array -- )cell-array!( nvalue udim0 ... udimx multi-cell-array -- )- store nvalue at cell address udim0 ... udimx
cell-array@( udim0 ... udimx multi-cell-array -- nvalue )- retrieve nvalue at cell address udim0 ... udimx
cell-array-dimensions@( multi-cell-array -- udim0 ... udimx udimension-quantity )- return the dimensions where udimension-quantity refers to udim values on stack that constitute the dimension
print( multi-cell-array -- )- print some information of internal values for this multi cell array object
-
stringobj.fs
construct( string -- )destruct(string -- )!$( caddr u string -- )- store string caddr u
@$( string -- caddr u )- retrieve string
!+$( caddr u string -- )- add string caddr u to this string at end of!
!<+$( caddr u string -- )- add string caddr u to begining of this string
split$( caddr u string -- caddr1 u1 caddr2 u2 nflag )- split this string object stored string by caddr u if caddr u is found in stored string
- caddr1 u1 will be the split string before caddr u if caddr u is found in stored string
- caddr2 u2 will be the split string after caddr u if caddr us is found in stored string
- if no match found caddr1 u1 returns an empty string and caddr2 u2 contains this objects string
- nflag is true if string is split and false if this objects string is returned without being split
- Note the returned strings are valid until a new string is placed in this string object
- This string object does not get changed in any way because of this operation!
len$( string -- u )- report string size
print( string -- )- retrieve string object info
-
stringobj.fs
construct( strings -- )destruct( strings -- )!$x( caddr u strings -- )- store a string caddr u in handler
@$x( strings -- caddr u )- retrieve string from array at next index
[]@$( nindex strings -- caddr u nflag )- retrieve nindex string from strings array
- caddr u contain the string if nflag is false
- if nflag is true caddr u do not contain nindex string
split$s( caddr u strings -- caddr1 u1 caddr2 u2 )- retrieve string from this strings object array at next index then split that next string at caddr u if possible and removing caddr u in the process
- caddr1 u1 is the string found before caddr u and could be a zero size string
- caddr1 u1 will be a zero size string if caddr u is not found
- caddr2 u2 contains the left over string if caddr u string is found and removed or it will simply be the full string from this string object array
split$to$s( nstring-split$ nstring-source$ strings -- )- split up nstring-source$ with nstring-split$
- nstring-source$ is spl__it each time nstring-split$ is found and placed in this strings object
- nstring-split$ is removed each time it is found and when no more are found process is done
- Note nstring-source$ string will contain the last split string but that string it is also placed in this strings object
- Note null strings or strings of zero size could be found and placed in this strings object during spliting process
split$>$s( ncaddrfd u ncaddrsrc u1 strings -- )- split up ncaddrsrc u1 string with ncaddrfd u string same as split$to$s method but temporary strings are passed to this code
- ncaddrfd u is the string to find
- ncaddrsrc u1 is the string to find ncaddrfd u string in
- Note null strings or strings of zero size could be found and placed in this strings object during spliting process
$qty( strings -- u )- report quantity of strings array
reset( strings -- )- reset index to start of strings list for output purposes
copy$s( nstrings strings -- )- copy strings object to this strings object
print( strings -- )- print debug info on this strings object
-
double-linked-list.fs
-
construct( double-linked-list -- ) -
destruct( double-linked-list -- ) -
print( double-linked-list -- )- display information about objects contents
-
ll!( caddr u double-linked-list -- )- add to link list a node at the end and update all the link list node data
- caddr is address of data to add to this node
- u is the quantity of bytes to add to this node
- note caddr u data is copied into a new heap location
-
ll@( double-linked-list -- caddr u )- get node data from current node.
- If there is no nodes in the linked list u will be 0 and caddr will be 0 indicating a null retrieval
-
ll-size@( double-linked-list -- u )- get linked list node quantity
-
ll<( double-linked-list -- nflag )- step one node back from current node.
- nflag is true if step can not happend because at start node already or if there is no nodes in linked list to move to!
- nflag is false if step did happen!
-
ll>( double-linked-list -- nflag )- step one node forward from current node.
- nflag is true if step can not happen because at last node already or if there is no nodes in linked list to move to!
- nflag is false if step did happen!( double-linked-list -- )
-
ll@>( double-linked-list -- caddr u nflag )- get node payload and step to next node
- nflag is true if step can not happen because at last node already or if there is no nodes in linked list to step to!
- nflag is false if step did happen
- caddr and u will will be the node payload before the step if there are any linked list nodes
- if there are no linked list nodes caddr and u will both be 0
-
ll@<( double-linked-list -- caddr u nflag )- get node payload and step to next node
- nflag is true if step can not happen because at first node already or if there is no nodes in linked list to step to!
- nflag is false if step did happen
- caddr and u will will be the node payload before the step if there are any linked list nodes
- if there are no linked list nodes caddr and u will both be 0
-
ll-set-start( double-linked-list -- )- set link list retrieve to the start of this linked list
-
ll-set-end( double-linked-list -- )- set link list retrieve to the start of this linked list
-
delete-last( double-linked-list -- )- delete the last node in this linked list
-
delete-first(double-linked-list -- )- delete the fist node in this linked list
-
delete-n-item( uindex double-linked-list -- )- delete uindex item in list
-
nll@( uindex double-linked-list -- caddr u )- retrieve uindex link list payload
-
seedata( uindex double-linked-list -- )- testing ... see link data internal addresses for uindex node
-
ll-cell!( nnumber double-linked-list -- )- store nnumber as next linked item
-
ll-cell@( double-linked-list -- nnumber )- retrieve nnumber from linked list at next node
- note if the linked list is empty nnumber will be 0
-
nll-cell@( uindex double-linked-list -- nnumber )- retrieve nnumber from linked list at uindex location if it exists
- note nnumber will be the last number in the linked list if uindex exceeds size of this linked list
- note nnumber will be 0 if there are no nodes stored in link list
-
-
svgmaker.fs
construct( svgmaker -- )destruct( svgmaker -- )svgheader( nstrings-header svgmaker -- )- start svg string and place nstrings contents as header to svg
svgtext( nstrings-attr nx ny nstring-text svgmaker -- )- to make svg text
- nstirngs-attr is strings for attribute of text
- nx ny are text x and y of svg text tag
- nstring-text is the string object address of the string
svgpath( nstrings-attr nstrings-pathdata svgmaker -- )- make a svg path with nstring-attr and nstrings-pathdata
svgcircle( nstring-attr nx ny nr svgmaker -- )- make a svg circle with nstring-attr at nx and ny with radius nr
svgend( svgmaker -- caddr u )- finish forming the svg string and output it
print( svgmaker -- )- print the svg string directly