1*37da2899SCharles.ForsythStr_Hashtab : module 2*37da2899SCharles.Forsyth{ 3*37da2899SCharles.Forsyth PATH: con "/dis/lib/tcl_strhash.dis"; 4*37da2899SCharles.Forsyth 5*37da2899SCharles.Forsyth H_link : adt{ 6*37da2899SCharles.Forsyth name : string; 7*37da2899SCharles.Forsyth val : string; 8*37da2899SCharles.Forsyth }; 9*37da2899SCharles.Forsyth 10*37da2899SCharles.Forsyth Hash : adt { 11*37da2899SCharles.Forsyth size : int; 12*37da2899SCharles.Forsyth lsize : int; 13*37da2899SCharles.Forsyth tab : array of list of H_link; 14*37da2899SCharles.Forsyth insert : fn(h:self ref Hash,name,val: string) : int; 15*37da2899SCharles.Forsyth dump: fn(h:self ref Hash) : string; 16*37da2899SCharles.Forsyth find: fn(h:self ref Hash,name : string) : (int,string); 17*37da2899SCharles.Forsyth delete: fn(h:self ref Hash,name : string) : int; 18*37da2899SCharles.Forsyth }; 19*37da2899SCharles.Forsyth 20*37da2899SCharles.Forsyth alloc : fn(size : int) : ref Hash; 21*37da2899SCharles.Forsyth}; 22*37da2899SCharles.Forsyth 23*37da2899SCharles.ForsythInt_Hashtab : module 24*37da2899SCharles.Forsyth{ 25*37da2899SCharles.Forsyth PATH: con "/dis/lib/tcl_inthash.dis"; 26*37da2899SCharles.Forsyth 27*37da2899SCharles.Forsyth H_link : adt{ 28*37da2899SCharles.Forsyth name : string; 29*37da2899SCharles.Forsyth val : int; 30*37da2899SCharles.Forsyth }; 31*37da2899SCharles.Forsyth 32*37da2899SCharles.Forsyth IHash : adt { 33*37da2899SCharles.Forsyth size : int; 34*37da2899SCharles.Forsyth tab : array of list of H_link; 35*37da2899SCharles.Forsyth insert : fn(h:self ref IHash,name: string,val : int) : int; 36*37da2899SCharles.Forsyth find: fn(h:self ref IHash,name : string) : (int,int); 37*37da2899SCharles.Forsyth delete: fn(h:self ref IHash,name : string) : int; 38*37da2899SCharles.Forsyth }; 39*37da2899SCharles.Forsyth 40*37da2899SCharles.Forsyth alloc : fn(size : int) : ref IHash; 41*37da2899SCharles.Forsyth}; 42*37da2899SCharles.Forsyth 43*37da2899SCharles.ForsythSym_Hashtab : module 44*37da2899SCharles.Forsyth{ 45*37da2899SCharles.Forsyth PATH: con "/dis/lib/tcl_symhash.dis"; 46*37da2899SCharles.Forsyth 47*37da2899SCharles.Forsyth H_link : adt{ 48*37da2899SCharles.Forsyth name : string; 49*37da2899SCharles.Forsyth alias : string; 50*37da2899SCharles.Forsyth val : int; 51*37da2899SCharles.Forsyth }; 52*37da2899SCharles.Forsyth 53*37da2899SCharles.Forsyth SHash : adt { 54*37da2899SCharles.Forsyth size : int; 55*37da2899SCharles.Forsyth tab : array of list of H_link; 56*37da2899SCharles.Forsyth insert : fn(h:self ref SHash,name,alias: string,val : int) : int; 57*37da2899SCharles.Forsyth find: fn(h:self ref SHash,name : string) : (int,int,string); 58*37da2899SCharles.Forsyth delete: fn(h:self ref SHash,name : string) : int; 59*37da2899SCharles.Forsyth }; 60*37da2899SCharles.Forsyth 61*37da2899SCharles.Forsyth alloc : fn(size : int) : ref SHash; 62*37da2899SCharles.Forsyth}; 63*37da2899SCharles.Forsyth 64*37da2899SCharles.ForsythMod_Hashtab : module 65*37da2899SCharles.Forsyth{ 66*37da2899SCharles.Forsyth PATH: con "/dis/lib/tcl_modhash.dis"; 67*37da2899SCharles.Forsyth 68*37da2899SCharles.Forsyth H_link : adt{ 69*37da2899SCharles.Forsyth name : string; 70*37da2899SCharles.Forsyth val : TclLib; 71*37da2899SCharles.Forsyth }; 72*37da2899SCharles.Forsyth 73*37da2899SCharles.Forsyth MHash : adt { 74*37da2899SCharles.Forsyth size : int; 75*37da2899SCharles.Forsyth tab : array of list of H_link; 76*37da2899SCharles.Forsyth insert : fn(h:self ref MHash,name: string,val : TclLib) 77*37da2899SCharles.Forsyth : int; 78*37da2899SCharles.Forsyth dump: fn(h:self ref MHash) : string; 79*37da2899SCharles.Forsyth find: fn(h:self ref MHash,name : string) : (int,TclLib); 80*37da2899SCharles.Forsyth delete: fn(h:self ref MHash,name : string) : int; 81*37da2899SCharles.Forsyth }; 82*37da2899SCharles.Forsyth 83*37da2899SCharles.Forsyth alloc : fn(size : int) : ref MHash; 84*37da2899SCharles.Forsyth}; 85*37da2899SCharles.Forsyth 86*37da2899SCharles.ForsythTcl_Stack : module 87*37da2899SCharles.Forsyth{ 88*37da2899SCharles.Forsyth PATH: con "/dis/lib/tcl_stack.dis"; 89*37da2899SCharles.Forsyth 90*37da2899SCharles.Forsyth level : fn() : int; 91*37da2899SCharles.Forsyth examine : fn(lev : int) : 92*37da2899SCharles.Forsyth (ref Str_Hashtab->Hash,array of (ref Str_Hashtab->Hash,string),ref Sym_Hashtab->SHash); 93*37da2899SCharles.Forsyth push : fn(s:ref Str_Hashtab->Hash, 94*37da2899SCharles.Forsyth a:array of (ref Str_Hashtab->Hash,string),t: ref Sym_Hashtab->SHash); 95*37da2899SCharles.Forsyth init : fn(); 96*37da2899SCharles.Forsyth move : fn(lev :int) : int; 97*37da2899SCharles.Forsyth newframe : fn() : 98*37da2899SCharles.Forsyth (ref Str_Hashtab->Hash,array of (ref Str_Hashtab->Hash,string),ref Sym_Hashtab->SHash); 99*37da2899SCharles.Forsyth pop : fn() : (ref Str_Hashtab->Hash, 100*37da2899SCharles.Forsyth array of (ref Str_Hashtab->Hash,string),ref Sym_Hashtab->SHash); 101*37da2899SCharles.Forsyth dump : fn(); 102*37da2899SCharles.Forsyth}; 103*37da2899SCharles.Forsyth 104*37da2899SCharles.Forsyth 105*37da2899SCharles.Forsyth 106*37da2899SCharles.ForsythTcl_Utils : module 107*37da2899SCharles.Forsyth{ 108*37da2899SCharles.Forsyth PATH: con "/dis/lib/tcl_utils.dis"; 109*37da2899SCharles.Forsyth break_it : fn(s : string) : array of string; 110*37da2899SCharles.Forsyth arr_resize : fn(argv : array of string) : array of string; 111*37da2899SCharles.Forsyth}; 112*37da2899SCharles.Forsyth 113