Annotation of 43BSD/ingres/source/ctlmod/range.c, revision 1.1

1.1     ! root        1: # include      <ingres.h>
        !             2: # include      <symbol.h>
        !             3: # include      <range.h>
        !             4: # include      <tree.h>
        !             5: # include      <sccs.h>
        !             6: # include      <errors.h>
        !             7: 
        !             8: SCCSID(@(#)range.c     8.2     2/8/85)
        !             9: 
        !            10: 
        !            11: 
        !            12: /*
        !            13: **  CLRRANGE -- clear range table(s)
        !            14: **
        !            15: **     Parameters:
        !            16: **             none.
        !            17: **
        !            18: **     Returns:
        !            19: **             none.
        !            20: **
        !            21: **     Side Effects:
        !            22: **             The range table (Qt.qt_rangev) is cleared.
        !            23: */
        !            24: 
        !            25: clrrange()
        !            26: {
        !            27:        register int    i;
        !            28:        register DESC   *d;
        !            29: 
        !            30:        for (i = 0; i < MAXRANGE; i++)
        !            31:        {
        !            32:                Qt.qt_rangev[i].rngvmark = FALSE;
        !            33:                Qt.qt_remap[i] = i;
        !            34:                d = Qt.qt_rangev[i].rngvdesc;
        !            35:                if (d != NULL)
        !            36:                {
        !            37:                        xfree(d);
        !            38:                        Qt.qt_rangev[i].rngvdesc = NULL;
        !            39:                }
        !            40:        }
        !            41: }
        !            42: /*
        !            43: **  DECLARE -- declare a range variable
        !            44: **
        !            45: **     A range variable is declared.  If possible, the preferred varno
        !            46: **     stated is used (this is the one already in the tree).  This
        !            47: **     should always be possible when reading the original tree (and
        !            48: **     should probably stay this way to make debugging easier).  When
        !            49: **     not possible, a new varno is chosen and the tree can later
        !            50: **     be patched up by 'mapvars'.
        !            51: **
        !            52: **     Parameters:
        !            53: **             varno -- the preferred varno.
        !            54: **             desc -- the descriptor for this range variable.
        !            55: **
        !            56: **     Returns:
        !            57: **             The actual varno assigned.
        !            58: **
        !            59: **     Side Effects:
        !            60: **             Qt.qt_rangev is updated.
        !            61: **
        !            62: **     Trace Flags:
        !            63: **             7.0-3
        !            64: */
        !            65: 
        !            66: declare(varno, desc)
        !            67: int    varno;
        !            68: DESC   *desc;
        !            69: {
        !            70:        register int    i;
        !            71:        register int    vn;
        !            72:        extern char     *trim_relname();
        !            73: 
        !            74:        vn = varno;
        !            75: 
        !            76:        /* check for preferred slot in range table available */
        !            77:        if (desc != NULL && Qt.qt_rangev[vn].rngvdesc != NULL)
        !            78:        {
        !            79:                /* try to find another slot */
        !            80:                for (i = 0; i < MAXRANGE; i++)
        !            81:                        if (Qt.qt_rangev[i].rngvdesc == NULL)
        !            82:                                break;
        !            83: 
        !            84:                if (i >= MAXRANGE)
        !            85:                {
        !            86:                        /* too many variables */
        !            87:                        error(TOOMANYVARS, trim_relname(desc->reldum.relid), 0);
        !            88:                }
        !            89: 
        !            90:                vn = i;
        !            91:        }
        !            92: 
        !            93:        /* if clearing, make sure something to clear */
        !            94:        if (desc == NULL && Qt.qt_rangev[vn].rngvdesc == NULL)
        !            95:                syserr("declare: null clr %d", vn);
        !            96: 
        !            97:        /* declare variable in the slot */
        !            98:        Qt.qt_rangev[vn].rngvdesc = desc;
        !            99:        Qt.qt_rangev[vn].rngvmark = (desc != NULL);
        !           100: 
        !           101: #      ifdef xQTR2
        !           102:        if (tTf(7, 0))
        !           103:                lprintf("declare(%d, %.14s) into slot %d\n", varno,
        !           104:                    desc != NULL ? desc->reldum.relid : "(NULL)", vn);
        !           105: #      endif
        !           106: 
        !           107:        return (vn);
        !           108: }

unix.superglobalmegacorp.com

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