BitSet.hpp
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:1k
源码类别:

编译器/解释器

开发平台:

Others

  1. #ifndef INC_BitSet_hpp__
  2. #define INC_BitSet_hpp__
  3. #include "antlr/config.hpp"
  4. #include <vector>
  5. #include <sys/types.h>
  6. ANTLR_BEGIN_NAMESPACE(antlr)
  7. /**A BitSet to replace java.util.BitSet.
  8.  * Primary differences are that most set operators return new sets
  9.  * as opposed to oring and anding "in place".  Further, a number of
  10.  * operations were added.  I cannot contain a BitSet because there
  11.  * is no way to access the internal bits (which I need for speed)
  12.  * and, because it is final, I cannot subclass to add functionality.
  13.  * Consider defining set degree.  Without access to the bits, I must
  14.  * call a method n times to test the ith bit...ack!
  15.  *
  16.  * Also seems like or() from util is wrong when size of incoming set is bigger
  17.  * than this.length.
  18.  *
  19.  *
  20.  * This is a C++ version of the Java class described above, with only
  21.  * a handful of the methods implemented, because we don't need the
  22.  * others at runtime. It's really just a wrapper around vector<bool>,
  23.  * which should probably be changed to a wrapper around bitset, once
  24.  * bitset is more widely available.
  25.  *
  26.  * @author Terence Parr, MageLang Institute
  27.  * @author <br><a href="mailto:pete@yamuna.demon.co.uk">Pete Wells</a>
  28.  */
  29. class BitSet {
  30. private:
  31. ANTLR_USE_NAMESPACE(std)vector<bool> storage;
  32. public:
  33. BitSet(int nbits=64);
  34. BitSet(const unsigned long* bits_,int nlongs);
  35. ~BitSet();
  36. void add(int el);
  37. bool member(int el) const;
  38. ANTLR_USE_NAMESPACE(std)vector<int> toArray() const;
  39. };
  40. ANTLR_END_NAMESPACE
  41. #endif //INC_BitSet_hpp__