Annotation of researchv10dc/cmd/f2c/defines.h, revision 1.1.1.1

1.1       root        1: #define PDP11 4
                      2: 
                      3: #define BIGGEST_CHAR   0x7f            /* Assumes 32-bit arithmetic */
                      4: #define BIGGEST_SHORT  0x7fff          /* Assumes 32-bit arithmetic */
                      5: #define BIGGEST_LONG   0x7fffffff      /* Assumes 32-bit arithmetic */
                      6: 
                      7: #define M(x) (1<<x)    /* Mask (x) returns 2^x */
                      8: 
                      9: #define ALLOC(x)       (struct x *) ckalloc((int)sizeof(struct x))
                     10: #define ALLEXPR                (expptr) ckalloc((int)sizeof(union Expression) )
                     11: typedef int *ptr;
                     12: typedef char *charptr;
                     13: typedef FILE *FILEP;
                     14: typedef int flag;
                     15: typedef char field;    /* actually need only 4 bits */
                     16: typedef long int ftnint;
                     17: #define LOCAL static
                     18: 
                     19: #define NO 0
                     20: #define YES 1
                     21: 
                     22: #define CNULL (char *) 0       /* Character string null */
                     23: #define PNULL (ptr) 0
                     24: #define CHNULL (chainp) 0      /* Chain null */
                     25: #define ENULL (expptr) 0
                     26: 
                     27: 
                     28: /* BAD_MEMNO - used to distinguish between long string constants and other
                     29:    constants in the table */
                     30: 
                     31: #define BAD_MEMNO -32768
                     32: 
                     33: 
                     34: /* block tag values -- syntactic stuff */
                     35: 
                     36: #define TNAME 1
                     37: #define TCONST 2
                     38: #define TEXPR 3
                     39: #define TADDR 4
                     40: #define TPRIM 5                /* Primitive datum - should not appear in an
                     41:                           expptr variable, it should have already been
                     42:                           identified */
                     43: #define TLIST 6
                     44: #define TIMPLDO 7
                     45: #define TERROR 8
                     46: 
                     47: 
                     48: /* parser states - order is important, since there are several tests for
                     49:    state < INDATA   */
                     50: 
                     51: #define OUTSIDE 0
                     52: #define INSIDE 1
                     53: #define INDCL 2
                     54: #define INDATA 3
                     55: #define INEXEC 4
                     56: 
                     57: /* procedure classes */
                     58: 
                     59: #define PROCMAIN 1
                     60: #define PROCBLOCK 2
                     61: #define PROCSUBR 3
                     62: #define PROCFUNCT 4
                     63: 
                     64: 
                     65: /* storage classes -- vstg values.  BSS and INIT are used in the later
                     66:    merge pass over identifiers; and they are entered differently into the
                     67:    symbol table */
                     68: 
                     69: #define STGUNKNOWN 0
                     70: #define STGARG 1       /* adjustable dimensions */
                     71: #define STGAUTO 2      /* for stack references */
                     72: #define STGBSS 3       /* uninitialized storage (normal variables) */
                     73: #define STGINIT 4      /* initialized storage */
                     74: #define STGCONST 5
                     75: #define STGEXT 6       /* external storage */
                     76: #define STGINTR 7      /* intrinsic (late decision) reference.  See
                     77:                           chapter 5 of the Fortran 77 standard */
                     78: #define STGSTFUNCT 8
                     79: #define STGCOMMON 9
                     80: #define STGEQUIV 10
                     81: #define STGREG 11      /* register - the outermost DO loop index will be
                     82:                           in a register (because the compiler is one
                     83:                           pass, it can't know where the innermost loop is
                     84:                           */
                     85: #define STGLENG 12
                     86: #define STGNULL 13
                     87: #define STGMEMNO 14    /* interemediate-file pointer to constant table */
                     88: 
                     89: /* name classes -- vclass values, also   procclass   values */
                     90: 
                     91: #define CLUNKNOWN 0
                     92: #define CLPARAM 1      /* Parameter - macro definition */
                     93: #define CLVAR 2                /* variable */
                     94: #define CLENTRY 3
                     95: #define CLMAIN 4
                     96: #define CLBLOCK 5
                     97: #define CLPROC 6
                     98: #define CLNAMELIST 7   /* in data with this tag, the   vdcldone   flag should
                     99:                           be ignored (according to vardcl()) */
                    100: 
                    101: 
                    102: /* vprocclass values -- there is some overlap with the vclass values given
                    103:    above */
                    104: 
                    105: #define PUNKNOWN 0
                    106: #define PEXTERNAL 1
                    107: #define PINTRINSIC 2
                    108: #define PSTFUNCT 3
                    109: #define PTHISPROC 4    /* here to allow recursion - further distinction
                    110:                           is given in the CL tag (those just above).
                    111:                           This applies to the presence of the name of a
                    112:                           function used within itself.  The function name
                    113:                           means either call the function again, or assign
                    114:                           some value to the storage allocated to the
                    115:                           function's return value. */
                    116: 
                    117: /* control stack codes - these are part of a state machine which handles
                    118:    the nesting of blocks (i.e. what to do about the ELSE statement) */
                    119: 
                    120: #define CTLDO 1
                    121: #define CTLIF 2
                    122: #define CTLELSE 3
                    123: #define CTLIFX 4
                    124: 
                    125: 
                    126: /* operators for both Fortran input and C output.  They are common because
                    127:    so many are shared between the trees */
                    128: 
                    129: #define OPPLUS 1
                    130: #define OPMINUS 2
                    131: #define OPSTAR 3
                    132: #define OPSLASH 4
                    133: #define OPPOWER 5
                    134: #define OPNEG 6
                    135: #define OPOR 7
                    136: #define OPAND 8
                    137: #define OPEQV 9
                    138: #define OPNEQV 10
                    139: #define OPNOT 11
                    140: #define OPCONCAT 12
                    141: #define OPLT 13
                    142: #define OPEQ 14
                    143: #define OPGT 15
                    144: #define OPLE 16
                    145: #define OPNE 17
                    146: #define OPGE 18
                    147: #define OPCALL 19
                    148: #define OPCCALL 20
                    149: #define OPASSIGN 21
                    150: #define OPPLUSEQ 22
                    151: #define OPSTAREQ 23
                    152: #define OPCONV 24
                    153: #define OPLSHIFT 25
                    154: #define OPMOD 26
                    155: #define OPCOMMA 27
                    156: #define OPQUEST 28
                    157: #define OPCOLON 29
                    158: #define OPABS 30
                    159: #define OPMIN 31
                    160: #define OPMAX 32
                    161: #define OPADDR 33
                    162: #define OPCOMMA_ARG 34
                    163: #define OPBITOR 35
                    164: #define OPBITAND 36
                    165: #define OPBITXOR 37
                    166: #define OPBITNOT 38
                    167: #define OPRSHIFT 39
                    168: #define OPWHATSIN 40           /* dereferencing operator */
                    169: #define OPMINUSEQ 41           /* assignment operators */
                    170: #define OPSLASHEQ 42
                    171: #define OPMODEQ 43
                    172: #define OPLSHIFTEQ 44
                    173: #define OPRSHIFTEQ 45
                    174: #define OPBITANDEQ 46
                    175: #define OPBITXOREQ 47
                    176: #define OPBITOREQ 48
                    177: #define OPPREINC 49            /* Preincrement (++x) operator */
                    178: #define OPPREDEC 50            /* Predecrement (--x) operator */
                    179: #define OPDOT 51               /* structure field reference */
                    180: #define OPARROW 52             /* structure pointer field reference */
                    181: #define OPNEG1 53              /* simple negation under forcedouble */
                    182: #define OPDMIN 54              /* min(a,b) macro under forcedouble */
                    183: #define OPDMAX 55              /* max(a,b) macro under forcedouble */
                    184: #define OPASSIGNI 56           /* assignment for inquire stmt */
                    185: #define OPIDENTITY 57          /* for turning TADDR into TEXPR */
                    186: #define OPCHARCAST 58          /* for casting to char * (in I/O stmts) */
                    187: #define OPDABS 59              /* abs macro under forcedouble */
                    188: #define OPMIN2 60              /* min(a,b) macro */
                    189: #define OPMAX2 61              /* max(a,b) macro */
                    190: 
                    191: /* label type codes -- used with the ASSIGN statement */
                    192: 
                    193: #define LABUNKNOWN 0
                    194: #define LABEXEC 1
                    195: #define LABFORMAT 2
                    196: #define LABOTHER 3
                    197: 
                    198: 
                    199: /* INTRINSIC function codes*/
                    200: 
                    201: #define INTREND 0
                    202: #define INTRCONV 1
                    203: #define INTRMIN 2
                    204: #define INTRMAX 3
                    205: #define INTRGEN 4      /* General intrinsic, e.g. cos v. dcos, zcos, ccos */
                    206: #define INTRSPEC 5
                    207: #define INTRBOOL 6
                    208: #define INTRCNST 7     /* constants, e.g. bigint(1.0) v. bigint (1d0) */
                    209: 
                    210: 
                    211: /* I/O statement codes - these all form Integer Constants, and are always
                    212:    reevaluated */
                    213: 
                    214: #define IOSTDIN ICON(5)
                    215: #define IOSTDOUT ICON(6)
                    216: #define IOSTDERR ICON(0)
                    217: 
                    218: #define IOSBAD (-1)
                    219: #define IOSPOSITIONAL 0
                    220: #define IOSUNIT 1
                    221: #define IOSFMT 2
                    222: 
                    223: #define IOINQUIRE 1
                    224: #define IOOPEN 2
                    225: #define IOCLOSE 3
                    226: #define IOREWIND 4
                    227: #define IOBACKSPACE 5
                    228: #define IOENDFILE 6
                    229: #define IOREAD 7
                    230: #define IOWRITE 8
                    231: 
                    232: 
                    233: /* User name tags -- these identify the form of the original identifier
                    234:    stored in a   struct Addrblock   structure (in the   user   field). */
                    235: 
                    236: #define UNAM_UNKNOWN 0         /* Not specified */
                    237: #define UNAM_NAME 1            /* Local symbol, store in the hash table */
                    238: #define UNAM_IDENT 2           /* Character string not stored elsewhere */
                    239: #define UNAM_EXTERN 3          /* External reference; check symbol table
                    240:                                   using   memno   as index */
                    241: #define UNAM_CONST 4           /* Constant value */
                    242: #define UNAM_CHARP 5           /* pointer to string */
                    243: #define UNAM_REF 6             /* subscript reference with -s */
                    244: 
                    245: 
                    246: #define IDENT_LEN 31           /* Maximum length user.ident */
                    247: 
                    248: /* type masks - TYLOGICAL defined in   ftypes   */
                    249: 
                    250: #define MSKLOGICAL     M(TYLOGICAL)|M(TYLOGICAL1)|M(TYLOGICAL2)
                    251: #define MSKADDR        M(TYADDR)
                    252: #define MSKCHAR        M(TYCHAR)
                    253: #ifdef TYQUAD
                    254: #define MSKINT M(TYINT1)|M(TYSHORT)|M(TYLONG)|M(TYQUAD)
                    255: #else
                    256: #define MSKINT M(TYINT1)|M(TYSHORT)|M(TYLONG)
                    257: #endif
                    258: #define MSKREAL        M(TYREAL)|M(TYDREAL)    /* DREAL means Double Real */
                    259: #define MSKCOMPLEX     M(TYCOMPLEX)|M(TYDCOMPLEX)
                    260: #define MSKSTATIC (M(STGINIT)|M(STGBSS)|M(STGCOMMON)|M(STGEQUIV)|M(STGCONST))
                    261: 
                    262: /* miscellaneous macros */
                    263: 
                    264: /* ONEOF (x, y) -- x is the number of one of the OR'ed masks in y (i.e., x is
                    265:    the log of one of the OR'ed masks in y) */
                    266: 
                    267: #define ONEOF(x,y) (M(x) & (y))
                    268: #define ISCOMPLEX(z) ONEOF(z, MSKCOMPLEX)
                    269: #define ISREAL(z) ONEOF(z, MSKREAL)
                    270: #define ISNUMERIC(z) ONEOF(z, MSKINT|MSKREAL|MSKCOMPLEX)
                    271: #define ISICON(z) (z->tag==TCONST && ISINT(z->constblock.vtype))
                    272: #define ISLOGICAL(z) ONEOF(z, MSKLOGICAL)
                    273: 
                    274: /* ISCHAR assumes that   z   has some kind of structure, i.e. is not null */
                    275: 
                    276: #define ISCHAR(z) (z->headblock.vtype==TYCHAR)
                    277: #define ISINT(z)   ONEOF(z, MSKINT)    /*   z   is a tag, i.e. a mask number */
                    278: #define ISCONST(z) (z->tag==TCONST)
                    279: #define ISERROR(z) (z->tag==TERROR)
                    280: #define ISPLUSOP(z) (z->tag==TEXPR && z->exprblock.opcode==OPPLUS)
                    281: #define ISSTAROP(z) (z->tag==TEXPR && z->exprblock.opcode==OPSTAR)
                    282: #define ISONE(z) (ISICON(z) && z->constblock.Const.ci==1)
                    283: #define INT(z) ONEOF(z, MSKINT|MSKCHAR)        /* has INT storage in real life */
                    284: #define ICON(z) mkintcon( (ftnint)(z) )
                    285: 
                    286: /* NO66 -- F77 feature is being used
                    287:    NOEXT -- F77 extension is being used */
                    288: 
                    289: #define NO66(s)        if(no66flag) err66(s)
                    290: #define NOEXT(s)       if(noextflag) errext(s)
                    291: 
                    292: /* round a up to the nearest multiple of b:
                    293: 
                    294:    a = b * floor ( (a + (b - 1)) / b )*/
                    295: 
                    296: #define roundup(a,b)    ( b * ( (a+b-1)/b) )

unix.superglobalmegacorp.com

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