ObjFW
|
00001 /* 00002 * Copyright (c) 2008, 2009, 2010, 2011 00003 * Jonathan Schleifer <js@webkeks.org> 00004 * 00005 * All rights reserved. 00006 * 00007 * This file is part of ObjFW. It may be distributed under the terms of the 00008 * Q Public License 1.0, which can be found in the file LICENSE.QPL included in 00009 * the packaging of this file. 00010 * 00011 * Alternatively, it may be distributed under the terms of the GNU General 00012 * Public License, either version 2 or 3, which can be found in the file 00013 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this 00014 * file. 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 #ifndef OF_APPLICATION_M 00036 @protocol OFApplicationDelegate <OFObject> 00037 #else 00038 @protocol OFApplicationDelegate 00039 #endif 00040 00044 - (void)applicationDidFinishLaunching; 00045 00046 #ifdef OF_HAVE_OPTIONAL_PROTOCOLS 00047 @optional 00048 #endif 00049 00052 - (void)applicationWillTerminate; 00053 @end 00054 00058 @interface OFApplication: OFObject 00059 { 00060 OFString *programName; 00061 OFMutableArray *arguments; 00062 OFMutableDictionary *environment; 00063 id <OFApplicationDelegate> delegate; 00064 int *argc; 00065 char ***argv; 00066 } 00067 00068 #ifdef OF_HAVE_PROPERTIES 00069 @property (readonly, copy) OFString *programName; 00070 @property (readonly, copy) OFArray *arguments; 00071 @property (readonly, copy) OFDictionary *environment; 00072 @property (retain) id <OFApplicationDelegate> delegate; 00073 #endif 00074 00078 + sharedApplication; 00079 00083 + (OFString*)programName; 00084 00088 + (OFArray*)arguments; 00089 00093 + (OFDictionary*)environment; 00094 00098 + (void)terminate; 00099 00105 + (void)terminateWithStatus: (int)status; 00106 00115 - (void)setArgumentCount: (int*)argc 00116 andArgumentValues: (char**[])argv; 00117 00124 - (void)getArgumentCount: (int**)argc 00125 andArgumentValues: (char***[])argv; 00126 00130 - (OFString*)programName; 00131 00135 - (OFArray*)arguments; 00136 00140 - (OFDictionary*)environment; 00141 00145 - (id <OFApplicationDelegate>)delegate; 00146 00152 - (void)setDelegate: (id <OFApplicationDelegate>)delegate; 00153 00157 - (void)run; 00158 00162 - (void)terminate; 00163 00169 - (void)terminateWithStatus: (int)status; 00170 @end 00171 00172 @interface OFObject (OFApplicationDelegate) <OFApplicationDelegate> 00173 @end 00174 00175 #ifdef __cplusplus 00176 extern "C" { 00177 #endif 00178 extern int of_application_main(int*, char**[], Class); 00179 #ifdef __cplusplus 00180 } 00181 #endif