* GROningen Mixture of Alchemy and Childrens' Stories
*/
/* This file is completely threadsafe - keep it that way! */
+#include "gromacs/commandline/pargs.h"
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "typedefs.h"
-#include "gmx_fatal.h"
-#include "statutil.h"
-#include "readinp.h"
-#include "smalloc.h"
-#include "names.h"
-#include "string2.h"
-#include "vec.h"
-#include "macros.h"
+#include <cctype>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+
+#include "gromacs/legacyheaders/gmx_fatal.h"
+#include "gromacs/legacyheaders/smalloc.h"
+#include "gromacs/legacyheaders/string2.h"
#include "gromacs/utility/gmxassert.h"
*(pa[j].u.c) = sscan(*argc, argv, &i);
break;
case etENUM:
- match = NOTSET;
+ match = -1;
ptr = sscan(*argc, argv, &i);
for (k = 1; (pa[j].u.c[k] != NULL); k++)
{
pa[j].u.c[k] */
if (gmx_strncasecmp(ptr, pa[j].u.c[k], strlen(ptr)) == 0)
{
- if ( ( match == NOTSET ) ||
+ if ( ( match == -1 ) ||
( strlen(pa[j].u.c[k]) <
strlen(pa[j].u.c[match]) ) )
{
}
}
}
- if (match != NOTSET)
+ if (match != -1)
{
pa[j].u.c[0] = pa[j].u.c[match];
}
}
}
- gmx_fatal(FARGS, "No gmx_boolean option %s in pargs", option);
+ gmx_fatal(FARGS, "No boolean option %s in pargs", option);
return FALSE;
}
--- /dev/null
+/*
+ * This file is part of the GROMACS molecular simulation package.
+ *
+ * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
+ * Copyright (c) 2001-2004, The GROMACS development team.
+ * Copyright (c) 2013, by the GROMACS development team, led by
+ * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
+ * and including many others, as listed in the AUTHORS file in the
+ * top-level source directory and at http://www.gromacs.org.
+ *
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
+ *
+ * GROMACS 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
+ *
+ * To help us fund GROMACS development, we humbly ask that you cite
+ * the research papers on the package. Check out http://www.gromacs.org.
+ */
+#ifndef GMX_COMMANDLINE_PARGS_H
+#define GMX_COMMANDLINE_PARGS_H
+
+#include "../legacyheaders/types/simple.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/* This structure is used for parsing arguments off the comand line */
+enum
+{
+ etINT, etGMX_LARGE_INT, etREAL, etTIME, etSTR, etBOOL, etRVEC, etENUM, etNR
+};
+
+typedef struct
+{
+ const char *option;
+ gmx_bool bSet;
+ int type;
+ union
+ {
+ void *v; /* This is a nasty workaround, to be able to use initialized */
+ int *i; /* arrays */
+ gmx_large_int_t *is;
+ real *r;
+ const char **c; /* Must be pointer to string (when type == etSTR) */
+ /* or null terminated list of enums (when type == etENUM) */
+ gmx_bool *b;
+ rvec *rv;
+ } u;
+ const char *desc;
+} t_pargs;
+
+void get_pargs(int *argc, char *argv[], int nparg, t_pargs pa[],
+ gmx_bool bKeepArgs);
+/* Read a number of arguments from the command line.
+ * For etINT, etREAL and etCHAR an extra argument is read (when present)
+ * for etBOOL the gmx_boolean option is changed to the negate value
+ * If !bKeepArgs, the command line arguments are removed from the command line
+ */
+
+gmx_bool is_hidden(t_pargs *pa);
+/* Return TRUE when the option is a secret one */
+
+int nenum(const char *const enumc[]);
+/* returns ordinal number of selected enum from args
+ * depends on enumc[0] pointing to one of the other elements
+ * array must be terminated by a NULL pointer
+ */
+
+int opt2parg_int(const char *option, int nparg, t_pargs pa[]);
+
+gmx_bool opt2parg_gmx_bool(const char *option, int nparg, t_pargs pa[]);
+
+real opt2parg_real(const char *option, int nparg, t_pargs pa[]);
+
+const char *opt2parg_str(const char *option, int nparg, t_pargs pa[]);
+
+const char *opt2parg_enum(const char *option, int nparg, t_pargs pa[]);
+
+gmx_bool opt2parg_bSet(const char *option, int nparg, t_pargs pa[]);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
#include "typedefs.h"
#include "warninp.h"
-
#ifdef __cplusplus
extern "C" {
#endif
Initally read in with read_inpfile, then filled in with missing values
through get_eint, get_ereal, etc. */
-
-
t_inpfile *read_inpfile(const char *fn, int *ninp,
warninp_t wi);
/* Create & populate a t_inpfile struct from values in file fn.
#define CTYPE(s) STYPENC("; " s, NULL)
/* This last one prints a comment line where you can add some explanation */
-/* This structure is used for parsing arguments off the comand line */
-enum {
- etINT, etGMX_LARGE_INT, etREAL, etTIME, etSTR, etBOOL, etRVEC, etENUM, etNR
-};
-
-typedef struct {
- const char *option;
- gmx_bool bSet;
- int type;
- union {
- void *v; /* This is a nasty workaround, to be able to use initialized */
- int *i; /* arrays */
- gmx_large_int_t *is;
- real *r;
- const char **c; /* Must be pointer to string (when type == etSTR) */
- /* or null terminated list of enums (when type == etENUM) */
- gmx_bool *b;
- rvec *rv;
- } u;
- const char *desc;
-} t_pargs;
-
-void get_pargs(int *argc, char *argv[], int nparg, t_pargs pa[],
- gmx_bool bKeepArgs);
-/* Read a number of arguments from the command line.
- * For etINT, etREAL and etCHAR an extra argument is read (when present)
- * for etBOOL the gmx_boolean option is changed to the negate value
- * If !bKeepArgs, the command line arguments are removed from the command line
- */
-
-gmx_bool is_hidden(t_pargs *pa);
-/* Return TRUE when the option is a secret one */
-
-int nenum(const char *const enumc[]);
-/* returns ordinal number of selected enum from args
- * depends on enumc[0] pointing to one of the other elements
- * array must be terminated by a NULL pointer
- */
-
-int opt2parg_int(const char *option, int nparg, t_pargs pa[]);
-
-gmx_bool opt2parg_gmx_bool(const char *option, int nparg, t_pargs pa[]);
-
-real opt2parg_real(const char *option, int nparg, t_pargs pa[]);
-
-const char *opt2parg_str(const char *option, int nparg, t_pargs pa[]);
-
-const char *opt2parg_enum(const char *option, int nparg, t_pargs pa[]);
-
-gmx_bool opt2parg_bSet(const char *option, int nparg, t_pargs pa[]);
-
#ifdef __cplusplus
}
#endif