summaryrefslogtreecommitdiff
path: root/appl/lib/utils.m
diff options
context:
space:
mode:
Diffstat (limited to 'appl/lib/utils.m')
-rw-r--r--appl/lib/utils.m112
1 files changed, 112 insertions, 0 deletions
diff --git a/appl/lib/utils.m b/appl/lib/utils.m
new file mode 100644
index 00000000..4e9a176a
--- /dev/null
+++ b/appl/lib/utils.m
@@ -0,0 +1,112 @@
+Str_Hashtab : module
+{
+ PATH: con "/dis/lib/tcl_strhash.dis";
+
+ H_link : adt{
+ name : string;
+ val : string;
+ };
+
+ Hash : adt {
+ size : int;
+ lsize : int;
+ tab : array of list of H_link;
+ insert : fn(h:self ref Hash,name,val: string) : int;
+ dump: fn(h:self ref Hash) : string;
+ find: fn(h:self ref Hash,name : string) : (int,string);
+ delete: fn(h:self ref Hash,name : string) : int;
+ };
+
+ alloc : fn(size : int) : ref Hash;
+};
+
+Int_Hashtab : module
+{
+ PATH: con "/dis/lib/tcl_inthash.dis";
+
+ H_link : adt{
+ name : string;
+ val : int;
+ };
+
+ IHash : adt {
+ size : int;
+ tab : array of list of H_link;
+ insert : fn(h:self ref IHash,name: string,val : int) : int;
+ find: fn(h:self ref IHash,name : string) : (int,int);
+ delete: fn(h:self ref IHash,name : string) : int;
+ };
+
+ alloc : fn(size : int) : ref IHash;
+};
+
+Sym_Hashtab : module
+{
+ PATH: con "/dis/lib/tcl_symhash.dis";
+
+ H_link : adt{
+ name : string;
+ alias : string;
+ val : int;
+ };
+
+ SHash : adt {
+ size : int;
+ tab : array of list of H_link;
+ insert : fn(h:self ref SHash,name,alias: string,val : int) : int;
+ find: fn(h:self ref SHash,name : string) : (int,int,string);
+ delete: fn(h:self ref SHash,name : string) : int;
+ };
+
+ alloc : fn(size : int) : ref SHash;
+};
+
+Mod_Hashtab : module
+{
+ PATH: con "/dis/lib/tcl_modhash.dis";
+
+ H_link : adt{
+ name : string;
+ val : TclLib;
+ };
+
+ MHash : adt {
+ size : int;
+ tab : array of list of H_link;
+ insert : fn(h:self ref MHash,name: string,val : TclLib)
+ : int;
+ dump: fn(h:self ref MHash) : string;
+ find: fn(h:self ref MHash,name : string) : (int,TclLib);
+ delete: fn(h:self ref MHash,name : string) : int;
+ };
+
+ alloc : fn(size : int) : ref MHash;
+};
+
+Tcl_Stack : module
+{
+ PATH: con "/dis/lib/tcl_stack.dis";
+
+ level : fn() : int;
+ examine : fn(lev : int) :
+ (ref Str_Hashtab->Hash,array of (ref Str_Hashtab->Hash,string),ref Sym_Hashtab->SHash);
+ push : fn(s:ref Str_Hashtab->Hash,
+ a:array of (ref Str_Hashtab->Hash,string),t: ref Sym_Hashtab->SHash);
+ init : fn();
+ move : fn(lev :int) : int;
+ newframe : fn() :
+ (ref Str_Hashtab->Hash,array of (ref Str_Hashtab->Hash,string),ref Sym_Hashtab->SHash);
+ pop : fn() : (ref Str_Hashtab->Hash,
+ array of (ref Str_Hashtab->Hash,string),ref Sym_Hashtab->SHash);
+ dump : fn();
+};
+
+
+
+Tcl_Utils : module
+{
+ PATH: con "/dis/lib/tcl_utils.dis";
+ break_it : fn(s : string) : array of string;
+ arr_resize : fn(argv : array of string) : array of string;
+};
+