MAIN
Varijable
- Error
Izuzetak koji mogu da raise-uju neke od procedura iz ovog modula, kako je naznačeno u specifikaciji svae od procedura.
- nil
NIL/NULL/null konstanta. Standardni invalid pointer, neinicijalizirane varijable u XL imaju ovu vrijednost.
- stdin
- stdout
- stderr
Standardni fajl deskriptori, ulaz, izlaz i error respektivno. stdin je Rd.T, a ostala dva su Wr.T i mogu se predefinisati tako da se njihove funkcije usmjere na proizvoljan stream deskriptor kreiran nekom od odgovarajućih File procedura.
Procedure/funkcije
- nullproc()
NOP procedura, korisna kao filler argument procedura koje traže proceduralne argumente kad korisnik ignoriše taj argument;
- min(n1, n2, ...: number): number
- max(n1, n2, ...: number): number
Minimalni, odnosno maksimalni element grupe elemenata tipa number;
- isnil(arg): boolean
Predikat kojim se vrši provjera da li je vrijednost argumenta NIL;
- call(p)
- printf(format: text, arg1, ...)
- sprintf(format: text, arg1, ...): text
- delay(secs: number)
Pauzira izvršavanje tekuće niti za secs sekundi;
- assert(expr, msg: text, args...)
Izračunava boolean izraz expr i u slučaju da je vrijednost false, generiše runtime grešku (RuntimeError?("Assert failed (" & msg & ")")). Ako vrijednost izraza ne može da se konvertuje u boolean, takođe generiše runtime grešku;
- die(msg: text, args...)
Prekida izvršenje programa sa porukom msg i informacijom o mjestu na kome se ista dogodila;
- log(format: text, arg1, ...)
- logf(wr: Wr.T, format: text, arg1, ...)
Formatira log poruku i ispisuje je na predefinisani log izlaz (standardni izlaz, stdout), odnosno zadati wr
- setlog(enable: boolean)
Uključuje, odnosno isključuje log izlaz. Nakon setlog(false), log() i logf() neće ispisivati poruke.
- random(lo, hi)
Daje slučajan cijeli broj u opsegu lo..hi;
- now()
Vraća trenutni datum i vrijeme, vrijednost tipa date.;
- clock()
Vraća trenutno vrijeme, vrijednost tipa time.;
- new(name: text): foreign
Alocira varijably foreign tipa na osnovu imena;
- typename(v): text
- foreigntypename(v): text
Procedure za dobijanje imena tipa date varijable;
- typecode(v): number
Vraća Modula-3 runtime typecode tipa zadatog argumenta;
- md5sum(v: text): text
Izračunava kriptografski md5 hash datog teksta;
- listtotext(l: list): text
- texttolist(t: text): list
text je jedna ili više linija teksta, list je lista od jednog ili više elemenata;
- compile(fname: text): XL.Run
- compile(rd: Rd.T): XL.Run
Kompajlira XL kod iz date datoteke, ili rd strima. rd može biti već otvorena datoteka, ali i na neki drugi način generisani sors kod.
- exec(run: XL.Run, qproc: text, args...)
U okviru run XL runtime okruženja, izvršava proceduru qproc (IPUtils.IP2Text, na primjer) sa argumentima args. Svaki XL.Run ima zaseban globalni kontekst i komunikacija sa kontekstom iz kog se poziva exec() se obavlja preko argumenata i povratne vrijednosti, eventualno preko eksternih resursa tipa fajl sistema ili neke baze podataka;
- run(fname, qproc: text; args...)
Kraći način za adhoc pozivanje samo jedne procedure iz određenog eksternog XL programa;
- save(fname: text, v: any)
- load(fname: text): any
- pickle(v: any): text
- depickle(p: text): any
- clone(v: any): any
Skup procedura za manipulisanje perzistentnim oblikom proizvoljne strukture podataka. save() zapisuje strukturu u disk datoteku, load() učitava strukturu iz datoteke, pickle pretvara strukturu u tekst, depickle vraća tekst u originalnu strukturu. clone() pravi identičnu kopiju strukture.
- caps(v: text): text
- lows(v: text): text
Vraća string konvertovan u sva velika, odnosno sva mala slova;
- split(v, s: text): list
Razbija v na "riječi" odvojene nekim od separatora (argument s). Za razliku od splitlist(), više sukcesivnih separator karaktera tretira se kao jedan separator;
- splitlist(v, s: text): list
Za razliku od split(), rezultat može da ima i prazne stringove u listi "riječi";
XLModule.AddProc(m, "trim", Trim);
XLModule.AddProc(m, "escape", Escape);
XLModule.AddProc(m, "unescape", UnEscape);
XLModule.AddProc(m, "pos", Pos);
XLModule.AddProc(m, "replaces", Replaces);
XLModule.AddProc(m, "lat2cir", Lat2Cir);
XLModule.AddProc(m, "cir2lat", Cir2Lat);
- size(v: array|list|text|bytes): number
Vraća broj elemenata u varijabli nekog od podržanih tipova. Ukoliko tip argumenta nije podržan, generiše runtime grešku;
- head(v: list): any
- tail(v: list): any
- delhead(v: list): list
- deltail(v: list): list
Procedure vraćaju prvi element liste, zadnji element liste, listu bez prvog elementa, listu bez zadnjeg elementa, respektivno. Prve dvije procedure generisaće runtime grešku ako je argument prazna lista.
- regex(re: text): ERegEx.T
Kompajlira regularni izraz, za kasniju upotrebu u regmatch();
- regmatch(re: text, e: text): list
- regmatch(re: ERegEx.T, e: text): list
"Izvršava" regularni izraz sa argumentom e. Prva forma je adhoc, druga koristi ranije kompajlirani regularni izraz. U slučaju da regularni izraz ne odgovara drugom argumentu e, vraća praznu listu. Ukoliko Izraz odgovara argumentu e (matchuje ga), regmatch vraća listu sa najmanje jednim elementom. Prvi element je puni match, a eventualni ostali elementi su "pogođeni" podizrazi, u strukturi kao kod argumenta <varN> za prijem rezultata u match iskazu.
regfree(re: ERegEx.T)
Dealocira re. Procedura je suvišna zbog WeakRef čistača.
XLModule.AddProc(m, "swap", Swap);
XLModule.AddProc(m, "compare", Compare);
XLModule.AddProc(m, "sort", Sort);