8 #ifndef _QI_APPLICATION_HPP_
9 # define _QI_APPLICATION_HPP_
11 # include <functional>
42 Application(
int& argc,
char** &argv,
const std::string& name =
"",
const std::string& path =
"");
53 Application(
const std::string &name,
int& argc,
char** &argv);
83 static const std::vector<std::string>& arguments();
94 static const char** argv();
99 static void setName(
const std::string &name);
105 static std::string name();
112 static void setArguments(
int argc,
char** argv);
117 static void setArguments(
const std::vector<std::string>& arguments);
130 static void* loadModule(
const std::string& name,
int flags=-1);
135 static void unloadModule(
void* handle);
140 static bool terminated();
145 static bool initialized();
153 static const char* program();
178 static const char* realProgram();
185 static const char* _suggestedSdkPath();
192 static bool atEnter(std::function<
void()> func);
199 static bool atExit(std::function<
void()> func);
207 static bool atRun(std::function<
void()> func);
215 static bool atStop(std::function<
void()> func);
227 static bool atSignal(std::function<
void(
int)> func,
int signal);
235 #define QI_AT_ENTER(func) \
236 static bool QI_UNIQ_DEF(_qi_atenter) = ::qi::Application::atEnter(func);
243 #define QI_AT_EXIT(func) \
244 static bool QI_UNIQ_DEF(_qi_atexit) = ::qi::Application::atExit(func);
257 #define _QI_COMMAND_LINE_OPTIONS(desc, opts) \
258 static void QI_UNIQ_DEF(_qi_opt_func)() { \
259 namespace po = boost::program_options; \
260 po::variables_map vm; \
261 po::command_line_parser p(::qi::Application::arguments()); \
262 po::options_description options(desc); \
264 using namespace boost::program_options; \
265 options.add_options() opts; \
267 po::parsed_options res = p.options(options) \
268 .allow_unregistered() \
270 po::store(res, vm); \
274 po::options_description descTmp; \
275 descTmp.add_options() \
277 po::variables_map vmTmp; \
278 po::store(po::command_line_parser(qi::Application::arguments()) \
279 .options(descTmp).allow_unregistered().run(), vmTmp); \
280 if (vmTmp.count("help")) \
281 std::cout << options << std::endl; \
283 std::vector<std::string> args \
284 = po::collect_unrecognized(res.options, po::include_positional); \
286 ::qi::Application::setArguments(args); \
288 QI_AT_ENTER(boost::bind(&(QI_UNIQ_DEF(_qi_opt_func))))
290 #endif // _QI_APPLICATION_HPP_
dll import/export and compiler message
Class handling startup and teardown of an application.
#define QI_API_DEPRECATED_MSG(msg__)
Compiler flags to mark a function as deprecated. It will generate a compiler warning.