]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/application.cpp
Drop copyright and license notices from source files
[libs/core.git] / source / core / application.cpp
index 139f94f2d88054d745ad9119b562dd7ec174d596..00ff9bea89e8af8bba5fd07fd8b2d426dccc12ed 100644 (file)
@@ -1,19 +1,12 @@
-/* $Id$
-
-This file is part of libmspcore
-Copyright © 2006-2008, 2011  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
+#ifdef WIN32
+#include <windows.h>
+#endif
 #include <signal.h>
 #include <iostream>
 #include <typeinfo>
 #include <signal.h>
 #include <iostream>
 #include <typeinfo>
-#include "../debug/backtrace.h"
 #include "../debug/demangle.h"
 #include "../debug/demangle.h"
-#include "../time/units.h"
-#include "../time/utils.h"
 #include "application.h"
 #include "application.h"
-#include "except.h"
+#include "getopt.h"
 
 using namespace std;
 
 
 using namespace std;
 
@@ -29,7 +22,8 @@ Application::Application():
 
 /**
 Constructs an instance of the registered application class and runs it.  If the
 
 /**
 Constructs an instance of the registered application class and runs it.  If the
-application throws a UsageError, the static usage() function is called.
+application throws a usage_error, a help message is printed.  The GetOpt class
+will throw such exceptions automatically in error conditions.
 
 This function can only be called once.  The global main() function provided by
 the library normally does it automatically at program startup.
 
 This function can only be called once.  The global main() function provided by
 the library normally does it automatically at program startup.
@@ -58,9 +52,10 @@ int Application::run(int argc, char **argv, void *data)
                {
                        app_ = starter_->create_app(argc, argv);
                }
                {
                        app_ = starter_->create_app(argc, argv);
                }
-               catch(const UsageError &e)
+               catch(const usage_error &e)
                {
                {
-                       starter_->usage(e.what(), argv[0], e.get_brief());
+                       cerr<<e.what()<<'\n';
+                       cerr<<e.help()<<'\n';
                        return 1;
                }
 
                        return 1;
                }
 
@@ -81,36 +76,12 @@ int Application::run(int argc, char **argv, void *data)
                cerr<<"An uncaught exception occurred.\n";
                cerr<<"  type:   "<<Debug::demangle(typeid(e).name())<<'\n';
                cerr<<"  what(): "<<e.what()<<'\n';
                cerr<<"An uncaught exception occurred.\n";
                cerr<<"  type:   "<<Debug::demangle(typeid(e).name())<<'\n';
                cerr<<"  what(): "<<e.what()<<'\n';
-
-               const Exception *exc = dynamic_cast<const Exception *>(&e);
-               if(exc && !exc->get_backtrace().get_frames().empty())
-               {
-                       cerr<<"  backtrace:\n";
-                       const list<Debug::Backtrace::StackFrame> &frames = exc->get_backtrace().get_frames();
-                       for(list<Debug::Backtrace::StackFrame>::const_iterator i=frames.begin(); i!=frames.end(); ++i)
-                               cerr<<"    "<<*i<<'\n';
-               }
 #endif
 
                return 124;
        }
 }
 
 #endif
 
                return 124;
        }
 }
 
-/**
-Prints a message describing the usage of the application.  The default version
-will blame the programmer for being lazy.
-
-@param   reason  Why the function was called
-@param   argv0   The value of argv[0], to be used in the message
-@param   brief   Whether to print a brief or long usage message
-*/
-void Application::usage(const char *reason, const char *, bool)
-{
-       if(reason)
-               cerr<<"UsageError: "<<reason<<'\n';
-       cerr<<"The programmer was lazy and didn't write a usage() function for this application.\n";
-}
-
 /**
 Default main loop.  Calls tick() repeatedly until exit() is called.  A custom
 main loop should monitor the done member variable and return exit_code.
 /**
 Default main loop.  Calls tick() repeatedly until exit() is called.  A custom
 main loop should monitor the done member variable and return exit_code.
@@ -153,7 +124,7 @@ void Application::sighandler_(int s)
 Application::Starter::Starter()
 {
        if(starter_)
 Application::Starter::Starter()
 {
        if(starter_)
-               throw InvalidState("Can't create more than one Starter instance");
+               throw logic_error("Can't create more than one Starter instance");
 
        starter_ = this;
 }
 
        starter_ = this;
 }