Example #1
0
gmx_large_int_t get_egmx_large_int(int *ninp, t_inpfile **inp,
                                   const char *name, gmx_large_int_t def,
                                   warninp_t wi)
{
    char            buf[32], *ptr, warn_buf[STRLEN];
    int             ii;
    gmx_large_int_t ret;

    ii = get_einp(ninp, inp, name);

    if (ii == -1)
    {
        sprintf(buf, gmx_large_int_pfmt, def);
        (*inp)[(*ninp)-1].value = strdup(buf);

        return def;
    }
    else
    {
        ret = str_to_large_int_t((*inp)[ii].value, &ptr);
        if (ptr == (*inp)[ii].value)
        {
            sprintf(warn_buf, "Right hand side '%s' for parameter '%s' in parameter file is not an integer value\n", (*inp)[ii].value, (*inp)[ii].name);
            warning_error(wi, warn_buf);
        }

        return ret;
    }
}
Example #2
0
gmx_large_int_t istepscan(int argc,char *argv[],int *i)
{
    const char *const arg = argv[*i];
    if (argc <= (*i)+1)
    {
        usage("an integer", arg);
    }
    const char *const value = argv[++(*i)];
    char *endptr;
    gmx_large_int_t var = str_to_large_int_t(value, &endptr);
    if (*value == '\0' || *endptr != '\0')
    {
        usage("an integer", arg);
    }
    return var;
}