|
|
1.1 ! root 1: #include "../h/rt.h" ! 2: #ifdef SETS ! 3: /* ! 4: * delete(S,x) - delete element x from set S if it is there ! 5: * (always succeeds and returns S). ! 6: */ ! 7: ! 8: Xdelete(nargs,arg2,arg1,arg0) ! 9: int nargs; ! 10: struct descrip arg0, arg1, arg2; ! 11: { ! 12: register struct descrip *pd; ! 13: int res ; ! 14: extern struct descrip *memb(); ! 15: ! 16: DeRef(arg1) ! 17: DeRef(arg2) ! 18: arg0 = arg1; ! 19: ! 20: if (QUAL(arg1) || TYPE(arg1) != T_SET) ! 21: runerr(119,&arg1); ! 22: /* ! 23: * The technique and philosophy here are the same ! 24: * as used in insert.c - see comment there. ! 25: */ ! 26: pd = memb(BLKLOC(arg1),&arg2,hash(&arg2),&res); ! 27: if (res == 1) { ! 28: /* ! 29: * The element is there so delete it. ! 30: */ ! 31: *pd = BLKLOC(*pd)->selem.sblink; ! 32: (BLKLOC(arg1)->set.setsize)--; ! 33: } ! 34: } ! 35: ! 36: Procblock(delete,2) ! 37: ! 38: #else SETS ! 39: char junk; /* prevent null object file */ ! 40: #endif SETS
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.