This is a slighly more complex example application. Here are a few sample runs of this program:

% example                           
example: At least one argument is required
example: Usage [OPTIONS] <argument> [...]
Try `example --help' for more information.
% example --help         
example: Usage [OPTIONS] <argument> [...]

  -f, --foo FOO                 Use foo with FOO
  -I, --include FILE            Include FILE
  -b, --bar[=BAR]               Use bar with BAR
      --long-opt                Enable long option
  -v, --verbose                 Increase verbosity
      --version                 Display version and exit
  -h, --help                    Display this help and exit

A test application for DDCommandLineInterface.
% example --foo bar --long-opt one.c
foo: bar, bar: (null), longOpt: 1, verbosity: 0
Include directories: ()
Arguments: ("one.c")
% example -vvv -I/usr/include -I/usr/local/include one.c two.c
foo: (null), bar: (null), longOpt: (null), verbosity: 3
Include directories: ("/usr/include", "/usr/local/include")
Arguments: ("one.c", "two.c")

Here is the source code:

#import <Foundation/Foundation.h>
#import "DDCommandLineInterface.h"

@interface ExampleApp : NSObject <DDCliApplicationDelegate>
    NSString * _foo;
    NSMutableArray * _includeDirectories;
    NSString * _bar;
    NSString * _longOpt;
    int _verbosity;
    BOOL _version;
    BOOL _help;


#import "ExampleApp.h"

@implementation ExampleApp

- (id) init;
    self = [super init];
    if (self == nil)
        return nil;
    _includeDirectories = [[NSMutableArray alloc] init];
    return self;

- (void) setVerbose: (BOOL) verbose;
    if (verbose)
    else if (_verbosity > 0)

- (void) setInclude: (NSString *) file;
    if ([file isEqualToString: @"invalid"])
        DDCliParseException * e =
            [DDCliParseException parseExceptionWithReason: @"Invalid include name"
                                                 exitCode: EX_USAGE];
        @throw e;
    [_includeDirectories addObject: file];

- (void) printUsage: (FILE *) stream;
    ddfprintf(stream, @"%@: Usage [OPTIONS] <argument> [...]\n", DDCliApp);

- (void) printHelp;
    [self printUsage: stdout];
           "  -f, --foo FOO                 Use foo with FOO\n"
           "  -I, --include FILE            Include FILE\n"
           "  -b, --bar[=BAR]               Use bar with BAR\n"
           "      --long-opt                Enable long option\n"
           "  -v, --verbose                 Increase verbosity\n"
           "      --version                 Display version and exit\n"
           "  -h, --help                    Display this help and exit\n"
           "A test application for DDCommandLineInterface.\n");

- (void) printVersion;
    ddprintf(@"%@ version %s\n", DDCliApp, CURRENT_MARKETING_VERSION);

- (void) application: (DDCliApplication *) app
    willParseOptions: (DDGetoptLongParser *) optionsParser;
    DDGetoptOption optionTable = 
        // Long         Short   Argument options
        {@"foo",        'f',    DDGetoptRequiredArgument},
        {@"include",    'I',    DDGetoptRequiredArgument},
        {@"bar",        'b',    DDGetoptOptionalArgument},
        {@"long-opt",   0,      DDGetoptNoArgument},
        {@"verbose",    'v',    DDGetoptNoArgument},
        {@"version",    0,      DDGetoptNoArgument},
        {@"help",       'h',    DDGetoptNoArgument},
        {nil,           0,      0},
    [optionsParser addOptionsFromTable: optionTable];

- (int) application: (DDCliApplication *) app
   runWithArguments: (NSArray *) arguments;
    if (_help)
        [self printHelp];
        return EXIT_SUCCESS;
    if (_version)
        [self printVersion];
        return EXIT_SUCCESS;
    if ([arguments count] < 1)
        ddfprintf(stderr, @"%@: At least one argument is required\n", DDCliApp);
        [self printUsage: stderr];
        ddfprintf(stderr, @"Try `%@ --help' for more information.\n",
        return EX_USAGE;
    ddprintf(@"foo: %@, bar: %@, longOpt: %@, verbosity: %d\n",
             _foo, _bar, _longOpt, _verbosity);
    ddprintf(@"Include directories: %@\n", _includeDirectories);
    ddprintf(@"Arguments: %@\n", arguments);
    return EXIT_SUCCESS;


#import <Foundation/Foundation.h>
#import "DDCommandLineInterface.h"
#import "ExampleApp.h"

int main (int argc, char * const * argv)
    return DDCliAppRunWithClass([ExampleApp class]);

Generated by  doxygen