#include <logic_condition.h>
Nevrax France
Definition at line 108 of file logic_condition.h.
Public Types | |
| enum | TLogicConditionLogicBlockType { NOT = 0, COMPARISON, SUB_CONDITION } |
| all condition logic block types More... | |
Public Member Functions | |
| CLogicConditionLogicBlock () | |
| void | fillVarSet (std::set< std::string > &condVars) |
| bool | isNotBlock () const |
| void | read (xmlNodePtr node) |
| void | setLogicStateMachine (CLogicStateMachine *logicStateMachine) |
| bool | testLogic () |
| void | write (xmlNodePtr node) const |
Data Fields | |
| CLogicComparisonBlock | ComparisonBlock |
| comparison block | |
| std::string | SubCondition |
| name of the sub-condition | |
| TLogicConditionLogicBlockType | Type |
| type of this condition block | |
Private Attributes | |
| CLogicStateMachine * | _LogicStateMachine |
| state machine managing this logic block | |
|
|
all condition logic block types
Definition at line 116 of file logic_condition.h. Referenced by read().
00117 {
00118 NOT = 0,
00119 COMPARISON,
00120 SUB_CONDITION,
00121 };
|
|
|
Default constructor Definition at line 135 of file logic_condition.h. References SUB_CONDITION, and SubCondition.
00136 {
00137 Type = SUB_CONDITION;
00138 SubCondition = "no_condition";
00139 }
|
|
|
Fill a set with all the variables name referenced by this condition
Definition at line 193 of file logic_condition.cpp. References COMPARISON, ComparisonBlock, condition, NLLOGIC::CLogicStateMachine::getCondition(), SUB_CONDITION, SubCondition, and NLLOGIC::CLogicComparisonBlock::VariableName. Referenced by NLLOGIC::CLogicConditionNode::fillVarSet().
00194 {
00195 if( Type == COMPARISON )
00196 {
00197 condVars.insert( ComparisonBlock.VariableName );
00198 }
00199 else
00200 {
00201 if( Type == SUB_CONDITION )
00202 {
00203 CLogicCondition condition;
00204 if( _LogicStateMachine->getCondition(SubCondition,condition) )
00205 {
00206 condition.fillVarSet( condVars );
00207 }
00208 }
00209 }
00210
00211 } // fillVarSet //
|
|
|
Return info about the type of the block
Definition at line 146 of file logic_condition.h. References NOT. Referenced by NLLOGIC::CLogicConditionNode::testLogic().
|
|
|
Definition at line 265 of file logic_condition.cpp. References COMPARISON, ComparisonBlock, NLLOGIC::getXMLProp(), NOT, NLLOGIC::CLogicComparisonBlock::read(), SUB_CONDITION, SubCondition, TLogicConditionLogicBlockType, and NLLOGIC::xmlCheckNodeName(). Referenced by NLLOGIC::CLogicConditionNode::read().
00266 {
00267 xmlCheckNodeName (node, "CONDITION_LOGIC_NODE");
00268
00269 Type = (TLogicConditionLogicBlockType)atoi(getXMLProp (node, "Type").c_str());
00270 switch( Type )
00271 {
00272 case NOT : break;
00273
00274 case COMPARISON :
00275 {
00276 ComparisonBlock.read (node);
00277 }
00278 break;
00279
00280 case SUB_CONDITION :
00281 {
00282 SubCondition = getXMLProp (node, "SubCondition");
00283 }
00284 break;
00285 };
00286 }
|
|
|
Set the logic state machine
Definition at line 126 of file logic_condition.cpp. References ComparisonBlock, nlwarning, and NLLOGIC::CLogicComparisonBlock::setLogicStateMachine(). Referenced by NLLOGIC::CLogicConditionNode::setLogicStateMachine().
00127 {
00128 if( logicStateMachine == 0 )
00129 {
00130 nlwarning("(LOGIC)<CCLogicConditionLogicBlock::setLogicStateMachine> The state machine is null");
00131 }
00132 else
00133 {
00134 // set the state machine of this node
00135 _LogicStateMachine = logicStateMachine;
00136
00137 // set the state machine of the logic block
00138 ComparisonBlock.setLogicStateMachine( logicStateMachine );
00139 }
00140
00141 } // setLogicStateMachine //
|
|
|
Test the condition
Definition at line 148 of file logic_condition.cpp. References COMPARISON, ComparisonBlock, condition, NLLOGIC::CLogicStateMachine::getCondition(), NLLOGIC::CLogicStateMachine::getName(), nlerror, nlwarning, NOT, SUB_CONDITION, SubCondition, and NLLOGIC::CLogicComparisonBlock::testLogic(). Referenced by NLLOGIC::CLogicConditionNode::testLogic().
00149 {
00150 switch( Type )
00151 {
00152 case NOT :
00153 {
00154 return true;
00155 }
00156 break;
00157
00158 case COMPARISON :
00159 {
00160 return ComparisonBlock.testLogic();
00161 }
00162 break;
00163
00164 case SUB_CONDITION :
00165 {
00166 CLogicCondition condition;
00167 if( _LogicStateMachine->getCondition(SubCondition,condition) )
00168 {
00169 return condition.testLogic();
00170 }
00171 else
00172 {
00173 nlwarning("(LOGIC)<CLogicConditionLogicBlock::testLogic> The subcondition \"%s\" is unknown in the state machine \"%s\"",
00174 SubCondition.c_str(),_LogicStateMachine->getName().c_str());
00175 }
00176
00177 }
00178
00179 default :
00180 nlerror("(LOGIC)<CLogicConditionLogicBlock::testLogic> logic block type %d is unknown",Type);
00181 }
00182
00183 return false;
00184
00185 } // testLogic //
|
|
|
serial Definition at line 243 of file logic_condition.cpp. References COMPARISON, ComparisonBlock, NOT, SUB_CONDITION, SubCondition, uint32, and NLLOGIC::CLogicComparisonBlock::write(). Referenced by NLLOGIC::CLogicConditionNode::write().
00244 {
00245 xmlNodePtr elmPtr = xmlNewChild ( node, NULL, (const xmlChar*)"CONDITION_LOGIC_NODE", NULL);
00246 xmlSetProp (elmPtr, (const xmlChar*)"Type", (const xmlChar*)toString((uint32)Type).c_str());
00247 switch( Type )
00248 {
00249 case NOT : break;
00250
00251 case COMPARISON :
00252 {
00253 ComparisonBlock.write(elmPtr);
00254 }
00255 break;
00256
00257 case SUB_CONDITION :
00258 {
00259 xmlSetProp (elmPtr, (const xmlChar*)"SubCondition", (const xmlChar*)SubCondition.c_str());
00260 }
00261 break;
00262 };
00263 }
|
|
|
state machine managing this logic block
Definition at line 111 of file logic_condition.h. |
|
|
comparison block
Definition at line 130 of file logic_condition.h. Referenced by fillVarSet(), read(), setLogicStateMachine(), testLogic(), and write(). |
|
|
name of the sub-condition
Definition at line 127 of file logic_condition.h. Referenced by CLogicConditionLogicBlock(), fillVarSet(), read(), testLogic(), and write(). |
|
|
type of this condition block
Definition at line 124 of file logic_condition.h. |
1.3.6