tge/tools/fonttool/Getopt.h
2017-04-17 06:17:10 -06:00

116 lines
3.8 KiB
C++
Executable File

/*
** Slab NG - The Next Generation of Slab
** (c) Copyright 2002-2004 Tom Bampton
** All Rights Reserved.
**
** $Id: Getopt.h,v 1.1 2003/10/30 23:55:29 tom Exp $
**
** Filename: Getopt.h
** Author: Tom Bampton
** Created: 30/10/2003
** Purpose:
** Command Line Parser
**
*/
//////////////////////////////////////////////////////////////////////////
/// \file Getopt.h
/// \brief Header for Getopt
//////////////////////////////////////////////////////////////////////////
#ifndef SLAB_GETOPT_H
#define SLAB_GETOPT_H
#define GO_BAD_CHAR '?'
#define GO_BAD_ARG ':'
#define GO_INVALID_CHAR '!'
//////////////////////////////////////////////////////////////////////
/// \brief Command Line Parser
///
/// Getopt provides a command line parser similar to Unix's getopt()
///
/// Note that this version of getopt() will not print any messages to
/// the terminal, you will need to manage this yourself.
///
/// Parts of this section have been lifted from the getopt() manual page.
//////////////////////////////////////////////////////////////////////
class Getopt
{
private:
char *m_sOptions;
char *m_sPlace;
int m_nargc;
char **m_nargv;
public:
/*! \brief Current argv Index
*/
int m_nOptInd;
/*! \brief Current Option
*/
int m_nOptOpt;
/*! \brief Argument to current option if applicable
*/
char *m_sOptArg;
/*! \brief Construct a Getopt
The string tells Getopt what arguments this program takes. It may
contain the following elements: individual characters, and characters
followed by a colon to indicate an option argument is to follow. For
example, an option string "x" recognizes an option ``-x'', and an
option string "x:" recognizes an option and argu- ment ``-x argument''.
It does not matter to Getopt if a following argument has leading
white space.
\param sOptions Option string
\sa getopt(), Reset()
*/
Getopt(char *sOptions);
virtual ~Getopt();
/*! \brief Parse arguments
On return from getopt(), m_sOptArg points to an option argument, if it
is anticipated, and the variable m_nOptInd contains the index to the
next argv argument for a subsequent call to getopt(). The variable
m_nOptOpt saves the last known option character returned by getopt().
The m_nOptInd variable is set to 1, but may be set to another value
before a set of calls to getopt() in order to skip over more or less
argv entries.
In order to use getopt() to evaluate multiple sets of arguments, or to
evaluate a single set of arguments multiple times, call Reset() before
the second and each additional set of calls to getopt()
The getopt() function returns -1 when the argument list is exhausted,
or GO_INVALID_CHAR if a non-recognized option is encountered. You may
use m_nOptOpt to find the invalid character, and display a warning. If
an option takes an argument, but the user did not supply one on the
command line, getopt() returns GO_BAD_ARG. m_nOptOpt will then contain
the option, for printing of warning messages. The interpretation of
options in the argument list may be cancelled by the option `--'
(double dash) which causes getopt() to signal the end of argument
processing and return -1. When all options have been processed (i.e.,
up to the first non-option argument), getopt() returns -1.
\param nargc The argc from your main() function
\param nargv The argv from your main() function
\return -1 on end of processing, the character of the current option
or one of the error values as described above.
\sa Reset(), Getopt(char *sOptions)
*/
int getopt(int nargc, char **nargv);
/*! \brief Reset getopt() for subsequent calls
See the description of getopt() for information on Reset()
\sa getopt()
*/
void Reset(void);
};
#endif // SLAB_GETOPT_H