Annotation of coherent/d/bin/bc/bc.h, revision 1.1

1.1     ! root        1: /*
        !             2:  *     Secondary inclusions.
        !             3:  */
        !             4: 
        !             5: #include <mprec.h>     /* multi-precision integer declarations */
        !             6: #include "bcmch.h"     /* bc-machine definitions */
        !             7: #include "bcsymtbl.h"  /* symbol table definitions */
        !             8: 
        !             9: 
        !            10: /*
        !            11:  *     Manifest constants.
        !            12:  */
        !            13: 
        !            14: #define        TRUE            (0 == 0)
        !            15: #define        FALSE           (0 != 0)
        !            16: #define        MAXWORD         80              /* maximum token length */
        !            17: #define        MAXSTRING       250             /* maximum quoted-string length */
        !            18: #define        MAXSTACK        200             /* max pseudo-machine run-time stack */
        !            19: #define        MAXCODE         1000            /* maximum function code size */
        !            20: #define        ABUMP           8               /* array growth quantum */
        !            21: #define        LINELEN         72              /* maximum output line length */
        !            22: #define NOSHELL                127             /* system return if no shell */
        !            23: 
        !            24: /*
        !            25:  *     The nel macro returns the number of elements in the array
        !            26:  *     "array".  It will be a compile time constant.
        !            27:  */
        !            28: 
        !            29: #define nel(array)     ((sizeof (array)) / (sizeof *(array)))
        !            30: 
        !            31: /*
        !            32:  *     The following macros are used to place items in the code
        !            33:  *     stream of the bc-machine.
        !            34:  */
        !            35: 
        !            36: #define        emitop(op)              (incloc()->opcode = (op))
        !            37: #define        emitzap                 (incloc()->address = -1, loc - 1)
        !            38: #define        emitaddr(addr)          (loc->address = (addr) - loc, incloc())
        !            39: #define        emitnum(num)            (incloc()->lvalue = (num))
        !            40: #define emitarry(arry)         (incloc()->alvalue = (arry))
        !            41: #define emitstr(str)           (incloc()->svalue = (str))
        !            42: #define emitcnt(cnt)           (incloc()->ivalue = (cnt))
        !            43: #define emitid(ident)          (incloc()->dvalue = (ident))
        !            44: #define patch(target, addr)    ((target)->address = (addr) - (target))
        !            45: 
        !            46: /*
        !            47:  *     Global functions that return non-ints.
        !            48:  */
        !            49: 
        !            50: rvalue         *getnum();              /* read number from stdin */
        !            51: rvalue         *select();              /* select an array element */
        !            52: code           *incloc();              /* return next slot and advance loc */
        !            53: mint           *pow10();               /* return 10 to a power */
        !            54: opcode         negate();               /* negate condition of branch */
        !            55: stkent         *pauto();               /* initialize autos used in a bc fnc.*/
        !            56: stkent         *newframe();            /* frame value after a function call */
        !            57: char           *realloc();             /* call in dc.c and bcmutil.c */
        !            58: 
        !            59: /*
        !            60:  *     Global variables.
        !            61:  */
        !            62: 
        !            63: extern int     allok;                  /* True iff no syntax errors */
        !            64: extern int     scale;                  /* scale register */
        !            65: extern int     ibase;                  /* input base */
        !            66: extern dicent  *dictionary;            /* root of string table */
        !            67: extern code    cstream[];              /* code stream */
        !            68: extern code    *loc;                   /* where next code item goes */
        !            69: extern mint    ten;                    /* constant ten */
        !            70: extern mint    maxsobase;              /* max small output base (16) */
        !            71: extern mint    outbase;                /* output base */
        !            72: extern rvalue  dot;                    /* last number printed */
        !            73: extern rvalue  zero;                   /* constant zero */
        !            74: extern FILE    *infile;                /* current input file */
        !            75: extern int     inline;                 /* current input line */
        !            76: extern char    *infnam;                /* current file name */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.