1 #ifndef INCLUDED_ECA_IAMODE_PARSER_H
2 #define INCLUDED_ECA_IAMODE_PARSER_H
3 
4 #include <map>
5 #include <string>
6 #include <vector>
7 #include <pthread.h>
8 
9 #include "eca-error.h"
10 #include "eca-iamode-parser_impl.h"
11 
12 /**
13  * Class that handles registering and querying interactive mode commands.
14  * @author Kai Vehmanen
15  */
16 class ECA_IAMODE_PARSER : protected ECA_IAMODE_PARSER_COMMANDS {
17 
18  public:
19 
20   static const std::map<std::string,int>& registered_commands(void);
21   static std::vector<std::string> registered_commands_list(void);
22 
23   bool action_requires_params(int id);
24   bool action_requires_connected(int id);
25   bool action_requires_selected_not_connected(int id);
26   bool action_requires_selected(int id);
27   bool action_requires_selected_audio_input(int id);
28   bool action_requires_selected_audio_output(int id);
29 
30   ECA_IAMODE_PARSER(void);
31   virtual ~ECA_IAMODE_PARSER(void);
32 
33  protected:
34 
35   static int command_to_action_id(const std::string& cmdstring);
36 
37  private:
38 
39   static void register_commands_misc(void);
40   static void register_commands_cs(void);
41   static void register_commands_c(void);
42   static void register_commands_aio(void);
43   static void register_commands_ai(void);
44   static void register_commands_ao(void);
45   static void register_commands_cop(void);
46   static void register_commands_copp(void);
47   static void register_commands_ctrl(void);
48   static void register_commands_ctrlp(void);
49   static void register_commands_dump(void);
50   static void register_commands_external(void);
51 
52   private:
53 
54   static std::map<std::string,int>* cmd_map_repp;
55   static pthread_mutex_t lock_rep;
56 };
57 
58 void show_controller_help(void);
59 void show_controller_help_more(void);
60 
61 #endif
62