ftp.nice.ch/pub/next/unix/database/sybtool.1.3.s.tar.gz#/sybtool-1.3/cmdline-1.04/doc/example.man

This is example.man in view mode; [Download] [Up]

.SH EXAMPLE
.PP
Using the \*(NM library is relatively easy \- you need to construct your
arguments, your command-line, and your argument iterator.  Then all that is
left to do is call the \f4parse\fP member function of your \*(NM object.
The following is a simple example:

.XS
#include <stdlib.h>
#include <iostream.h>
#include <cmdargs.h>

int  main(int argc, char * argv[])
{
      // Declare arguments
   CmdArgInt  count('c', "count", "number",
                       "number of copies to print.");
.sp 4p
   CmdArgBool xflag('x', "xmode",
                       "turn on 'x'-mode.");
.sp 4p
   CmdArgChar fdsep('s', "separator", "char",
                       "field-separator to use.");
.sp 4p
   CmdArgStr  input("input-file",
                       "input file to read.");
.sp 4p
   CmdArgStrList  output("[output-file \*(..]",
                            "where to print output.");

      // Declare the command and the argument-iterator
   CmdLine  cmd(*argv,
                   &count, &xflag, &fdsep,
                   &input, &output, NULL);
.sp 4p
   CmdArgvIter  arg_iter(--argc, ++argv);

      // Initialize arguments to appropriate default values.
   count = 1;
   xflag = 0;
   fdsep = ',';

      // Parse arguments
   cmd.parse(arg_iter);

      // Print arguments
   cout << "count=" << count << endl ;
   cout << "xflag=" << (xflag ? "ON" : "OFF") << endl ;
   cout << "fdsep='" << (char) fdsep << "'" << endl ;
   cout << "input=\\"" << input << "\\"" << endl ;
   
   for (int i = 0 ; i < output.count() ; i++) {
      cout << "output[" << i << "]=" << output[i] << endl ;
   }

   return  0;
}
.XE

The Unix command-line syntax for the above program would be as follows:

.XS
progname [\-c number] [\-x] [\-s char] input-file [output-file \*(..]
.XE

The Unix command-line syntax using long-options (keywords) for the above
program would be as follows:

.XS
progname [\*(--count number] [\*(--xmode] [\*(--separator char]
         input-file [output-file \*(..]
.XE

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.