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;
};

 

posted @ 2017-04-06 11:42  HEIS老妖  阅读(158)  评论(0编辑  收藏  举报