1 /* 2 * parseargs.h 3 * 4 * Command line argument parser. 5 * 6 * Copyright 1996-2003 Glyph & Cog, LLC 7 */ 8 9 /*======================================================================== 10 11 Modified under the Poppler project - http://poppler.freedesktop.org 12 13 All changes made under the Poppler project to this file are licensed 14 under GPL version 2 or later 15 16 Copyright (C) 2008, 2018 Albert Astals Cid <aacid@kde.org> 17 Copyright (C) 2011 Adrian Johnson <ajohnson@redneon.com> 18 19 To see a description of the changes please see the Changelog file that 20 came with your tarball or type make ChangeLog if you are building from git 21 22 ========================================================================*/ 23 24 #ifndef PARSEARGS_H 25 #define PARSEARGS_H 26 27 #ifdef __cplusplus 28 extern "C" { 29 #endif 30 31 /* 32 * Argument kinds. 33 */ 34 typedef enum 35 { 36 argFlag, /* flag (present / not-present) */ 37 /* [val: bool *] */ 38 argInt, /* integer arg */ 39 /* [val: int *] */ 40 argFP, /* floating point arg */ 41 /* [val: double *] */ 42 argString, /* string arg */ 43 /* [val: char *] */ 44 argGooString, /* string arg */ 45 /* [val: GooString *] */ 46 /* dummy entries -- these show up in the usage listing only; */ 47 /* useful for X args, for example */ 48 argFlagDummy, 49 argIntDummy, 50 argFPDummy, 51 argStringDummy 52 } ArgKind; 53 54 /* 55 * Argument descriptor. 56 */ 57 typedef struct 58 { 59 const char *arg; /* the command line switch */ 60 ArgKind kind; /* kind of arg */ 61 void *val; /* place to store value */ 62 int size; /* for argString: size of string */ 63 const char *usage; /* usage string */ 64 } ArgDesc; 65 66 /* 67 * Parse command line. Removes all args which are found in the arg 68 * descriptor list <args>. Stops parsing if "--" is found (and removes 69 * it). Returns false if there was an error. 70 */ 71 extern bool parseArgs(const ArgDesc *args, int *argc, char *argv[]); 72 73 /* 74 * Print usage message, based on arg descriptor list. 75 */ 76 extern void printUsage(const char *program, const char *otherArgs, const ArgDesc *args); 77 78 /* 79 * Check if a string is a valid integer or floating point number. 80 */ 81 extern bool isInt(const char *s); 82 extern bool isFP(const char *s); 83 84 #ifdef __cplusplus 85 } 86 #endif 87 88 #endif 89