Builtin moduli

Notacija koju primjenjujemo za opis formalnih argumenata procedura u builtin modulima je pseudo notacija i tipovi su navedeni za referencu i bolje razumijevanje. Tipovi kao Rd.T su foreign tipovi čije instance kreiraju i manipulišu procedure iz builtin i extension modula.

Builtin moduli su moduli vidljivi u svakom korisničkom modulu, bez eksplicitnog import. MAIN modul dodatno ima specijalan tretman u smislu da su sve varijable i procedure koje definiše direktno vidljive u korisničkim modulima bez kvalifikacije MAIN.. Objekti iz svih ostalih builtin, 'extension' i korisnički moduli referenciraju se dodavanjem <ime modula>. ispred identifikatora objekta iz nekog od tih modula.

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);

File

File varijable

  • Error Izuzetak koji mogu da raise-uju neke od procedura iz ovog modula u slučaju greške.

File funkcije

  • OpenRd?(name: text): Rd.T Otvara datoteku name za čitanje. Vraća foreign Rd.T objekat kojim se dalje upravlja procedurama modula Rd.
  • OpenWr?(name: text): Wr.T
  • CreateWr?(name: text): Wr.T Otvaraju datoteku name za pisanje. Vraća foreign Wr.T objekat kojim se dalje upravlja procedurama modula Wr. OpenWr? će postojeću datoteku otvoriti i postaviti "glavu za pisanje" na kraj datoteke, a CreateWr? će eventualni stari sadržaj datoteke obrisati i "glavu za pisanje" postaviti na početak tako kreirane nove datoteke.

FS

Functions:

ChDir?(name: text)

  • Mjenja radni direktorijum procesa na putanju "name".

MkDir?(name: text)

  • Kreira direktorijum sa putanjom i nazivom "name".

RmDir?(name: text)

  • Brise direktorijum sa putanjom i nazivom "name".

ReadDir?(pathname: text): list

  • Cita sadrzaj direktorijuma koji se nalazi na putanji "pathname".

Delete(name: text)

  • Brise fajl pod imenom "name".

Rename(from, to: text)

  • Mjenja ime fajla ili direktorijuma "from" u "to".

PWD(): Pathname.T

  • Vraca apsolutnu putanju za radni direktorijum pozivajuceg procesa.

Rd

Rd builtin module sadrži operacije za rad nad foreign tipom Rd.T. Rd.T objekat se kreira pozivom procedure File.OpenRd? iz modula File. Inicijalno jedini način da se upot

Rd funkcije

  • CharsReady(rd: Rd.T): number Vraća broj znakova spremnih za preuzimanje u rd;
  • GetChar(rd: Rd.T): text Vraća sljedeći rasploživi karakter iz rd;
  • GetByte(rd: Rd.T): byte Vraća sljedeći raspoloživi bajt iz rd;
  • GetBytes(rd: Rd.T, len: number): bytes Vraća niz bajtova dužine len iz rd;
  • GetText(rd: Rd.T, len: number): text Vraća text dužine len karaktera iz rd;
  • GetLine(rd: Rd.T): text Vraća narednu liniju iz rd;
  • Seek(rd: Rd.T, newpos: number) Postavlja poziciju "glave za čitanje" u rd na newpos;
  • Pos(rd: Rd.T): number Vraća trenutnu poziciju "glave za čitanje" u rd;
  • Length(rd: Rd.T): number Vraća ukupnu veličinu rd u bajtovima;
  • EOF(rd: Rd.T): boolean Provjerava da li je pozicija glave za čitanje na kraju rd;
  • Close(rd: Rd.T) Zatvara rd i oslobađa resurse;

System

Functions:

EnvGet?(name: text): text

Exec(cmd: text, params: list): text

Fork(cmd: text, params: list): text

Wait(p: Process): number

PID(): number

Modul TCP

Functions:

Connect(addr: list, port: number): list

Listen(addr: list, port: number)

Accept(c: TCP.Connector): list

Close(tcp: TCP.T)

GetHostByName?(name: text): list

GetLocalAddr?(): list

Wr

Wr funkcije

PutText?(wr: Wr.T, text: text)

Seek(wr: Wr.T, n: number)

Flush(wr: Wr.T)

Close(wr: Wr.T)