From 7dbe0f92adac6d437f76843c0ea72c3fbe57c371 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Thu, 26 Dec 2013 00:14:53 +0000 Subject: making new base classes --- NT/src/rotor.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 NT/src/rotor.h (limited to 'NT/src/rotor.h') diff --git a/NT/src/rotor.h b/NT/src/rotor.h new file mode 100644 index 0000000..6835d01 --- /dev/null +++ b/NT/src/rotor.h @@ -0,0 +1,68 @@ +#include +#include +#include + +namespace Rotor { + + class Node; + class Frame_parameters; + + class Variable { //base type for variable pointers + public: + virtual void init(std::string s){}; + virtual ~Variable(){}; + }; + template class Variable_type : public Variable { + public: + Node* connection; + T* get(Frame_parameters frame); + bool connectable; + T value; + }; + //type specialisations deal with string conversion + + + //what happens if we want to link an unlinked attribute at runtime + //should attributes and paramaters just be the same thing + //it would be really nice if there could be arithmetic + //type objects that could act on multiple types + + //either we call them attributes and inlets or just vars + //for the author, is it better to have seperate static members? + //for the GUI, yes. but is that another issue? + //does the gui need a hint for the "basic" mode inlets so they stand out? + + class Node { //base type for node pointers + }; + template class Node_type : public Node { + public: + std::unordered_map vars; + NT* get_output(Frame_parameters frame); + virtual ~Node_type(){ + for (auto v:vars){ + delete v.second; + } + } + void init(std::map settings){ + for (auto s:settings) { + if (vars.find(s.first)){ + vars[s.first]->init(s.second); + } + } + } + template IT* create_inlet(std::string name){ + vars[name]=new Variable_type(); + return &((dynamic_cast*>(vars[name]))->value); + } + }; + + class a_node: public Node_type { + a_node(){ + delay=create_inlet("delay"); + //initialise the pointer to point at the instance variable + //how to delete the vars ??? + }; + int *delay; + }; + +} -- cgit v1.2.3