kodi
Builtins.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include <map>
12 #include <string>
13 #include <vector>
14 
15 class CBuiltins
16 {
17 public:
19  struct BUILT_IN
20  {
21  std::string description;
22  size_t parameters;
23  int (*Execute)(const std::vector<std::string>& params);
24  };
25 
27  typedef std::map<std::string,CBuiltins::BUILT_IN> CommandMap;
28 
29  static CBuiltins& GetInstance();
30 
31  bool HasCommand(const std::string& execString);
32  bool IsSystemPowerdownCommand(const std::string& execString);
33  void GetHelp(std::string &help);
34  int Execute(const std::string& execString);
35 
36 protected:
37  CBuiltins();
38  CBuiltins(const CBuiltins&) = delete;
39  const CBuiltins& operator=(const CBuiltins&) = delete;
40  virtual ~CBuiltins();
41 
42 private:
43  CommandMap m_command;
44 
45 
47  template<class T>
48  void RegisterCommands()
49  {
50  T t;
51  CommandMap map = t.GetOperations();
52  m_command.insert(map.begin(), map.end());
53  }
54 };
55 
std::map< std::string, CBuiltins::BUILT_IN > CommandMap
A map of commands.
Definition: Builtins.h:27
Struct representing a command from handler classes.
Definition: Builtins.h:19
size_t parameters
Number of required parameters (can be 0)
Definition: Builtins.h:22
Definition: Builtins.h:15
std::string description
Description of command (help string)
Definition: Builtins.h:21
int(* Execute)(const std::vector< std::string > &params)
Function to handle command.
Definition: Builtins.h:23