#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(){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(){ factors=create_array("factors"); type="multiply"; description="multiplies numbers"; title="Multiply"; type_id="11c67850-7ce4-11e3-abf6-930ef8613c46"; ui_type="none"; } Multiply(map &settings):Multiply() { init(settings); }; const double &get_output(const Frame_parameters &frame){ double val=1.0f; for (auto var:factors->values) val*=var.get(frame); return val; } Multiply* clone(map &_settings) { return new Multiply(_settings);}; private: Variable_array_type *factors; double result; }; class String_node: public Node_type { public: String_node(){}; }; class Print: public String_node { public: Print(){ inlet=create_inlet("inlet"); 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