Anonymous user
User:NevilleDNZ/link list template: Difference between revisions
User:NevilleDNZ/link list template (view source)
Revision as of 06:44, 13 August 2010
, 13 years agoremove ##s
(Sandbox source for syntax highlighting.) |
m (remove ##s) |
||
Line 23:
MODE CLASSLISTDATA = STRUCT(
PROC (REF LISTDATA #self#)RETLIST
PROC (REF LISTDATA #self#, ITERDATA #iter data#)RETLIST
PROC (REF LISTDATA #self#, REFDATA #pos#)REF LINKDATA get link,
PROC (REF LISTDATA #self#, REFDATA #pos#, DATA #data#)DATA
PROC (REF LISTDATA #self#, SLICE #slice#)REF LISTDATA
PROC (REF LISTDATA #self#, REFDATA #pos#)REF DATA
PROC (REF LISTDATA #self#, SLICE #slice#)LISTDATA
PROC (REF LISTDATA #self#, SLICE #slice#)LISTDATA
PROC (REF LISTDATA #self#, REFDATA #pos#)VOID
PROC (REF LISTDATA #self#, SLICE #in slice#)VOID
PROC (ITERDATA #iter#, YIELDDATA #yield#)VOID
PROC (ITERDATA #iter#, YIELDDATA #yield#)VOID
PROC (LISTDATA #list#, YIELDLINKDATA #yield#)VOID
PROC (LISTDATA #list#, YIELDLINKDATA #yield#)VOID
PROC (REF LISTDATA #iter#, YIELDDATA #yield#)VOID
PROC (REF LISTDATA #self#, YIELDDATA #yield#)VOID
PROC (REF LISTDATA #self#)RETLIST sort,
PROC (REF LISTDATA #self#)RETLIST reverse,
PROC (REF LISTDATA #self#)STRING
PROC (REF LISTDATA #self#, LISTDATA #other#)INT
PROC (REF LISTDATA #self#, LISTDATA #other#)BOOL
PROC (REF LISTDATA #self#, LISTDATA #other#)BOOL
PROC (REF LISTDATA #self#, LISTDATA #other#)BOOL
PROC (REF LISTDATA #self#, LISTDATA #other#)BOOL
PROC (REF LISTDATA #self#, LISTDATA #other#)BOOL
PROC (REF LISTDATA #self#, LISTDATA #other#)BOOL
PROC (REF LISTDATA #self#)INT
PROC (REF LISTDATA #self#, DATA #data#)INT count,
PROC (REF LISTDATA #self#, DATA #needle#)BOOL
CO
PROC (REF LISTDATA #self#, DATA #data#)INT index,
Line 60:
PROC (REF LISTDATA #self#, REFDATA #pos#, DATA #data#)RETLIST insert,
CO PROC (REF LISTDATA #self#, ITERDATA #other#)RETLIST extend, CO
PROC (REF LISTDATA #self#, LISTDATA #list#)RETLIST
PROC (REF LISTDATA #self#, DATA #data#)RETLIST append,
PROC (REF LISTDATA #self#, LISTDATA #list#)RETLIST
PROC (REF LISTDATA #self#, INT #n#)RETLIST
PROC (REF LISTDATA #self#, INT #n#)RETLIST
PROC (REF LISTDATA #self#, INT #n#)RETLIST
PROC (REF LISTDATA #self#)DATA pop,
PROC (REF LISTDATA #self#, DATA #data#)RETLIST minusab
Line 71:
CLASSLISTDATA class list data = (
# PROC
# PROC
landing OF self := HEAP LINKDATA; # In C this could be part of the STRUCT #
next OF landing OF self := prev OF landing OF self := landing OF self;
Line 130:
ESAC,
# PROC
REF LINKDATA here := (get link OF class list data)(self, pos);
IF here IS landing OF self THEN raise index error(("Attempt to set landing.")) FI;
Line 136:
),
# PROC
# PROC
REF LINKDATA here := (get link OF class list data)(self, pos);
IF here IS landing OF self THEN raise index error(("Attempt to get landing.")) FI;
Line 144:
),
# PROC
# PROC
# PROC
REF LINKDATA here := (get link OF class list data)(self, pos);
IF here IS landing OF self THEN raise index error(("Attempt to delete landing.")) FI;
Line 156:
),
# PROC
STRUCT(INT lwb, upb, by) slice = (
(lwb OF in slice|(INT i):i, (VOID):lwb OF self),
Line 171:
),
# PROC
CASE iter IN
([]DATA array data): (
Line 193:
ESAC,
# PROC
CASE iter IN
([]DATA array data): (
Line 215:
ESAC,
# PROC
REF LINKDATA link := landing OF list;
WHILE
Line 224:
),
# PROC
REF LINKDATA link := landing OF list;
WHILE
Line 233:
),
# PROC
# FOR LINKDATA link IN # (gen data OF class list data)(iter, # ) DO ( #
## (DATA data)VOID: (
Line 240:
# OD # ),
# PROC
# FOR LINKDATA link IN # (rgen data OF class list data)(self, # ) DO ( #
## (DATA data)VOID: (
Line 263:
),
# PROC
FILE f; STRING buf; associate(f, buf);
putf(f,$"("$);
Line 284:
# Review: this could be generalisd to handle iterators #
# PROC
LINKDATA link := landing OF other;
# FOR DATA data IN # (gen data OF class list data)(self, # ) DO ( #
Line 300:
),
# PROC
(cmp OF class list data )(self, other) <= 0,
# PROC
(cmp OF class list data )(self, other) < 0,
# PROC
IF lwb OF self /= lwb OF other OR lwb OF self /= lwb OF other THEN
FALSE
Line 313:
FI,
# PROC
NOT (eq OF class list data)(self, other),
# PROC
(cmp OF class list data )(self, other) >= 0,
# PROC
(cmp OF class list data )(self, other) > 0,
# PROC
# PROC count = # (REF LISTDATA self, DATA needle)INT: (
Line 334:
),
# PROC
CASE (find OF class list data)(self, needle) IN (INT): TRUE OUT FALSE ESAC,
Line 416:
END CO
# PROC
REF LISTDATA out = INIT HEAP LISTDATA;
(plusab OF class list data)(out, self);
Line 425:
(insert OF class list data)(self, landing OF self, data),
# PROC
# warning: x += x currently fails #
# FOR DATA data IN # (iter OF class list data)(LOC LISTDATA := list, # ) DO ( #
Line 434:
),
# PROC
TO n DO # fix: this doubles list length #
(plusab OF class list data)(self, self) # !!! #
Line 441:
),
# PROC
# PROC
# PROC pop = # (REF LISTDATA self)DATA: (
|