rpnproc_memsize()




SYNOPSIS

unsigned rpnproc_memsize(unsigned __varnum, unsigned __lblnum);

DESCRIPTION

Funkce sama o sobě nemá valný význam: hodnota, kterou vrací, udává pouze velikost paměti určené vnitřním proměnným vrstvy "RPNPROC" s ohledem na zadané počty proměnných programu a návěští použitých programem (argumenty __varnum resp. __lblnum).
Použití funkce najde pouze ve spojení s funkcí rpnproc_initial().


RETURN VALUE

velikost paměti určené vnitřním proměnným vrstvy "RPNPROC".


NOTES

Typ rpnprochndp_t je popsán zde.

Kaskáda funkcí volaných pro kompletní inicializaci vnitřních proměnných je následná.

rpnprochndp_t inicializacni_funkce(unsigned varnum, unsigned lblnum)
{
    unsigned    size;
    void        *hndp;

    size = rpnproc_memsize(varnum, lblnum);
    if((hndp = malloc(size)) != NULL)
        hndp = rpnproc_initial(hndp, varnum, lblnum);
    return(hndp);
}

V praxi však není důvod jí použít v této podobě. Vše zastane některé z maker Rpnprocinit*() z headeru rpnproc.h.
Důvod k rozdělení inicializační funkce do dvou samostatných funkcí je prostý: je jím možnost určit, jakým způsobem bude alokován potřebný úsek paměti. Pozorný čtenář však namítne, že pro to není třeba mít funkce dvě; bohatě postačí jedna, jejíž soupis argumentů je rozšířen o pointer na funkci alokující paměť. To vše je pravdou. Ale takové řešení by znemožnilo užití funkce alloca() pro získání paměti pro vnitřní proměnné vrstvy "RPNPROC". Navíc, zápis v programu (budeme-li za každou cenu preferovat jeho přehlednost) by byl naprosto stejný, jako v případě použití Rpnprocinit*().


SEE ALSO

rpnproc_initial()