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
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef CONDITIONCOMPOSITE_HPP
00039 #define CONDITIONCOMPOSITE_HPP
00040
00041 #include "rtt-scripting-config.h"
00042 #include "ConditionInterface.hpp"
00043
00044 namespace RTT { namespace scripting {
00045
00046
00050 class RTT_SCRIPTING_API ConditionBinaryCompositeAND
00051 : public ConditionInterface
00052 {
00053 ConditionInterface* lhs;
00054 ConditionInterface* rhs;
00055 public:
00061 ConditionBinaryCompositeAND( ConditionInterface* l, ConditionInterface* r )
00062 : lhs( l ), rhs( r )
00063 {
00064 }
00065
00066 virtual ConditionInterface* clone() const
00067 {
00068 return new ConditionBinaryCompositeAND( lhs->clone(), rhs->clone() );
00069 }
00070
00071 ConditionBinaryCompositeAND* copy( std::map<const base::DataSourceBase*, base::DataSourceBase*>& alreadyCloned ) const {
00072 return new ConditionBinaryCompositeAND(lhs->copy(alreadyCloned),rhs->copy(alreadyCloned));
00073 }
00074
00075 virtual ~ConditionBinaryCompositeAND() {
00076 delete lhs;
00077 delete rhs;
00078 }
00079
00080 virtual bool evaluate() {
00081 if ( lhs->evaluate() )
00082 if ( rhs->evaluate() )
00083 return true;
00084 return false;
00085 }
00086
00087 virtual void reset()
00088 {
00089 lhs->reset();
00090 rhs->reset();
00091 }
00092 };
00093
00094
00095
00096
00097 class RTT_SCRIPTING_API ConditionBinaryCompositeOR
00098 : public ConditionInterface
00099 {
00100 ConditionInterface* lhs;
00101 ConditionInterface* rhs;
00102 public:
00108 ConditionBinaryCompositeOR( ConditionInterface* l, ConditionInterface* r )
00109 : lhs( l ), rhs( r )
00110 {
00111 }
00112
00113 virtual ConditionInterface* clone() const
00114 {
00115 return new ConditionBinaryCompositeOR( lhs->clone(), rhs->clone() );
00116 }
00117
00118 ConditionBinaryCompositeOR* copy( std::map<const base::DataSourceBase*, base::DataSourceBase*>& alreadyCloned ) const {
00119 return new ConditionBinaryCompositeOR(lhs->copy(alreadyCloned),rhs->copy(alreadyCloned));
00120 }
00121
00122 virtual ~ConditionBinaryCompositeOR() {
00123 delete lhs;
00124 delete rhs;
00125 }
00126
00127 virtual bool evaluate() {
00128 if ( lhs->evaluate() )
00129 return true;
00130 if ( rhs->evaluate() )
00131 return true;
00132 return false;
00133 }
00134
00135 virtual void reset()
00136 {
00137 lhs->reset();
00138 rhs->reset();
00139 }
00140 };
00141
00142 class RTT_SCRIPTING_API ConditionCompositeNOT
00143 : public ConditionInterface
00144 {
00145 ConditionInterface* cond;
00146 public:
00147 ConditionCompositeNOT( ConditionInterface* c )
00148 : cond( c )
00149 {
00150 }
00151 ~ConditionCompositeNOT();
00152 bool evaluate();
00153 ConditionCompositeNOT* clone() const;
00154 ConditionCompositeNOT* copy( std::map<const base::DataSourceBase*, base::DataSourceBase*>& alreadyCloned ) const;
00155 void reset();
00156 };
00157 }}
00158
00159 #endif