8 #ifndef _QI_APPLICATION_HPP_
9 # define _QI_APPLICATION_HPP_
11 # include <boost/function.hpp>
41 Application(
int& argc,
char** &argv,
const std::string& name =
"",
const std::string& path =
"");
81 static const std::vector<std::string>& arguments();
92 static const char** argv();
97 static void setName(
const std::string &name);
103 static std::string name();
110 static void setArguments(
int argc,
char** argv);
115 static void setArguments(
const std::vector<std::string>& arguments);
128 static void* loadModule(
const std::string& name,
int flags=-1);
133 static void unloadModule(
void* handle);
138 static bool terminated();
143 static bool initialized();
151 static const char* program();
176 static const char* realProgram();
183 static const char* suggestedSdkPath();
190 static bool atEnter(boost::function<
void()> func);
196 static bool atExit(boost::function<
void()> func);
203 static bool atStop(boost::function<
void()> func);
214 static bool atSignal(boost::function<
void(
int)> func,
int signal);
222 #define QI_AT_ENTER(func) \
223 static bool QI_UNIQ_DEF(_qi_atenter) = ::qi::Application::atEnter(func);
230 #define QI_AT_EXIT(func) \
231 static bool QI_UNIQ_DEF(_qi_atexit) = ::qi::Application::atExit(func);
244 #define _QI_COMMAND_LINE_OPTIONS(desc, opts) \
245 static void QI_UNIQ_DEF(_qi_opt_func)() { \
246 namespace po = boost::program_options; \
247 po::variables_map vm; \
248 po::command_line_parser p(::qi::Application::arguments()); \
249 po::options_description options(desc); \
251 using namespace boost::program_options; \
252 options.add_options() opts; \
254 po::parsed_options res = p.options(options) \
255 .allow_unregistered() \
257 po::store(res, vm); \
261 po::options_description descTmp; \
262 descTmp.add_options() \
264 po::variables_map vmTmp; \
265 po::store(po::command_line_parser(qi::Application::arguments()) \
266 .options(descTmp).allow_unregistered().run(), vmTmp); \
267 if (vmTmp.count("help")) \
268 std::cout << options << std::endl; \
270 std::vector<std::string> args \
271 = po::collect_unrecognized(res.options, po::include_positional); \
273 ::qi::Application::setArguments(args); \
275 QI_AT_ENTER(boost::bind(&(QI_UNIQ_DEF(_qi_opt_func))))
277 #endif // _QI_APPLICATION_HPP_
dll import/export and compiler message
Class handling startup and teardown of an application.
#define QI_API_DEPRECATED
Compiler flags to mark a function as deprecated. It will generate a compiler warning.