// Copyright (C) 1999 Jean-Marc Valin
#include "BufferedNode.h"
#include "Buffer.h"
#include "operators.h"
using namespace std;
namespace FD {
class Add;
DECLARE_NODE(Add)
/*Node
*
* @name Add
* @category Operator
* @description Adds two input values and returns the result
*
* @input_name INPUT1
* @input_description First value
*
* @input_name INPUT2
* @input_description Second value
*
* @output_name OUTPUT
* @output_description Result of the addition
*
END*/
class Add : public BufferedNode {
int m_input1ID;
int m_outputID;
public:
Add(string nodeName, ParameterSet params)
: BufferedNode(nodeName, params)
{
m_input1ID = addInput("INPUT1");
m_outputID = addOutput("OUTPUT");
}
virtual int translateInput (string inputName)
{
for (unsigned int i=0; i< inputs.size(); i++)
{
if (inputs[i].name == inputName)
{
return i;
}
}
return addInput(inputName);
}
void calculate(int output_id, int count, Buffer &out)
{
ObjectRef ReturnValue = getInput(m_input1ID, count);
for (int j = 1; j < inputs.size(); j++)
{
ObjectRef inputValue = getInput(j, count);
ReturnValue = ReturnValue + inputValue;
}
out[count] = ReturnValue;
}
NO_ORDER_NODE_SPEEDUP(Add)
};
}//namespace FD
syntax highlighted by Code2HTML, v. 0.9.1