X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fapplication.cpp;h=badc52304ab4df6dc8c563aa9708109e5c387959;hb=5ad225535ae12d53fd79c8f9fa764bd586211b8f;hp=17611c1429ac2ef716c1687ba892b3b6356e6f74;hpb=fcd7272c28b6da5a68d41e5aac7be1dfd2eeab78;p=libs%2Fcore.git diff --git a/source/core/application.cpp b/source/core/application.cpp index 17611c1..badc523 100644 --- a/source/core/application.cpp +++ b/source/core/application.cpp @@ -40,9 +40,9 @@ int Application::run(int argc, char **argv, void *data) } called=true; - if(!reg_app_) + if(!starter_) { - cerr<<"Trying to run with no application class registered!\n"; + cerr<<"Trying to run with no RegisteredApplication class!\n"; return 126; } @@ -52,16 +52,18 @@ int Application::run(int argc, char **argv, void *data) { try { - app_=reg_app_->create_app(argc, argv); + app_=starter_->create_app(argc, argv); } catch(const UsageError &e) { - reg_app_->usage(e.what(), argv[0], e.get_brief()); + starter_->usage(e.what(), argv[0], e.get_brief()); return 1; } int result=app_->main(); - delete app_; + Application *a=app_; + app_=0; + delete a; return result; } catch(const exception &e) @@ -144,15 +146,12 @@ void Application::sighandler_(int s) } -Application::RegBase::RegBase() +Application::Starter::Starter() { - if(reg_app_) - { - cerr<<"Warning: registering the application twice\n"; - delete reg_app_; - } + if(starter_) + throw InvalidState("Can't create more than one Starter instance"); - reg_app_=this; + starter_=this; } Application *Application::app_=0;