Tblks: module {
PATH: con "/dis/o/tblks.dis";
Maxline: con 250; # after so many runes, we consider it a text line.
Str: adt {
s: string;
findr: fn(s: self ref Str, pos: int, c: int, lim: int): int;
find: fn(s: self ref Str, pos: int, c: int, lim: int): int;
};
Blks: adt {
b: array of ref Str;
new: fn(s: string): ref Blks;
pack: fn(blks: self ref Blks): ref Str;
ins: fn(blks: self ref Blks, s: string, pos: int);
del: fn(blks: self ref Blks, n: int, pos: int): string;
seek: fn(blks: self ref Blks, pos: int): (int, int); # (index in b, off in Str)
blen: fn(blks: self ref Blks): int;
getc: fn(blks: self ref Blks, pos: int): int;
gets: fn(blks: self ref Blks, pos: int, nr: int): string;
dump: fn(blks: self ref Blks);
};
init: fn(sysm: Sys, strm: String, e: Error, dbg: int);
fixpos: fn(pos: int, n: int): int;
fixposins: fn(pos: int, inspos: int, n: int): int;
fixposdel: fn(pos: int, delpos: int, n: int): int;
strstr: fn(s1, s2: string): int;
strchr: fn(s : string, c : int) : int;
dtxt: fn(s: string): string;
};
|