PadManager.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #ifndef PADMANAGER_H
  2. #define PADMANAGER_H
  3. #include <json/json.h>
  4. #include <vector>
  5. #include <iostream>
  6. #include <string>
  7. class PadDefinition;
  8. class PadEntry{
  9. public:
  10. PadEntry(int _id){id=_id; instance=NULL;}
  11. virtual ~PadEntry();
  12. int id;
  13. std::string name;
  14. std::string filename;
  15. std::string out_port;
  16. std::string in_port;
  17. PadDefinition* instance;
  18. };
  19. class PadManager
  20. {
  21. public:
  22. PadManager(){_init();}
  23. virtual ~PadManager(){_clean();}
  24. static void init(){
  25. if(!m_instance)
  26. m_instance=new PadManager();
  27. }
  28. static Json::Value read_pad(const std::string& name) {return m_instance->_read_pad(name);}
  29. static bool has_pad(const std::string& name) {return m_instance->_has_pad(name);}
  30. static PadDefinition* get_pad(const std::string& name) {return m_instance->_get_pad(name);}
  31. static PadEntry* get_info_at(int i) {return m_instance->m_list[i];}
  32. static int count() {return m_instance->m_list.size();}
  33. static void clean(){return m_instance->clean();};
  34. protected:
  35. void _clean();
  36. PadDefinition* _get_pad(const std::string& name);
  37. int _get_pad_index(const std::string& name);
  38. Json::Value _read_pad(const std::string& pad_name) const;
  39. bool _has_pad(const std::string& pad_name) const;
  40. PadEntry* _add();
  41. void _init();
  42. std::vector<PadEntry*> m_list;
  43. static PadManager* m_instance;
  44. friend class Application;
  45. };
  46. #endif // PADMANAGER_H