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;