Differences From Artifact [aba8385948]:
- File
utils/objfw-new/ObjFWNew.m
— part of check-in
[1ad52a2f2c]
at
2022-08-07 20:46:51
on branch trunk
— Rewrite objfw-new in ObjC
This offers more flexibility in the future, e.g. to generate classes
with properties. (user: js, size: 1443) [annotate] [blame] [check-ins using]
To Artifact [6661dc925a]:
- File utils/objfw-new/ObjFWNew.m — part of check-in [ceee745736] at 2022-08-07 20:57:08 on branch trunk — objfw-new: Use proper long options (user: js, size: 1754) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | */ #include "config.h" #import "OFApplication.h" #import "OFArray.h" #import "OFObject.h" #import "OFStdIOStream.h" #import "OFString.h" @interface ObjFWNew: OFObject <OFApplicationDelegate> @end extern void newApp(OFString *); extern void newClass(OFString *); OF_APPLICATION_DELEGATE(ObjFWNew) static void showUsage(void) { | > | | > > > > > > | > > | | | < > | | | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | */ #include "config.h" #import "OFApplication.h" #import "OFArray.h" #import "OFObject.h" #import "OFOptionsParser.h" #import "OFStdIOStream.h" #import "OFString.h" @interface ObjFWNew: OFObject <OFApplicationDelegate> @end extern void newApp(OFString *); extern void newClass(OFString *); OF_APPLICATION_DELEGATE(ObjFWNew) static void showUsage(void) { [OFStdErr writeFormat: @"Usage: %@ --app|--class name\n", [OFApplication programName]]; [OFApplication terminateWithStatus: 1]; } @implementation ObjFWNew - (void)applicationDidFinishLaunching { bool app, class; const OFOptionsParserOption options[] = { { '\0', @"app", 0, &app, NULL }, { '\0', @"class", 0, &class, NULL }, { '\0', nil, 0, NULL, NULL } }; OFOptionsParser *optionsParser; OFUnichar option; optionsParser = [OFOptionsParser parserWithOptions: options]; while ((option = [optionsParser nextOption]) != '\0') if (option == '?') showUsage(); if ((app ^ class) != 1 || optionsParser.remainingArguments.count != 1) showUsage(); if (app) newApp(optionsParser.remainingArguments.firstObject); else if (class) newClass(optionsParser.remainingArguments.firstObject); else showUsage(); [OFApplication terminate]; } @end |