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();
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();
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);
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();
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
ALD::CALDCommandOption::hasArgument
acArgumentNecessity hasArgument() const
Возвращает тип необходимости аргумента
Definition: ALDCommand.h:67
ALD::CALDCommandOption::Arguments
ald_string_list & Arguments()
Возвращает список аргументов
Definition: ALDCommand.h:79
ALD::CALDCommands::CommandByName
CALDCommandPtr CommandByName(const string &strName)
Возвращает команду по имени
ALD::CALDCommandOption::IsActive
bool IsActive() const
Возвращает признак активности
Definition: ALDCommand.h:61
ALD::CALDCommandOption::CALDCommandOption
CALDCommandOption(const string &strName, int iShortIdent=0, acArgumentNecessity HasArgument=anNoArgument, acArgumentType ArgumentType=acatText, bool bMultiple=false, bool bMandatory=false)
Конструктор
ALD::CALDCommandOption::ident
int ident() const
Возвращает короткое значение
Definition: ALDCommand.h:59
ALD::acArgumentNecessity
acArgumentNecessity
Тип необходимости аргумента
Definition: ALDCommand.h:26
ALD::CALDCommandOptions::next
CALDCommandOptionPtr next()
Продвижение итератора с возвратом текущей опции
ALD::anOptionalArgument
@ anOptionalArgument
Аргумент может быть
Definition: ALDCommand.h:29
ALD::CALDCommand::CheckArguments
bool CheckArguments()
Проверка аргументов по типу необходимости
ALD::CALDCommandOption::SetActive
void SetActive(const string &arg)
Устанавливает активность опции с указанием аргумента
ALD::CALDCommandPtr
shared_ptr< CALDCommand > CALDCommandPtr
Разделяемый указатель на команду
Definition: ALDCommand.h:191
ALD::CALDCommandOption::m_bActive
bool m_bActive
Признак активности
Definition: ALDCommand.h:47
ALD::CALDCommandOption::m_lstArguments
ald_string_list m_lstArguments
Список аргументов
Definition: ALDCommand.h:54
ALD::CALDCommand::argument
string argument() const
Возвращает текстовое представление аргумента
ALD::CALDCommand::m_HasArgument
acArgumentNecessity m_HasArgument
Тип необходимости аргумента
Definition: ALDCommand.h:144
ALD::CALDCommandOption::m_strName
string m_strName
Имя опции
Definition: ALDCommand.h:50
ALD::CALDCommand::Options
CALDCommandOptions & Options()
Возвращает контейнер опций
Definition: ALDCommand.h:172
ALD::CALDCommands::Assign
void Assign(const CALDCommands &Commands)
Заполнение контейнера команд содержимым другого контейнера команд
ALD::CALDCommandOption::argumentType
acArgumentType argumentType() const
Возвращает ожидаемый тип аргумента
Definition: ALDCommand.h:69
ALD::CALDCommands
Класс контейнера команд
Definition: ALDCommand.h:199
ALD::CALDCommands::Remove
void Remove(const string &strName)
Удаляет команду по имени
ALD::CALDCommand::AddArgument
void AddArgument(const string &arg)
Добавляет аргумент
ALD::CALDCommandOption::m_bMultiple
bool m_bMultiple
Признак множественности
Definition: ALDCommand.h:48
ALD::CALDCommand::m_strSection
string m_strSection
Секция помощи
Definition: ALDCommand.h:139
ALD::CALDCommands::begin
void begin()
Установка итератора на начало
ALD::CALDCommand::m_lstArguments
ald_string_list m_lstArguments
Список аргументов
Definition: ALDCommand.h:143
ALD::CALDCommands::RemoveCommands
void RemoveCommands(CALDCommands &Commands)
Удаляет команды перечисленные в другом контейнере команд
ALD::CALDCommands::Add
void Add(CALDCommands &Commands)
Добавляет команду
ALD::CALDCommands::Add
void Add(CALDCommand *pCommand)
Добавляет команду
ALD::CALDCommandOption::Clear
virtual void Clear()
Очистка состояния опции
ALD::CALDCommandOptions::Add
void Add(CALDCommandOption *pOption)
Добавляет опцию
ALD::CALDCommands::Clear
void Clear()
Очистка контейнера
ALD::acatHex
@ acatHex
Шестнадцатиричное число
Definition: ALDCommand.h:36
ALD::CALDCommand::m_Options
CALDCommandOptions m_Options
Опции команды
Definition: ALDCommand.h:142
ALD::CALDCommandOption::multiple
bool multiple() const
Возвращает признак множественности
Definition: ALDCommand.h:63
ALD::CALDCommand::m_bPrivileged
bool m_bPrivileged
Признак привилегированной команды
Definition: ALDCommand.h:146
ALD::CALDCommandOptions::OptionByName
CALDCommandOptionPtr OptionByName(const string &strName)
Возвращает опцию по имени
ALD::CALDCommandOption::argument
string argument() const
Возвращает текстовое представление аргумента
ALD::CALDCommandOptions::Add
void Add(CALDCommandOptionPtr Option)
Добавляет опцию
ALD::CALDCommandOptions::Assign
void Assign(const CALDCommandOptions &Options)
Заполнение контейнера опций содержимым другого контейнера опции
ALD::IALDCore
Абстрактный класс IALDCore - основной интерфейс клиента Astra Linux Directory, с помощью которого вып...
Definition: ALDCore.h:242
ALD::ald_command_map
map< string, CALDCommandPtr > ald_command_map
Карта команд (имя=>разделяемый указатель на команду
Definition: ALDCommand.h:193
ALD::CALDCommands::m_mapCommands
ald_command_map m_mapCommands
Карта команд
Definition: ALDCommand.h:201
ALD::CALDCommandOptionPtr
shared_ptr< CALDCommandOption > CALDCommandOptionPtr
Разделяемый указатель на опцию
Definition: ALDCommand.h:91
ALD::ald_command_option_map
map< string, CALDCommandOptionPtr > ald_command_option_map
Карта опций (имя=>разделяемый указатель на опцию)
Definition: ALDCommand.h:94
ALD::CALDCommand::FillRLOptions
virtual void FillRLOptions(ald_string_list &list)
Перегружаемая функция заполнения опций в ReadLine.
ALD::CALDCommandOption::uargument
unsigned int uargument() const
Возвращает целое представление аргумента
ALD::CALDCommand::hasArgument
acArgumentNecessity hasArgument() const
Возвращает тип необходимости аргумента
Definition: ALDCommand.h:162
ALD::CALDCommand::Run
virtual int Run()
Перегружаемая функция выполнения команды
ALD::CALDCommand::m_pCore
IALDCore * m_pCore
Указатель на интерфейс ядра Astra Linux Directory.
Definition: ALDCommand.h:145
ALD::CALDCommand::desc
const string & desc() const
Возвращает описание
Definition: ALDCommand.h:158
ALD::CALDCommandOptions::CopyFrom
void CopyFrom(CALDCommandOptions &Options)
Копирование опций из другого контейнера опций
ALD::CALDCommandOptions::m_itOption
ald_command_option_map::iterator m_itOption
Итератор опций
Definition: ALDCommand.h:103
ALD::CALDCommandOption::m_ArgumentType
acArgumentType m_ArgumentType
Ожидаемый тип аргумента
Definition: ALDCommand.h:53
ALD::CALDCommand::FillRLArguments
virtual void FillRLArguments(const string &option, ald_string_list &list, bool &isfile)
Перегружаемая функция заполнения аргументов в ReadLine.
ALD::CALDCommand::Clear
virtual void Clear()
Перегружаемая функция очистки аргументов и состояния опций
ALD::CALDCommandOption
Базовый класс опции команды
Definition: ALDCommand.h:45
ALD::CALDCommand::IsIndependent
bool IsIndependent() const
Возвращает признак независимой команды
Definition: ALDCommand.h:166
ALD::CALDCommandOption::m_HasArgument
acArgumentNecessity m_HasArgument
Тип необходимости аргумента
Definition: ALDCommand.h:52
ALD::CALDCommandOptions::Remove
void Remove(const string &strName)
Удаляет опцию по имени
ALD::CALDCommandOption::m_iShortIdent
int m_iShortIdent
Короткое значение
Definition: ALDCommand.h:51
ALD::CALDCommand
Абстрактный базовый класс команды
Definition: ALDCommand.h:137
ALD::CALDCommandOption::name
const string & name() const
Возвращает имя
Definition: ALDCommand.h:57
ALD::CALDCommandOptions::m_mapOptions
ald_command_option_map m_mapOptions
Карта опций
Definition: ALDCommand.h:102
ALD::acatNumber
@ acatNumber
Десятичное число
Definition: ALDCommand.h:35
ALD::CALDCommands::m_itCommand
ald_command_map::iterator m_itCommand
Итератор команд
Definition: ALDCommand.h:202
ALD::CALDCommand::section
const string & section() const
Возвращает секцию команды
Definition: ALDCommand.h:154
common.h
Основной заголовочный файл, содержащий необходимый минимум предварительных объявлений и включений дру...
ALD::CALDCommandOption::mandatory
bool mandatory() const
Возвращает признак необходимости
Definition: ALDCommand.h:65
ALD::acatText
@ acatText
Текст
Definition: ALDCommand.h:34
ALD
Пространство имен основного интерфейса Astra Linux Directory.
Definition: action-definitions.h:10
ALD::anRequiredArgument
@ anRequiredArgument
Аргумент обязателен
Definition: ALDCommand.h:28
ALD::CALDCommands::next
CALDCommandPtr next()
Продвижение итератора с возвратом текущей команды
ALD::CALDCommandOptions::begin
void begin()
Установка итератора на начало
ALD::CALDCommandOptions::ClearOptionsState
void ClearOptionsState()
Очистка состояния опций контейнера
ALD::CALDCommand::name
const string & name() const
Возвращает имя
Definition: ALDCommand.h:156
ALD::CALDCommand::ShowUsage
virtual void ShowUsage() const =0
Перегружаемая функция описания использования
ALDCore.h
Объявление основного интерфейса клиента Astra Linux Directory и необходимых для него типов и интерфей...
ALD::CALDCommandOption::SetActive
void SetActive()
Устанавливает активность безаргументной опции
ALD::CALDCommandOptions::Clear
void Clear()
Очистка контейнера опций
ALD::CALDCommand::m_strDesc
string m_strDesc
Описание
Definition: ALDCommand.h:141
ALD::anNoArgument
@ anNoArgument
Аргумент не требуется
Definition: ALDCommand.h:27
ALD::CALDCommand::Execute
virtual int Execute()=0
Перегружаемая рабочая функция команды
ALD::CALDCommand::OptionByName
CALDCommandOptionPtr OptionByName(const string &strName)
Возвращет опцию по имени
Definition: ALDCommand.h:176
ALD::CALDCommandOptions
Класс контейнера опций команды
Definition: ALDCommand.h:100
ALD::acatOct
@ acatOct
Восьмеричное число
Definition: ALDCommand.h:37
ALD::CALDCommand::OptionIsActive
bool OptionIsActive(const string &opt)
Возвращает активность опции команды по имени
Definition: ALDCommand.h:174
ALD::CALDCommand::CALDCommand
CALDCommand(IALDCore &Core)
Конструктор
ALD::CALDCommandOption::m_bMandatory
bool m_bMandatory
Признак необходимости
Definition: ALDCommand.h:49
ALD::ald_string_list
list< string > ald_string_list
Список строк
Definition: ALDUtils.h:152
ALD::CALDCommandOptions::IsActive
bool IsActive(const string &opt)
Возвращает активность опци по имени
ALD::CALDCommands::Add
void Add(CALDCommandPtr Command)
Добавляет команду
ALD::CALDCommand::IsPrivileged
bool IsPrivileged() const
Возвращает признак привилегированной команды
Definition: ALDCommand.h:164
ALD::acatTPeriod
@ acatTPeriod
Период времени
Definition: ALDCommand.h:38
ALD::acArgumentType
acArgumentType
Ожидаемый тип аргумента
Definition: ALDCommand.h:33
ALD::CALDCommand::m_bIndependent
bool m_bIndependent
Признак независимой команды
Definition: ALDCommand.h:147
ALD::CALDCommandOptions::Size
size_t Size() const
Размер контейнера (количество опций)
Definition: ALDCommand.h:129
ALD::CALDCommand::m_strName
string m_strName
Имя
Definition: ALDCommand.h:140
ALD::CALDCommands::Size
size_t Size() const
Размер контейнера (количество команд)