parseargs.h 2.19 KB
Newer Older
1 2 3 4 5 6 7 8
/*
 * parseargs.h
 *
 * Command line argument parser.
 *
 * Copyright 1996-2003 Glyph & Cog, LLC
 */

9 10 11 12 13 14 15 16
/*========================================================================

 Modified under the Poppler project - http://poppler.freedesktop.org

 All changes made under the Poppler project to this file are licensed
 under GPL version 2 or later

 Copyright (C) 2008 Albert Astals Cid <aacid@kde.org>
Albert Astals Cid's avatar
Albert Astals Cid committed
17
 Copyright (C) 2011 Adrian Johnson <ajohnson@redneon.com>
18 19 20 21 22

 To see a description of the changes please see the Changelog file that
 came with your tarball or type make ChangeLog if you are building from git

========================================================================*/
23

24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
#ifndef PARSEARGS_H
#define PARSEARGS_H

#ifdef __cplusplus
extern "C" {
#endif

#include "goo/gtypes.h"

/*
 * Argument kinds.
 */
typedef enum {
  argFlag,			/* flag (present / not-present) */
				/*   [val: GBool *]             */
  argInt,			/* integer arg    */
				/*   [val: int *] */
  argFP,			/* floating point arg */
				/*   [val: double *]  */
  argString,			/* string arg      */
				/*   [val: char *] */
45 46
  argGooString,			/* string arg      */
				/*   [val: GooString *] */
47 48 49 50 51 52 53 54 55 56 57 58
  /* dummy entries -- these show up in the usage listing only; */
  /* useful for X args, for example                            */
  argFlagDummy,
  argIntDummy,
  argFPDummy,
  argStringDummy
} ArgKind;

/*
 * Argument descriptor.
 */
typedef struct {
59
  const char *arg;		/* the command line switch */
60 61 62
  ArgKind kind;			/* kind of arg */
  void *val;			/* place to store value */
  int size;			/* for argString: size of string */
63
  const char *usage;		/* usage string */
64 65 66 67 68 69 70
} ArgDesc;

/*
 * Parse command line.  Removes all args which are found in the arg
 * descriptor list <args>.  Stops parsing if "--" is found (and removes
 * it).  Returns gFalse if there was an error.
 */
71
extern GBool parseArgs(const ArgDesc *args, int *argc, char *argv[]);
72 73 74 75

/*
 * Print usage message, based on arg descriptor list.
 */
76
extern void printUsage(const char *program, const char *otherArgs, const ArgDesc *args);
77 78 79 80 81 82 83 84 85 86 87 88

/*
 * Check if a string is a valid integer or floating point number.
 */
extern GBool isInt(char *s);
extern GBool isFP(char *s);

#ifdef __cplusplus
}
#endif

#endif