xref: /inferno-os/appl/lib/utils.m (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
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