-// Note that the accessor functions are unsafe, but this is handled in
-// the next layer up. 64bit uints can be substituted to taste (shift=6).
-template<size_t M> class bitmap
-{
-private:
- typedef uint32_t bitu_t; enum { shift=5 };
- enum { bmax=M, bpu=1<<shift, mask=bpu-1, units=(bmax+bpu-1)/bpu };
- bitu_t bits[units];
-public:
- bool get(size_t idx) const { return bits[idx>>shift]&(1<<(idx&mask)); }
- void set(size_t idx) { bits[idx>>shift]|= 1<<(idx&mask); }
- void reset(size_t idx) { bits[idx>>shift]&=~(1<<(idx&mask)); }
- void toggle(size_t idx) { bits[idx>>shift]^= 1<<(idx&mask); }
- size_t maxbit() const { return bmax; }
- void clear() { memset(bits,0,sizeof(bits)); }
- bitmap() { clear(); }
- ~bitmap() { }
- bool empty() const { // naive invert() will break this
- for(size_t i=0;i<units;++i)
- if(bits[i]) return false;
- return true;
- }
-};
-
-typedef bitmap<libvlc_VlmMediaInstanceStatusError+1> eventtypes_bitmap_t;
-
-
-class EventObj: private eventtypes_bitmap_t