#ifndef PADMANAGER_H #define PADMANAGER_H #include #include #include #include class PadDefinition; class PadEntry{ public: PadEntry(int _id){id=_id; instance=NULL;} virtual ~PadEntry(); int id; std::string name; std::string filename; std::string out_port; std::string in_port; PadDefinition* instance; }; class PadManager { public: PadManager(){_init();} virtual ~PadManager(){_clean();} static void init(){ if(!m_instance) m_instance=new PadManager(); } static Json::Value read_pad(const std::string& name) {return m_instance->_read_pad(name);} static bool has_pad(const std::string& name) {return m_instance->_has_pad(name);} static PadDefinition* get_pad(const std::string& name) {return m_instance->_get_pad(name);} static PadEntry* get_info_at(int i) {return m_instance->m_list[i];} static int count() {return m_instance->m_list.size();} static void clean(){return m_instance->clean();}; protected: void _clean(); PadDefinition* _get_pad(const std::string& name); int _get_pad_index(const std::string& name); Json::Value _read_pad(const std::string& pad_name) const; bool _has_pad(const std::string& pad_name) const; PadEntry* _add(); void _init(); std::vector m_list; static PadManager* m_instance; friend class Application; }; #endif // PADMANAGER_H