hoople_main.h
Go to the documentation of this file.00001 #ifndef HOOPLE_MAIN_GROUP
00002 #define HOOPLE_MAIN_GROUP
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00019
00020 #include "application_shell.h"
00021 #include "command_line.h"
00022 #include "windoze_helper.h"
00023
00024 #include <basis/contracts.h>
00025 #include <loggers/critical_events.h>
00026 #include <loggers/combo_logger.h>
00027 #include <structures/static_memory_gremlin.h>
00028 #include <loggers/program_wide_logger.h>
00029
00030 namespace application {
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #define HOOPLE_STARTUP_CODE \
00044 DEFINE_INSTANCE_HANDLE;
00045
00046 #ifdef __WXWIDGETS__
00047
00048 #define HOOPLE_MAIN(obj_name, obj_args) \
00049 HOOPLE_STARTUP_CODE; \
00050 int main(int argc, char *argv[]) { \
00051 SET_ARGC_ARGV(argc, argv); \
00052 SETUP_COMBO_LOGGER; \
00053 obj_name to_run_obj obj_args; \
00054 return to_run_obj.execute_application(); \
00055 }
00056
00058
00059 #elif defined(__UNIX__)
00060
00061 #define HOOPLE_MAIN(obj_name, obj_args) \
00062 HOOPLE_STARTUP_CODE; \
00063 int main(int argc, char *argv[]) { \
00064 SET_ARGC_ARGV(argc, argv); \
00065 SETUP_COMBO_LOGGER; \
00066 obj_name to_run_obj obj_args; \
00067 return to_run_obj.execute_application(); \
00068 }
00069
00071
00072 #elif defined(__WIN32__)
00073
00074
00075 #ifdef _CONSOLE
00076
00077 #define HOOPLE_MAIN(obj_name, obj_args) \
00078 HOOPLE_STARTUP_CODE; \
00079 int main(int argc, char *argv[]) { \
00080 SETUP_COMBO_LOGGER; \
00081 SET_ARGC_ARGV(argc, argv); \
00082 obj_name to_run_obj obj_args; \
00083 return to_run_obj.execute_application(); \
00084 }
00085 #elif defined(_AFXDLL)
00086
00087 #define HOOPLE_MAIN(obj_name, obj_args) \
00088 HOOPLE_STARTUP_CODE; \
00089 SET_ARGC_ARGV(__argc, __argv); \
00090 tiny_application<obj_name> theApp;
00091 #elif defined(__WIN32__)
00092
00093 #define HOOPLE_MAIN(obj_name, obj_args) \
00094 HOOPLE_STARTUP_CODE; \
00095 int WINAPI WinMain(application_instance instance, \
00096 application_instance prev_instance, LPSTR lpCmdLine, \
00097 int nCmdShow) { \
00098 SET_ARGC_ARGV(__argc, __argv); \
00099 SET_INSTANCE_HANDLE(instance); \
00100 SETUP_FILE_LOGGER; \
00101 obj_name to_run_obj obj_args; \
00102 return to_run_obj.execute_application(); \
00103 }
00104 #endif
00105
00107
00108 #else // not __UNIX__ or __WIN32__
00109
00110 #define HOOPLE_MAIN(obj_name, obj_args) \
00111 HOOPLE_STARTUP_CODE; \
00112 int main(int argc, char *argv[]) { \
00113 SETUP_CONSOLE_LOGGER; \
00114 obj_name to_run_obj obj_args; \
00115 return to_run_obj.execute_application(); \
00116 }
00117 #endif
00118
00119 }
00120
00121 #endif // outer guard.
00122