1: # include   <ingres.h>
   2: # include   <access.h>
   3: # include   <sccs.h>
   4: 
   5: SCCSID(@(#)del_tuple.c	8.1	12/31/84)
   6: 
   7: /*
   8: **	Delete the specified tuple from the
   9: **	current page.
  10: **
  11: **	The space occupied by the tuple is
  12: **	compacted and the effected remaining
  13: **	tuple line offsets are adjusted.
  14: */
  15: 
  16: del_tuple(tid, width)
  17: TID *tid;
  18: int width;
  19: {
  20:     register char   *startpt, *midpt;
  21:     register int    i;
  22:     extern char *get_addr();
  23:     char        *endpt;
  24:     int     cnt, offset, nextline;
  25:     int     linenum;
  26: 
  27:     linenum = tid->line_id & I1MASK;
  28:     offset = Acc_head->linetab[-linenum];
  29:     nextline = Acc_head->nxtlino;
  30: 
  31:     startpt = get_addr(tid);
  32:     midpt = startpt + width;
  33:     endpt = (char *)Acc_head + Acc_head->linetab[-nextline];
  34: 
  35:     cnt = endpt - midpt;
  36: 
  37:     /* delete tuple */
  38:     Acc_head->linetab[-linenum] = 0;
  39: 
  40:     /* update affected line numbers */
  41:     for (i = 0; i <= nextline; i++)
  42:     {
  43:         if (Acc_head->linetab[-i] > offset)
  44:             Acc_head->linetab[-i] -= width;
  45:     }
  46: 
  47:     /* compact the space */
  48:     while (cnt--)
  49:         *startpt++ = *midpt++;
  50:     Acc_head->bufstatus |= BUF_DIRTY;
  51: }

Defined functions

Last modified: 1986-04-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 792
Valid CSS Valid XHTML 1.0 Strict