File:  [CSRG BSD Unix] / 43BSD / contrib / icon / operators / compl.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:12:55 2018 UTC (8 years, 1 month ago) by root
Branches: MAIN, BSD
CVS tags: HEAD, BSD43
BSD 4.3

#include "../h/rt.h"

/*
 * ~x - complement cset x.
 */

compl(nargs, arg1, arg0)
int nargs;
struct descrip arg1, arg0;
   {
   DclSave
   register int i;
   union block *bp;
   int *cs, csbuf[CSETSIZE];
   extern struct b_cset *alccset();

   SetBound;
   hneed(sizeof(struct b_cset));

   /*
    * x must be a cset.
    */
   if (cvcset(&arg1, &cs, csbuf) == NULL)
      runerr(104, &arg1);

   /*
    * Allocate a new cset and then copy each cset word from x into
    *  the new cset words, complementing each.
    */
   bp = (union block *) alccset();
   for (i = 0; i < CSETSIZE; i++)
       bp->cset.bits[i] = ~cs[i];

   arg0.type = D_CSET;
   BLKLOC(arg0) = bp;
   ClearBound;
   }

Opblock(compl,1,"~")

unix.superglobalmegacorp.com

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