00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #import "OFObject.h"
00018
00019 @class OFString;
00020 @class OFArray;
00021 @class OFDictionary;
00022 @class OFMutableArray;
00023 @class OFMutableDictionary;
00024
00025 #define OF_APPLICATION_DELEGATE(cls) \
00026 int \
00027 main(int argc, char *argv[]) \
00028 { \
00029 return of_application_main(&argc, &argv, [cls class]); \
00030 }
00031
00035 @protocol OFApplicationDelegate
00040 - (void)applicationDidFinishLaunching;
00041
00045 - (void)applicationWillTerminate;
00046 @end
00047
00051 @interface OFApplication: OFObject
00052 {
00053 OFString *programName;
00054 OFMutableArray *arguments;
00055 OFMutableDictionary *environment;
00056 id <OFApplicationDelegate> delegate;
00057 int *argc;
00058 char ***argv;
00059 }
00060
00061 #ifdef OF_HAVE_PROPERTIES
00062 @property (readonly, retain) OFString *programName;
00063 @property (readonly, retain) OFArray *arguments;
00064 @property (readonly, retain) OFDictionary *environment;
00065 @property (retain) id <OFApplicationDelegate> delegate;
00066 #endif
00067
00071 + sharedApplication;
00072
00076 + (OFString*)programName;
00077
00081 + (OFArray*)arguments;
00082
00086 + (OFDictionary*)environment;
00087
00091 + (void)terminate;
00092
00098 + (void)terminateWithStatus: (int)status;
00099
00108 - (void)setArgumentCount: (int*)argc
00109 andArgumentValues: (char**[])argv;
00110
00117 - (void)getArgumentCount: (int**)argc
00118 andArgumentValues: (char***[])argv;
00119
00123 - (OFString*)programName;
00124
00128 - (OFArray*)arguments;
00129
00133 - (OFDictionary*)environment;
00134
00138 - (id <OFApplicationDelegate>)delegate;
00139
00145 - (void)setDelegate: (id <OFApplicationDelegate>)delegate;
00146
00150 - (void)run;
00151
00155 - (void)terminate;
00156
00162 - (void)terminateWithStatus: (int)status;
00163 @end
00164
00165 @interface OFObject (OFApplicationDelegate) <OFApplicationDelegate>
00166 @end
00167
00168 extern int of_application_main(int*, char**[], Class);