From 24f59dc64f455981ba1584ff2b779ab02b124fcc Mon Sep 17 00:00:00 2001 From: Aman Gupta Date: Thu, 30 Jul 2015 11:54:47 -0700 Subject: [PATCH] add vendored argtable2.{lib,h} for windows --- vendor/argtable2.h | 234 +++++++++++++++++++++++++++++++++++++++++++ vendor/argtable2.lib | Bin 0 -> 43158 bytes 2 files changed, 234 insertions(+) create mode 100644 vendor/argtable2.h create mode 100644 vendor/argtable2.lib diff --git a/vendor/argtable2.h b/vendor/argtable2.h new file mode 100644 index 0000000..bb092a5 --- /dev/null +++ b/vendor/argtable2.h @@ -0,0 +1,234 @@ +/********************************************************************* +This file is part of the argtable2 library. +Copyright (C) 1998,1999,2000,2001,2003,2004 Stewart Heitmann +sheitmann@users.sourceforge.net + +The argtable2 library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +This software is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +USA. +**********************************************************************/ +#ifndef ARGTABLE2 +#define ARGTABLE2 + +#include /* typedef FILE */ + +#ifdef __cplusplus +extern "C" { +#endif + + +/* bit masks for arg_hdr.flag */ +enum + { + ARG_TERMINATOR=0x1, + ARG_HASVALUE=0x2 + }; + +typedef void (arg_resetfn)(void *parent); +typedef int (arg_scanfn)(void *parent, const char *argval); +typedef int (arg_checkfn)(void *parent); +typedef void (arg_errorfn)(void *parent, FILE *fp, int error, const char *argval, const char *progname); + + +/* + * The arg_hdr struct defines properties that are common to all arg_xxx structs. + * The argtable library requires each arg_xxx struct to have an arg_hdr + * struct as its first data member. + * The argtable library functions then use this data to identify the + * properties of the command line option, such as its option tags, + * datatype string, and glossary strings, and so on. + * Moreover, the arg_hdr struct contains pointers to custom functions that + * are provided by each arg_xxx struct which perform the tasks of parsing + * that particular arg_xxx arguments, performing post-parse checks, and + * reporting errors. + * These functions are private to the individual arg_xxx source code + * and are the pointer to them are initiliased by that arg_xxx struct's + * constructor function. The user could alter them after construction + * if desired, but the original intention is for them to be set by the + * constructor and left unaltered. + */ +struct arg_hdr + { + char flag; /* Modifier flags: ARG_TERMINATOR, ARG_HASVALUE. */ + const char *shortopts; /* String defining the short options */ + const char *longopts; /* String defiing the long options */ + const char *datatype; /* Description of the argument data type */ + const char *glossary; /* Description of the option as shown by arg_print_glossary function */ + int mincount; /* Minimum number of occurences of this option accepted */ + int maxcount; /* Maximum number of occurences if this option accepted */ + void *parent; /* Pointer to parent arg_xxx struct */ + arg_resetfn *resetfn; /* Pointer to parent arg_xxx reset function */ + arg_scanfn *scanfn; /* Pointer to parent arg_xxx scan function */ + arg_checkfn *checkfn; /* Pointer to parent arg_xxx check function */ + arg_errorfn *errorfn; /* Pointer to parent arg_xxx error function */ + }; + +struct arg_rem + { + struct arg_hdr hdr; /* The mandatory argtable header struct */ + }; + +struct arg_lit + { + struct arg_hdr hdr; /* The mandatory argtable header struct */ + int count; /* Number of occurences of this parsed */ + }; + +struct arg_int + { + struct arg_hdr hdr; /* The mandatory argtable header struct */ + int count; /* Number of occurences of this parsed */ + int *ival; /* Storage for integer argument values */ + }; + +struct arg_dbl + { + struct arg_hdr hdr; /* The mandatory argtable header struct */ + int count; /* Number of occurences of this parsed */ + double *dval; /* Storage for double argument values */ + }; + +struct arg_str + { + struct arg_hdr hdr; /* The mandatory argtable header struct */ + int count; /* Number of occurences of this parsed */ + const char **sval; /* Storage for string argument pointers */ + }; + +struct arg_file + { + struct arg_hdr hdr; /* The mandatory argtable header struct */ + int count; /* Number of occurences of this parsed */ + const char **filename; /* Storage for filename string pointers */ + const char **basename; /* Storage for basename string pointers */ + const char **extension; /* Storage for extension string pointers */ + }; + + +enum {ARG_ELIMIT=1, ARG_EMALLOC, ARG_ENOMATCH, ARG_ELONGOPT, ARG_EMISSARG}; +struct arg_end + { + struct arg_hdr hdr; /* The mandatory argtable header struct */ + int count; /* Number of occurences of this parsed */ + int *error; /* Storage for error codes */ + void **parent; /* Storage for pointers to parent arg_xxx */ + const char **argval; /* Storage for pointers to offending command line string */ + }; + + +/**** arg_xxx constructor functions *********************************/ + +struct arg_rem* arg_rem(const char* datatype, const char* glossary); + +struct arg_lit* arg_lit0(const char* shortopts, + const char* longopts, + const char* glossary); +struct arg_lit* arg_lit1(const char* shortopts, + const char* longopts, + const char *glossary); +struct arg_lit* arg_litn(const char* shortopts, + const char* longopts, + int mincount, + int maxcount, + const char *glossary); + +struct arg_int* arg_int0(const char* shortopts, + const char* longopts, + const char* datatype, + const char* glossary); +struct arg_int* arg_int1(const char* shortopts, + const char* longopts, + const char* datatype, + const char *glossary); +struct arg_int* arg_intn(const char* shortopts, + const char* longopts, + const char *datatype, + int mincount, + int maxcount, + const char *glossary); + +struct arg_dbl* arg_dbl0(const char* shortopts, + const char* longopts, + const char* datatype, + const char* glossary); +struct arg_dbl* arg_dbl1(const char* shortopts, + const char* longopts, + const char* datatype, + const char *glossary); +struct arg_dbl* arg_dbln(const char* shortopts, + const char* longopts, + const char *datatype, + int mincount, + int maxcount, + const char *glossary); + +struct arg_str* arg_str0(const char* shortopts, + const char* longopts, + const char* datatype, + const char* glossary); +struct arg_str* arg_str1(const char* shortopts, + const char* longopts, + const char* datatype, + const char *glossary); +struct arg_str* arg_strn(const char* shortopts, + const char* longopts, + const char* datatype, + int mincount, + int maxcount, + const char *glossary); + +struct arg_file* arg_file0(const char* shortopts, + const char* longopts, + const char* datatype, + const char* glossary); +struct arg_file* arg_file1(const char* shortopts, + const char* longopts, + const char* datatype, + const char *glossary); +struct arg_file* arg_filen(const char* shortopts, + const char* longopts, + const char* datatype, + int mincount, + int maxcount, + const char *glossary); + +struct arg_end* arg_end(int maxerrors); + + +/**** other functions *******************************************/ +int arg_nullcheck(void **argtable); +int arg_parse(int argc, char **argv, void **argtable); +void arg_print_option(FILE *fp, const char *shortopts, const char *longopts, const char *datatype, const char *suffix); +void arg_print_syntax(FILE *fp, void **argtable, const char *suffix); +void arg_print_syntaxv(FILE *fp, void **argtable, const char *suffix); +void arg_print_glossary(FILE *fp, void **argtable, const char *format); +void arg_print_errors(FILE* fp, struct arg_end* end, const char* progname); +void arg_freetable(void **argtable, size_t n); + +/**** deprecated functions, for back-compatibility only ********/ +void arg_free(void **argtable); + +#ifdef __cplusplus +} +#endif +#endif + + + + + + + + + diff --git a/vendor/argtable2.lib b/vendor/argtable2.lib new file mode 100644 index 0000000000000000000000000000000000000000..81a38d8f7329ecb5f7bbcc309cf3415fbdcacb0d GIT binary patch literal 43158 zcmeHw3t&{$ng5+k7($FB;HXj24iJ1HAt4Fmfn@R?2qD2pVpNDB1V|bZOlA~Z!PF$J z!!5P7)@`kAb?dro-Mam|b^F?~&{!VTZYy^Ca@(%jhZtO`T8hdt|KIPNb00HvCmEEw z-N%7@=eyte&Uaql`ObIF`R>i^r5yvEo0p|8^hJmKypko0iWe^~DUQbHsmDc2ikC?6 zrgTlynl2x)M28lcdw@P9gV-X4QX2JHR9E@*z2BInl{n( zz>At@UG1B?g8f^A?Y;edn>71Fdw*Z=cCEa;y~^L7msjC0 >J8_$cX>Q~hI%S-Uj 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 literal 0 HcmV?d00001