bitfield.hh

00001 #ifndef DUNE_BITFIELD_HH
00002 #define DUNE_BITFIELD_HH
00003 
00004 #include <vector>
00005 #include <iostream>
00006 
00007 namespace Dune {
00008 
00015   class BitField : public std::vector<bool> {
00016 
00017   public:
00018 
00020       BitField() : std::vector<bool>() {}
00021 
00023       explicit BitField(int n) : std::vector<bool>(n) {}
00024 
00026     BitField(int n, bool v) : std::vector<bool>(n) {
00027       for (size_t i=0; i<size(); i++)
00028         (*this)[i] = v;
00029     }
00030             
00032     void setAll() {
00033       for (size_t i=0; i<size(); i++)
00034         (*this)[i] = true;
00035     }
00036 
00038     void unsetAll() {
00039       for (size_t i=0; i<size(); i++)
00040         (*this)[i] = false;
00041     }
00042 
00044     int nSetBits() const {
00045       int n = 0;
00046       for (size_t i=0; i<size(); i++)
00047         n += ((*this)[i]) ? 1 : 0;
00048 
00049       return n;
00050     }
00051 
00053     friend std::ostream& operator<< (std::ostream& s, const BitField& v)
00054     {
00055       for (size_t i=0; i<v.size(); i++)
00056         s << v[i] << "  ";
00057             
00058       s << std::endl;
00059       return s;
00060     }
00061 
00062   };
00063 
00064 }
00065 
00066 #endif

Generated on 9 Apr 2008 with Doxygen (ver 1.5.2) [logfile].