var_bool.hpp
Go to the documentation of this file.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 #ifndef VAR_BOOL_HPP
00026 #define VAR_BOOL_HPP
00027
00028 #include "variable.hpp"
00029 #include "observer.hpp"
00030
00031
00032
00033 class VarBool: public Variable, public Subject<VarBool>
00034 {
00035 public:
00036
00037 virtual const string &getType() const { return m_type; }
00038
00039
00040 virtual bool get() const = 0;
00041
00042 protected:
00043 VarBool( intf_thread_t *pIntf ): Variable( pIntf ) { }
00044 virtual ~VarBool() { }
00045
00046 private:
00047
00048 static const string m_type;
00049 };
00050
00051
00052
00053 class VarBoolTrue: public VarBool
00054 {
00055 public:
00056 VarBoolTrue( intf_thread_t *pIntf ): VarBool( pIntf ) { }
00057 virtual ~VarBoolTrue() { }
00058 virtual bool get() const { return true; }
00059 };
00060
00061
00062
00063 class VarBoolFalse: public VarBool
00064 {
00065 public:
00066 VarBoolFalse( intf_thread_t *pIntf ): VarBool( pIntf ) { }
00067 virtual ~VarBoolFalse() { }
00068 virtual bool get() const { return false; }
00069 };
00070
00071
00072
00073 class VarBoolImpl: public VarBool
00074 {
00075 public:
00076 VarBoolImpl( intf_thread_t *pIntf );
00077 virtual ~VarBoolImpl() { }
00078
00079
00080 virtual bool get() const { return m_value; }
00081
00082
00083 virtual void set( bool value );
00084
00085 private:
00086
00087 bool m_value;
00088 };
00089
00090
00091
00092 class VarBoolAndBool: public VarBool, public Observer<VarBool>
00093 {
00094 public:
00095 VarBoolAndBool( intf_thread_t *pIntf, VarBool &rVar1, VarBool &rVar2 );
00096 virtual ~VarBoolAndBool();
00097 virtual bool get() const { return m_rVar1.get() && m_rVar2.get(); }
00098
00099
00100 void onUpdate( Subject<VarBool> &rVariable, void* );
00101
00102 private:
00103
00104 VarBool &m_rVar1, &m_rVar2;
00105 };
00106
00107
00108
00109 class VarBoolOrBool: public VarBool, public Observer<VarBool>
00110 {
00111 public:
00112 VarBoolOrBool( intf_thread_t *pIntf, VarBool &rVar1, VarBool &rVar2 );
00113 virtual ~VarBoolOrBool();
00114 virtual bool get() const { return m_rVar1.get() || m_rVar2.get(); }
00115
00116
00117 void onUpdate( Subject<VarBool> &rVariable, void* );
00118
00119 private:
00120
00121 VarBool &m_rVar1, &m_rVar2;
00122 };
00123
00124
00125
00126 class VarNotBool: public VarBool, public Observer<VarBool>
00127 {
00128 public:
00129 VarNotBool( intf_thread_t *pIntf, VarBool &rVar );
00130 virtual ~VarNotBool();
00131 virtual bool get() const { return !m_rVar.get(); }
00132
00133
00134 void onUpdate( Subject<VarBool> &rVariable, void* );
00135
00136 private:
00137
00138 VarBool &m_rVar;
00139 };
00140
00141
00142 #endif