00001
00025 #ifndef __MAGIC_MAPPLIC_H__
00026 #define __MAGIC_MAPPLIC_H__
00027
00028 #include "magic/mobject.h"
00029 #include "magic/mclass.h"
00030 #include "magic/mmap.h"
00031
00032 BEGIN_NAMESPACE (MagiC);
00033
00035
00036
00037
00038
00039
00040
00041
00043
00044 int main (int argc, char** argv);
00045
00054 class Application : public Object {
00055 decl_dynamic (Application);
00056 protected:
00057 Array<String> mParams;
00058 StringMap mParamMap;
00059 int mArgc;
00060 char** mArgv;
00061 String mAppPath;
00062 String mDataDir;
00063 Array<String> mConfigPath;
00064 int mTried;
00065
00066 public:
00067 Application () : mTried (0) {}
00068
00074 virtual void main (const Array<String>& params) {mTried++;}
00075
00078 virtual void main () {mTried++;}
00079
00080 void readConfig (const String& filename);
00081
00084 const StringMap& paramMap () const {return mParamMap;}
00085
00088 const Array<String>& params () const {return mParams;}
00089
00090 const String& appPath () const {return mAppPath;}
00091 const String& dataDir () const {return mDataDir;}
00092
00093 void setParams (int argc, char** argv);
00094
00095 int& argc () {return mArgc;}
00096 char** argv () const {return mArgv;}
00097
00098 private:
00099 void initConfigPath ();
00100 int getTried () const {return mTried;}
00101 };
00102
00108 #define Main()\
00109 class MainClass : public Application {\
00110 decl_dynamic (MainClass);\
00111 public:\
00112 void main ();\
00113 };\
00114 impl_dynamic (MainClass, "{Application}");\
00115 void MainClass::main ()
00116
00117 extern Class* appclass;
00118
00119 END_NAMESPACE;
00120
00121 #endif
00122