]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/application.cpp
Add move semantics to Variant
[libs/core.git] / source / core / application.cpp
index 1fbe15452fd8a13d39c3c0939d2c09419e5b6733..c214a06316598b54ed59403493df366a60ca568f 100644 (file)
@@ -9,22 +9,23 @@
 #include <msp/io/print.h>
 #include <msp/strings/utils.h>
 #include "application.h"
+#include "except.h"
 #include "getopt.h"
 
 using namespace std;
 
 namespace Msp {
 
-Application *Application::_app = 0;
-Application::Starter *Application::_starter = 0;
-const char *Application::_argv0 = 0;
+Application *Application::_app = nullptr;
+Application::Starter *Application::_starter = nullptr;
+const char *Application::_argv0 = nullptr;
 string Application::_name;
-void *Application::_data = 0;
+void *Application::_data = nullptr;
 
 Application::Application(const string &n)
 {
        if(_app)
-               throw logic_error("instance already exists");
+               throw already_called("Application::Application");
 
        if(!n.empty())
                _name = n;
@@ -59,7 +60,7 @@ int Application::run(int argc, char **argv, void *data, void (*created_callback)
 
                int result = _app->main();
                Application *a = _app;
-               _app = 0;
+               _app = nullptr;
                delete a;
                return result;
        }
@@ -85,7 +86,7 @@ int Application::run(int argc, char **argv, void *data, void (*created_callback)
                }
 
                delete _app;
-               _app = 0;
+               _app = nullptr;
 
                return 124;
        }
@@ -94,7 +95,7 @@ int Application::run(int argc, char **argv, void *data, void (*created_callback)
 void Application::set_startup_info(const char *argv0, void *data)
 {
        if(_argv0)
-               throw logic_error("startup info already set");
+               throw already_called("Application::set_startup_info");
 
        static FS::Path exe;
 
@@ -117,6 +118,21 @@ void Application::set_startup_info(const char *argv0, void *data)
        _data = data;
 }
 
+void *Application::get_data()
+{
+       return _data;
+}
+
+const char *Application::get_argv0()
+{
+       return _argv0;
+}
+
+const std::string &Application::get_name()
+{
+       return _name;
+}
+
 int Application::main()
 {
        done = false;
@@ -146,7 +162,7 @@ void Application::_sighandler(int s)
 Application::Starter::Starter()
 {
        if(_starter)
-               throw logic_error("Can't create more than one Starter instance");
+               throw already_called("Application::Starter::Starter");
 
        _starter = this;
 }