Astra Linux Directory Client Core API  1.7.0
 Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Макросы Группы Страницы
ALDCommand.h
См. документацию.
1 
6 #ifndef ALD_COMMAND
7 #define ALD_COMMAND
8 
9 #include "common.h"
10 #include "ALDCore.h"
11 #include <map>
12 #include <list>
13 #include <memory>
14 
15 using namespace std;
16 
17 namespace ALD
18 {
19 
30 };
31 
39 };
40 
45 {
46 protected:
47  bool m_bActive;
48  bool m_bMultiple;
49  bool m_bMandatory;
50  string m_strName;
55 public:
57  inline const string &name() const {return m_strName;}
59  inline int ident() const {return m_iShortIdent;}
61  inline bool IsActive() const {return m_bActive;}
63  inline bool multiple() const {return m_bMultiple;}
65  inline bool mandatory() const {return m_bMandatory;}
67  inline acArgumentNecessity hasArgument() const {return m_HasArgument;}
69  inline acArgumentType argumentType() const {return m_ArgumentType;}
71  void SetActive();
73  void SetActive(const string& arg);
75  string argument() const;
77  unsigned int uargument() const;
79  inline ald_string_list& Arguments() {return m_lstArguments;}
81  virtual void Clear();
83  CALDCommandOption(const string& strName, int iShortIdent = 0,
84  acArgumentNecessity HasArgument = anNoArgument,
85  acArgumentType ArgumentType = acatText,
86  bool bMultiple = false, bool bMandatory = false);
87  virtual ~CALDCommandOption();
88 };
89 
91 typedef shared_ptr<CALDCommandOption> CALDCommandOptionPtr;
92 
94 typedef map<string, CALDCommandOptionPtr> ald_command_option_map;
95 
100 {
101 protected:
103  ald_command_option_map::iterator m_itOption;
104 public:
107  void begin();
109  CALDCommandOptionPtr next();
111  CALDCommandOptionPtr OptionByName(const string& strName);
113  bool IsActive(const string& opt);
115  void Add(CALDCommandOptionPtr Option);
117  void Add(CALDCommandOption* pOption);
119  void Remove(const string& strName);
121  void Assign(const CALDCommandOptions& Options);
123  void CopyFrom(CALDCommandOptions& Options);
125  void Clear();
127  void ClearOptionsState();
129  inline size_t Size() const {return m_mapOptions.size();}
130  virtual ~CALDCommandOptions();
131 };
132 
137 {
138 protected:
139  string m_strSection;
140  string m_strName;
141  string m_strDesc;
148 
149  bool CheckArguments();
150 
151  virtual int Execute() = 0;
152 public:
154  inline const string &section() const {return m_strSection;}
156  inline const string &name() const {return m_strName;}
158  inline const string &desc() const {return m_strDesc;}
160  string argument() const;
162  inline acArgumentNecessity hasArgument() const {return m_HasArgument;}
164  inline bool IsPrivileged() const {return m_bPrivileged;}
166  inline bool IsIndependent() const {return m_bIndependent;}
168  virtual void ShowUsage() const = 0;
170  virtual int Run();
172  inline CALDCommandOptions& Options() {return m_Options;}
174  inline bool OptionIsActive(const string& opt) { return m_Options.IsActive(opt);}
176  inline CALDCommandOptionPtr OptionByName(const string& strName) {return m_Options.OptionByName(strName);}
178  void AddArgument(const string& arg);
180  virtual void Clear();
182  virtual void FillRLArguments(const string& option, ald_string_list& list, bool& isfile);
184  virtual void FillRLOptions(ald_string_list& list);
186  CALDCommand(IALDCore& Core);
187  virtual ~CALDCommand();
188 };
189 
191 typedef shared_ptr<CALDCommand> CALDCommandPtr;
193 typedef map<string, CALDCommandPtr> ald_command_map;
194 
199 {
200 protected:
202  ald_command_map::iterator m_itCommand;
203 public:
204  CALDCommands();
206  void begin();
208  CALDCommandPtr next();
210  CALDCommandPtr CommandByName(const string& strName);
212  void Remove(const string& strName);
214  void RemoveCommands(CALDCommands& Commands);
216  void Add(CALDCommandPtr Command);
218  void Add(CALDCommand* pCommand);
220  void Add(CALDCommands& Commands);
222  void Assign(const CALDCommands& Commands);
224  void Clear();
226  size_t Size() const;
227  virtual ~CALDCommands();
228 };
229 
231 
232 } // ALD
233 
234 #endif // ALD_COMMAND
Класс контейнера команд
Definition: ALDCommand.h:198
list< string > ald_string_list
Список строк
Definition: ALDUtils.h:152
Объявление основного интерфейса клиента Astra Linux Directory и необходимых для него типов и интерфей...
acArgumentNecessity
Тип необходимости аргумента
Definition: ALDCommand.h:26
Восьмеричное число
Definition: ALDCommand.h:37
bool m_bPrivileged
Признак привилегированной команды
Definition: ALDCommand.h:146
bool mandatory() const
Возвращает признак необходимости
Definition: ALDCommand.h:65
Абстрактный базовый класс команды
Definition: ALDCommand.h:136
size_t Size() const
Размер контейнера (количество опций)
Definition: ALDCommand.h:129
ald_string_list & Arguments()
Возвращает список аргументов
Definition: ALDCommand.h:79
bool OptionIsActive(const string &opt)
Возвращает активность опции команды по имени
Definition: ALDCommand.h:174
string m_strDesc
Описание
Definition: ALDCommand.h:141
ald_command_option_map m_mapOptions
Карта опций
Definition: ALDCommand.h:102
CALDCommandOptions m_Options
Опции команды
Definition: ALDCommand.h:142
bool m_bMandatory
Признак необходимости
Definition: ALDCommand.h:49
Класс контейнера опций команды
Definition: ALDCommand.h:99
bool m_bActive
Признак активности
Definition: ALDCommand.h:47
bool IsActive() const
Возвращает признак активности
Definition: ALDCommand.h:61
int m_iShortIdent
Короткое значение
Definition: ALDCommand.h:51
ald_string_list m_lstArguments
Список аргументов
Definition: ALDCommand.h:54
bool multiple() const
Возвращает признак множественности
Definition: ALDCommand.h:63
CALDCommandOptionPtr OptionByName(const string &strName)
Возвращет опцию по имени
Definition: ALDCommand.h:176
acArgumentNecessity hasArgument() const
Возвращает тип необходимости аргумента
Definition: ALDCommand.h:67
string m_strName
Имя опции
Definition: ALDCommand.h:50
const string & name() const
Возвращает имя
Definition: ALDCommand.h:57
map< string, CALDCommandPtr > ald_command_map
Карта команд (имя=>разделяемый указатель на команду
Definition: ALDCommand.h:193
acArgumentType m_ArgumentType
Ожидаемый тип аргумента
Definition: ALDCommand.h:53
bool IsPrivileged() const
Возвращает признак привилегированной команды
Definition: ALDCommand.h:164
bool IsIndependent() const
Возвращает признак независимой команды
Definition: ALDCommand.h:166
Аргумент может быть
Definition: ALDCommand.h:29
CALDCommandOptions & Options()
Возвращает контейнер опций
Definition: ALDCommand.h:172
shared_ptr< CALDCommand > CALDCommandPtr
Разделяемый указатель на команду
Definition: ALDCommand.h:191
Текст
Definition: ALDCommand.h:34
bool m_bMultiple
Признак множественности
Definition: ALDCommand.h:48
acArgumentType
Ожидаемый тип аргумента
Definition: ALDCommand.h:33
string m_strSection
Секция помощи
Definition: ALDCommand.h:139
const string & name() const
Возвращает имя
Definition: ALDCommand.h:156
Аргумент не требуется
Definition: ALDCommand.h:27
Шестнадцатиричное число
Definition: ALDCommand.h:36
bool m_bIndependent
Признак независимой команды
Definition: ALDCommand.h:147
acArgumentNecessity m_HasArgument
Тип необходимости аргумента
Definition: ALDCommand.h:52
ald_string_list m_lstArguments
Список аргументов
Definition: ALDCommand.h:143
Основной заголовочный файл, содержащий необходимый минимум предварительных объявлений и включений дру...
Период времени
Definition: ALDCommand.h:38
ald_command_map m_mapCommands
Карта команд
Definition: ALDCommand.h:201
acArgumentNecessity hasArgument() const
Возвращает тип необходимости аргумента
Definition: ALDCommand.h:162
string m_strName
Имя
Definition: ALDCommand.h:140
Десятичное число
Definition: ALDCommand.h:35
const string & desc() const
Возвращает описание
Definition: ALDCommand.h:158
map< string, CALDCommandOptionPtr > ald_command_option_map
Карта опций (имя=>разделяемый указатель на опцию)
Definition: ALDCommand.h:94
IALDCore * m_pCore
Указатель на интерфейс ядра Astra Linux Directory.
Definition: ALDCommand.h:145
Аргумент обязателен
Definition: ALDCommand.h:28
acArgumentType argumentType() const
Возвращает ожидаемый тип аргумента
Definition: ALDCommand.h:69
ald_command_map::iterator m_itCommand
Итератор команд
Definition: ALDCommand.h:202
acArgumentNecessity m_HasArgument
Тип необходимости аргумента
Definition: ALDCommand.h:144
ald_command_option_map::iterator m_itOption
Итератор опций
Definition: ALDCommand.h:103
const string & section() const
Возвращает секцию команды
Definition: ALDCommand.h:154
Базовый класс опции команды
Definition: ALDCommand.h:44
int ident() const
Возвращает короткое значение
Definition: ALDCommand.h:59
shared_ptr< CALDCommandOption > CALDCommandOptionPtr
Разделяемый указатель на опцию
Definition: ALDCommand.h:91
Абстрактный класс IALDCore - основной интерфейс клиента Astra Linux Directory, с помощью которого вып...
Definition: ALDCore.h:241