00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00027
00028
00029
00030 #include "MarControl.h"
00031
00032
00033 namespace Marsyas
00034 {
00035 class MarControlAccessor
00036 {
00037 private:
00038 MarControlPtr ctrl_;
00039 bool update_;
00040 bool readOnlyAccess_;
00041
00042 public:
00043 MarControlAccessor(MarControlPtr ctrl, bool update = true, bool readOnlyAccess = false)
00044 {
00045 ctrl_ = ctrl;
00046 update_ = update;
00047 readOnlyAccess_ = readOnlyAccess;
00048 }
00049
00050 ~MarControlAccessor()
00051 {
00052 #ifdef MARSYAS_TRACECONTROLS
00053 ctrl_->value_->setDebugValue();
00054 #endif
00055
00056 if(update_)
00057 ctrl_->value_->callMarSystemsUpdate();
00058 }
00059
00060 void enableUpdates() {update_ = true;};
00061 void disableUpdates(){update_ = false;};
00062
00063 template<class T> T& to()
00064 {
00065 return const_cast<T&>(ctrl_->to<T>());
00066 }
00067 };
00068 }
00069