// Copyright (C) 1999 Jean-Marc Valin & Dominic Letourneau
#include "Collector.h"
//@implements core
using namespace std;
namespace FD {
DECLARE_NODE(Collector)
/*Node
* @name Collector
* @category Flow
* @description Pass through with unlimited number of input/output pairs
* @input_name INPUT
* @input_description The input
* @output_name OUTPUT
* @output_description The output = The input (same name)
END*/
Collector::Collector(string nodeName, ParameterSet params)
: Node(nodeName, params)
{
}
ObjectRef Collector::getOutputNamed (const string &outputName, int count) {
for (unsigned int i=0; i< inputs.size(); i++) {
if (inputs[i].name == outputName) {
return getOutput(i,count);
}
}
throw new NodeException(this,string("Unknown output name :")+outputName,__FILE__,__LINE__);
}
void Collector::initialize()
{
this->Node::initialize();
}
int Collector::translateInput (string inputName)
{
for (unsigned int i=0; i< inputs.size(); i++) {
if (inputs[i].name == inputName) {
return i;
}
}
return addInput(inputName);
}
int Collector::translateOutput (string outputName)
{
// Simply call translateInput because it should return
// the same integer...
return translateInput(outputName);
}
bool Collector::hasOutput(int output_id) const
{
return(int(inputs.size()) > output_id);
}
ObjectRef Collector::getOutput(int output_id, int count)
{
if (hasOutput(output_id)) {
try{
int outputID = inputs[output_id].outputID;
return (inputs[output_id].node)->getOutput(outputID,count);
} catch (BaseException *e)
{
//e->print();
throw e->add(new NodeException (this, "Exception caught in Collector::getOutput", __FILE__, __LINE__));
}
}
else {
throw new NodeException(this,"Unknown output_id",__FILE__,__LINE__);
}
}
}//namespace FD
syntax highlighted by Code2HTML, v. 0.9.1