object oriented programming : class application
class Thread_Sync; class Critical; class Info; class Info{Info(std::string str):m_info(str){} private: std::string m_info;}; // a process need: { pre-run();run();post-run();mutex for threads, running previlledge} #define APPL_DECLARE_APP( YourAppClass ) \ class YourAppClass : public Application \ { \ public: \ YourAppClass(int argc, const char * argv[]) \ : Application(argc, argv) {}; \ virtual \ int Main(int argc, ArgvType argv); \ }; // provide a main() runtine #define APPL_DEFINE_MAIN( YourAppClass ) \ int \ main(int argc, const char * argv[]) \ { a YourAppClass theApp(argc, argv); \ return(theApp.Run()); \ } class Application { public: virtual ~Application(); int Run(){if(Startup() && Main(argc,argv)&& Shutdown()) { return true;} return false;) static Application & TheApp(); bool SetProcessPriority(int priority); protected: Application(int argc, const char * argv[]); virtual int Startup(); virtual int Main(int argc, char ** argv) { return 1; } virtual int Shutdown(); private: Critical* m_pGuard; Info * m_info;int m_priority; int m_argc;char ** m_argv; static Application * pInstance; };