#ifndef ROTOR_NODES_H #define ROTOR_NODES_H #include "rotor.h" using namespace std; namespace Rotor{ class Double_node: public Node_type { public: Double_node(){}; }; class Time: public Double_node { public: Time(){node_type="time";}; Time(map &settings):Time() { init(settings); }; const double &get_output(const Frame_parameters &frame){ value=frame.time; return value; } Time* clone(map &_settings) { return new Time(_settings);}; private: double value; }; class Multiply: public Double_node { public: Multiply(){ inlets=create_array("inlet"); value=create_inlet("value"); node_type="multiply"; } Multiply(map &settings):Multiply() { init(settings); }; const double &get_output(const Frame_parameters &frame){ result=inlets->get(0,frame)*value->get(frame); return result; } Multiply* clone(map &_settings) { return new Multiply(_settings);}; private: Variable_array_type *inlets; Variable_type *value; double result; }; class String_node: public Node_type { public: String_node(){}; }; class Print: public String_node { public: Print(){ inlet=create_inlet("inlet"); node_type="print"; } Print(map &settings):Print() { init(settings); }; const std::string &get_output(const Frame_parameters &frame){ std::ostringstream out; out << inlet->get(frame); result=out.str(); return result; } Print* clone(map &_settings) { return new Print(_settings);}; private: Variable_type *inlet; std::string result; }; } #endif //ROTOR_NODES_H