#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"; description="time in fractional seconds"; title="Time"; type_id="4bdaaa7a-8194-11e3-8a4f-2ff6852ae2c7"; ui_type="none"; }; Time(Json::Value &settings):Time() { init(settings); }; const double &get_output(const Frame_parameters &frame){ value=frame.get_time(); return value; } Time* clone(Json::Value &_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(Json::Value &settings):Multiply() { init(settings); }; const double &get_output(const Frame_parameters &frame){ result=1.0f; //for (auto val:factors->get_values()) { // result*=val.get(frame); //} //std::cerr<<"multiplying "<get_number()<<" factors"<get_number();i++){ //std::cerr<<"result from input "<get(i,frame)<get(i,frame); } return result; } Multiply* clone(Json::Value &_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"; description="number as a string"; title="Print"; type_id="9b9232b8-8194-11e3-a5a2-07659a1b53c3"; ui_type="none"; } Print(Json::Value &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(Json::Value &_settings) { return new Print(_settings);}; private: Variable_type *inlet; std::string result; }; } #endif //ROTOR_NODES_H