From: Carle C. <car...@us...> - 2005-03-11 18:54:58
|
Update of /cvsroot/robotflow/RobotFlow/MARIE/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12254/MARIE/src Modified Files: newMarieCommandBehavior.cpp Log Message: changed to receive a vector of ObjectRef which needs to be CompositeType for behavior parameters Index: newMarieCommandBehavior.cpp =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/MARIE/src/newMarieCommandBehavior.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** newMarieCommandBehavior.cpp 10 Mar 2005 20:59:35 -0000 1.4 --- newMarieCommandBehavior.cpp 11 Mar 2005 18:54:49 -0000 1.5 *************** *** 27,30 **** --- 27,31 ---- #include "Vector.h" #include "MarieDataNull.h" + #include "CompositeType.h" using namespace std; *************** *** 42,60 **** * @description Create an object of type MarieCommandBehavior * ! * @input_name BEHAVIOR_NAME ! * @input_type string ! * @input_description The behavior name that will be activated/deactivated ! * ! * @input_name BEHAVIOR_ACTIVATION ! * @input_type bool ! * @input_description true if the specified behavior is activated ! * ! * @input_name BEHAVIOR_PARAMETERS ! * @input_type String ! * @input_description Behavior's parameters in String form (seperated by space) ! * ! * @input_name BEHAVIOR_RESULTS ! * @input_type String ! * @input_description Behavior's results in String form (seperated by space) * * @output_name COMMAND_BEHAVIOR --- 43,49 ---- * @description Create an object of type MarieCommandBehavior * ! * @input_name BEHAVIOR_COMPOSITE_ACC ! * @input_type Vector<ObjectRef> ! * @input_description Accumulator of composite <BEHAVIOR_NAME <String>, BEHAVIOR_ACTIVATION<Bool>, BEHAVIOR_PARAMETERS<String>, BEHAVIOR_RESULTS<String>> -> behavior name, activation, parameters (separated by space), results (separated by space) * * @output_name COMMAND_BEHAVIOR *************** *** 69,79 **** class newMarieCommandBehavior : public BufferedNode { private: //intputs ! int m_behaviorNameID; ! int m_behaviorActivationID; ! int m_behaviorParametersID; ! int m_behaviorResultsID; //outputs --- 58,67 ---- class newMarieCommandBehavior : public BufferedNode { + typedef RCPtr< Vector<ObjectRef> > VECTOR_OBJECTREF_PTR; + typedef RCPtr<CompositeType> COMPOSITE_TYPE_PTR; private: //intputs ! int m_behaviorCompositeAccID; //outputs *************** *** 87,95 **** //inputs ! m_behaviorNameID = addInput("BEHAVIOR_NAME"); ! m_behaviorActivationID = addInput("BEHAVIOR_ACTIVATION"); ! m_behaviorParametersID = addInput("BEHAVIOR_PARAMETERS"); ! m_behaviorResultsID = addInput("BEHAVIOR_RESULTS"); ! //outputs m_behaviorCommandID = addOutput("COMMAND_BEHAVIOR"); --- 75,80 ---- //inputs ! m_behaviorCompositeAccID = addInput("BEHAVIOR_COMPOSITE_ACC"); ! //outputs m_behaviorCommandID = addOutput("COMMAND_BEHAVIOR"); *************** *** 98,135 **** void calculate(int output_id, int count, Buffer &out) { ! ObjectRef BehaviorNameValue = getInput(m_behaviorNameID,count); ! ObjectRef BehaviorActivationValue = getInput(m_behaviorActivationID,count); ! ObjectRef BehaviorParametersValue = getInput(m_behaviorParametersID,count); ! ObjectRef BehaviorResultsValue = getInput(m_behaviorResultsID,count); ! ! if (!BehaviorNameValue->isNil() && !BehaviorActivationValue->isNil()) { ! ! RCPtr<String> name = BehaviorNameValue; ! RCPtr<Bool> activation = BehaviorActivationValue; ! ! MarieCommandBehavior *cb = new MarieCommandBehavior(); ! ! cb->setActivation(name->val(), activation->val()); ! ! if(!BehaviorParametersValue->isNil()) ! { ! RCPtr<String> parameters = BehaviorParametersValue; ! cb->setParameters(name->val(), parameters->val()); ! } ! ! if(!BehaviorResultsValue->isNil()) ! { ! RCPtr<String> results = BehaviorResultsValue; ! cb->setResults(name->val(), results->val()); ! } ! ! out[count] = ObjectRef(cb); } ! else { ! out[count] = ObjectRef(new MarieDataNull()); } - } };//class newMarieCommandBehavior --- 83,139 ---- void calculate(int output_id, int count, Buffer &out) { + ObjectRef vectorPtr = getInput(m_behaviorCompositeAccID,count); ! if (!vectorPtr->isNil()) ! { ! VECTOR_OBJECTREF_PTR vector = vectorPtr; ! MarieCommandBehavior *cb = new MarieCommandBehavior(); ! ! for(int i = 0; i < (*vector).size(); i++) ! { ! ObjectRef elementPtr = (*vector)[i]; ! ! if(!elementPtr->isNil()) ! { ! COMPOSITE_TYPE_PTR element = elementPtr; ! ! ObjectRef namePtr = element->get("BEHAVIOR_NAME"); ! ObjectRef activationPtr = element->get("BEHAVIOR_ACTIVATION"); ! ObjectRef parametersPtr = element->get("BEHAVIOR_PARAMETERS"); ! ObjectRef resultsPtr = element->get("BEHAVIOR_RESULTS"); ! ! ! if(!namePtr->isNil()) ! { ! RCPtr<String> name = namePtr; ! ! if(!activationPtr->isNil()) ! { ! RCPtr<Bool> activation = activationPtr; ! cb->setActivation(*name, *activation); ! } ! ! if(!parametersPtr->isNil()) ! { ! RCPtr<String> parameters = parametersPtr; ! cb->setParameters(*name, *parameters); ! } ! ! if(!resultsPtr->isNil()) ! { ! RCPtr<String> results = resultsPtr; ! cb->setResults(*name, *results); ! } ! } ! } ! } ! ! out[count] = ObjectRef(cb); } ! else ! { ! out[count] = ObjectRef(new MarieDataNull()); } } };//class newMarieCommandBehavior |