rpnproc_makejob()




SYNOPSIS

int rpnproc_makejob(unsigned *__varnump, unsigned *__lblnump, rpnprocmkjcb_t, void *__userdata);

DESCRIPTION

Tato funkce (stejně jako rpnproc_listjob() a rpnproc_listone()) nepatří do skupiny funkcí zabezpečujících provádění programu. Slouží k převodu textového tvaru programu (viz "mnemonika" v tabulce instrukcí) na binární.

První dva argumenty __varnump a __lblnump jsou pointery na proměnné, do kterých jsou uloženy počty (nejvyšší index + 1) proměnných a návěští užívaných programem přímo. Proměnné a návěští adresované nepřímo nemohou být, pochopitelně, do tohoto počtu zahrnuty. Pokud tedy program používá nepřímou adresaci, je třeba požadavky na množství proměnných a návěští (zadávaných funkcím rpnproc_memsize() a rpnproc_initial()) zohlednit, nebo použít makro Rpnprocinitlimit() (viz header rpnproc.h).
Jednoduchou "fintou" lze dosáhnout nezávislosti konečného počtu proměnných na použití jejich nepřímé adresace: Nechť proměnné použité pro nepřímou adresaci mají nejvyšší čísla. Jinak řečeno, nepřímo adresovaná oblast proměnných bude v oblasti 000 a výše.

Další argument je pointer na callback funkci, která zprostředkuje funkci rpnproc_makejob():

Detailní popis uživatelské funkce rpnprocmkjcb_t je zde.

Poslední argument __userdata jsou uživatelská data pro callback funkci. V podstatě libovolné číslo, které má vrstva "RPNPROC" předat voláním callback funkce.


RETURN VALUE

Návratovými hodnotami jsou příslušné konstanty z headeru rpnproc.h. Jejich významy ozřejmuje následující tabulka.

NázevVýznam
RPNPROC_MAKEJOB_OK Není co dodat, lépe to dopadnout nemohlo.
RPNPROC_MAKEJOB_NUMBER Nesedí počet parametrů.
RPNPROC_MAKEJOB_INSTR Chyba při určení instrukce.
RPNPROC_MAKEJOB_PARAM Chybný parametr.
RPNPROC_MAKEJOB_STORE Neznámá velikost (wide) parametru.
RPNPROC_MAKEJOB_MEMORY Nebyl uspokojen požadavek na paměť.


NOTES

Typ rpnprocmkjcb_t je popsán zde.


SEE ALSO

rpnproc_listjob(), rpnproc_listone()