00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _cvcl__include__cdflags_h_
00031 #define _cvcl__include__cdflags_h_
00032
00033 #include "context.h"
00034
00035 namespace CVCL {
00036
00037
00038
00039
00040
00041
00042
00043
00044 class CDFlags :public ContextObj {
00045 unsigned d_flags;
00046
00047 virtual ContextObj* makeCopy(void) { return new CDFlags(*this); }
00048 virtual void restoreData(ContextObj* data)
00049 { d_flags = ((CDFlags*)data)->d_flags; }
00050 virtual void setNull(void) { FatalAssert(false, "Should never be called"); }
00051
00052 void update(unsigned mask, int scope, bool setMask);
00053
00054
00055
00056 CDFlags(const CDFlags& cdflags): ContextObj(cdflags), d_flags(cdflags.d_flags) { }
00057 CDFlags& operator=(const CDFlags& cdflags) { return *this; }
00058
00059 public:
00060 CDFlags(Context* context) : ContextObj(context), d_flags(0)
00061 { IF_DEBUG(setName("CDFlags")); }
00062 ~CDFlags() { TRACE("context verbose", "~CDFlags[", this, "]"); }
00063 void set(unsigned mask, int scope=-1) { update(mask, scope, true); }
00064 void clear(unsigned mask, int scope=-1) { update(mask, scope, false); }
00065 bool get(unsigned mask) const { return d_flags & mask; }
00066 };
00067
00068 }
00069
00070 #endif