// Copyright (C) 1999 Jean-Marc Valin & Dominic Letourneau
#include "Node.h"
#include "ObjectParser.h"
#include "variables.h"
using namespace std;
namespace FD {
class VarLoad;
DECLARE_NODE(VarLoad)
/*Node
*
* @name VarLoad
* @category General
* @description Load a variable. The variable is pulled from a node of type: " VarStore "(General) which has the same given name. The node: " VarStore " can be declared in a different Overflow file, but must be declared before.
*
* @output_name OUTPUT
* @output_description The variable value
*
* @parameter_name VARIABLE
* @parameter_description The name of the variable t be loaded
* @parameter_type string
*
END*/
/** A constant node contains a value that will never changes. */
class VarLoad : public Node
{
protected:
/**The ID of the 'value' output*/
int outputID;
String varName;
public:
/**Constructor, takes the name of the node and a set of parameters*/
VarLoad(string nodeName, ParameterSet params)
: Node(nodeName, params)
{
outputID = addOutput("OUTPUT");
varName = object_cast<String> (parameters.get("VARIABLE"));
}
virtual ObjectRef getOutput(int output_id, int count)
{
if (output_id==outputID)
{
map<string,ObjectRef>::iterator tmp = Variable::all.find(varName);
if (tmp!=Variable::all.end())
return tmp->second;
else
throw new NodeException (this, string("VarLoad: Unknown variable: ") + varName, __FILE__, __LINE__);
}
else throw new NodeException (this, "VarLoad: Unknown output id", __FILE__, __LINE__);
}
};
}//namespace FD
syntax highlighted by Code2HTML, v. 0.9.1