#ifndef _VECTORGETINDEX_CC_
#define _VECTORGETINDEX_CC_
#include "BufferedNode.h"
#include "Vector.h"
#include "Exception.h"
using namespace std;
namespace FD {
class VectorGetIndex;
DECLARE_NODE(VectorGetIndex)
/*Node
* @name VectorGetIndex
* @category Vector
* @description Change data at the INDEX of the VECTOR by the VALUE.
*
* @input_name VECTOR
* @input_type Vector
* @input_description Vector
*
* @input_name INDEX
* @input_type int
* @input_description Vector index
*
* @output_name OUTPUT
* @output_type any
* @output_description Vector element at position index
*
END*/
class VectorGetIndex : public BufferedNode {
//inputs
int m_vectorID;
int m_indexID;
//outputs
int m_outputID;
public:
VectorGetIndex(string nodeName, ParameterSet params)
: BufferedNode(nodeName, params) {
//inputs
m_vectorID = addInput("VECTOR");
m_indexID = addInput("INDEX");
//outputs
m_outputID = addOutput("OUTPUT");
}
void calculate(int output_id, int count, Buffer &out) {
try {
ObjectRef indexValue = getInput(m_indexID,count);
int index = dereference_cast<int>(indexValue);
RCPtr<BaseVector> vect = getInput(m_vectorID,count);
out[count] = vect->getIndex(index);
}
catch (BaseException *e) {
char message[256];
ObjectRef indexValue = getInput(m_indexID,count);
int index = dereference_cast<int>(indexValue);
sprintf(message,"Unable to get vector index at : %i",index);
throw e->add (new GeneralException(message, __FILE__, __LINE__));
}
}//calculate
};
}//namespace FD
#endif
syntax highlighted by Code2HTML, v. 0.9.1