X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/8c6fa3fbaccc22127280bf77a48fab5a3ee0716e..46b0747592074017ff0ea4b33d4a7194235886e5:/projects/sgconf/api_action.h diff --git a/projects/sgconf/api_action.h b/projects/sgconf/api_action.h deleted file mode 100644 index f27715ca..00000000 --- a/projects/sgconf/api_action.h +++ /dev/null @@ -1,143 +0,0 @@ -#ifndef __STG_SGCONF_API_ACTION_H__ -#define __STG_SGCONF_API_ACTION_H__ - -#include "action.h" - -#include "options.h" - -#include -#include -#include - -namespace SGCONF -{ - -typedef bool (* API_FUNCTION) (const CONFIG &, - const std::string &, - const std::map &); - -class COMMAND -{ - public: - COMMAND(API_FUNCTION funPtr, - const std::string & arg, - const std::map & options) - : m_funPtr(funPtr), - m_arg(arg), - m_options(options) - {} - bool Execute(const SGCONF::CONFIG & config) const - { - return m_funPtr(config, m_arg, m_options); - } - - private: - API_FUNCTION m_funPtr; - std::string m_arg; - std::map m_options; -}; - -class COMMANDS -{ - public: - void Add(API_FUNCTION funPtr, - const std::string & arg, - const std::map & options) { m_commands.push_back(COMMAND(funPtr, arg, options)); } - bool Execute(const SGCONF::CONFIG & config) const - { - std::vector::const_iterator it(m_commands.begin()); - bool res = true; - while (it != m_commands.end() && res) - { - res = res && it->Execute(config); - ++it; - } - return res; - } - private: - std::vector m_commands; -}; - -class API_ACTION : public ACTION -{ - public: - struct PARAM - { - PARAM(const std::string & n, - const std::string & s, - const std::string & l) - : name(n), - shortDescr(s), - longDescr(l) - {} - std::string name; - std::string shortDescr; - std::string longDescr; - }; - - API_ACTION(COMMANDS & commands, - const std::string & paramDescription, - bool needArgument, - const std::vector & params, - API_FUNCTION funPtr); - API_ACTION(COMMANDS & commands, - const std::string & paramDescription, - bool needArgument, - API_FUNCTION funPtr) - : m_commands(commands), - m_description(paramDescription), - m_argument(needArgument ? "1" : ""), // Hack - m_funPtr(funPtr) - {} - - virtual ACTION * Clone() const { return new API_ACTION(*this); } - - virtual std::string ParamDescription() const { return m_description; } - virtual std::string DefaultDescription() const { return ""; } - virtual OPTION_BLOCK & Suboptions() { return m_suboptions; } - virtual PARSER_STATE Parse(int argc, char ** argv, void * /*data*/); - - private: - COMMANDS & m_commands; - std::string m_description; - std::string m_argument; - OPTION_BLOCK m_suboptions; - std::map m_params; - API_FUNCTION m_funPtr; -}; - -inline -ACTION * MakeAPIAction(COMMANDS & commands, - const std::string & paramDescription, - const std::vector & params, - API_FUNCTION funPtr) -{ -return new API_ACTION(commands, paramDescription, true, params, funPtr); -} - -inline -ACTION * MakeAPIAction(COMMANDS & commands, - const std::vector & params, - API_FUNCTION funPtr) -{ -return new API_ACTION(commands, "", false, params, funPtr); -} - -inline -ACTION * MakeAPIAction(COMMANDS & commands, - const std::string & paramDescription, - API_FUNCTION funPtr) -{ -return new API_ACTION(commands, paramDescription, true, funPtr); -} - -inline -ACTION * MakeAPIAction(COMMANDS & commands, - API_FUNCTION funPtr) -{ -return new API_ACTION(commands, "", false, funPtr); -} - -} - -#endif