bitset.sa


Generated by gen_html_sa_files from ICSI. Contact gomes@icsi.berkeley.edu for details
 

immutable class BITSET

immutable class BITSET is attr p:QUADBITS; create(n:QUADBITS):SAME is res:SAME; return res.p(n); end; create(n:CARD):SAME is return create(#QUADBITS(n)); end; create(n:INT):SAME is return create(#QUADBITS(n)); end; create:SAME is return create(0); end; b(i:CARD):SAME is return create(#QUADBITS(1).left(i)); end; clone:SAME is return self; end; card:CARD is return p.card; end; is_empty:BOOL is return p.card=0; end; is_eq(other:SAME):BOOL is return p=other.p; end; negate:SAME is return create(p.bit_invert); end; not:SAME is return create(p.bit_invert); end; plus(other:SAME):SAME is --or return create(p.bit_or(other.p)); end; bit_or(other:SAME):SAME is --or return create(p.bit_or(other.p)); end; nor(other:SAME):SAME is return create(p.bit_or(other.p).bit_invert); end; times(other:SAME):SAME is -- and return create(p.bit_and(other.p)); end; bit_and(other:SAME):SAME is return create(p.bit_and(other.p)); end; nand(other:SAME):SAME is return create(p.bit_and(other.p).bit_invert); end; xor(other:SAME):SAME is return create(p.bit_xor(other.p)); end; div(other:SAME):SAME is -- xor return xor(other); end; nxor(other:SAME):SAME is return create(p.bit_xor(other.p).bit_invert); end; minus(other:SAME):SAME is return create(p.bit_and(other.p.bit_invert)); end; is_subset(other:SAME):BOOL is return p.bit_and(other.p.bit_invert).card.is_eq(0); end; in(other:SAME):BOOL is -- is_subset return is_subset(other); end; meet(o:SAME):BOOL is return (p.bit_and(o.p).card/=0); end; end;