Example #1
0
int EGLPNUM_TYPENAME_ILLmps_int_sos_mode (
	EGLPNUM_TYPENAME_ILLread_mps_state * state)
{
	if (!strcmp (state->field, "'INTORG'"))
	{
		if (state->intvar)
		{
			return !EGLPNUM_TYPENAME_ILLmps_error (state, "'INTEND' expected.\n");
		}
		else
		{
			state->intvar = 1;
			ILL_RESULT (0, "EGLPNUM_TYPENAME_ILLmps_int_sos_mode");
		}
	}
	if (!strcmp (state->field, "'INTEND'"))
	{
		if (state->intvar)
		{
			state->intvar = 0;
			ILL_RESULT (0, "EGLPNUM_TYPENAME_ILLmps_int_sos_mode");
		}
		else
		{
			return !EGLPNUM_TYPENAME_ILLmps_error (state, "'INTORG' expected.\n");
		}
	}
	if (!strcmp (state->field, "'SOSORG'"))
	{
		if (state->sosvar)
		{
			return !EGLPNUM_TYPENAME_ILLmps_error (state, "'SOSEND' expected.\n");
		}
		else
		{
			state->sosvar = 1;
			ILL_RESULT (0, "EGLPNUM_TYPENAME_ILLmps_int_sos_mode");
		}
	}
	if (!strcmp (state->field, "'SOSEND'"))
	{
		if (state->sosvar)
		{
			state->sosvar = 0;
			ILL_RESULT (0, "EGLPNUM_TYPENAME_ILLmps_int_sos_mode");
		}
		else
		{
			return !EGLPNUM_TYPENAME_ILLmps_error (state, "'SOSORG' expected.\n");
		}
	}
	return EGLPNUM_TYPENAME_ILLmps_error (state, "%s is not a MARKER field.\n", state->field);
}
Example #2
0
int mpq_ILLmps_next_bound (mpq_ILLread_mps_state * state,
      mpq_t * coef)
{
    int len = 0, sign = 1;
    char c, *p;

    if (!mpq_mps_skip_comment (state)) {
	c = *state->p;
	if (c == '-') {
	    sign = -1;
	    len = 1;
	} else {
	    if (c == '+') {
		len = 1;
	    }
	}
	if (!strncasecmp (state->p + len, "INFINITY", (size_t) 8)) {
	    len += 8;
	} else {
	    if (!strncasecmp (state->p + len, "INF", (size_t) 3)) {
		len += 3;
	    }
	}
	if (len > 1) {
	    state->p += len;
	    p = state->p;
	    mpq_mps_skip_comment (state);
	    if (!mpq_END_LINE (state->p) && p == state->p) {
		/* found no blanks so this INF/INFINITY is the prefix of
		   something else */
		state->p -= len;
		return 1;	/* no coef found */
	    } else {
		if (sign == 1)
		    mpq_EGlpNumCopy (*coef, mpq_ILL_MAXDOUBLE);
		else
		    mpq_EGlpNumCopy (*coef, mpq_ILL_MINDOUBLE);
		state->field_num++;
		ILL_RESULT (0, "mpq_ILLmps_next_bound");
	    }
	}
	if (mpq_get_double (state, 0, coef)) {
	    ILL_RESULT (0, "mpq_ILLmps_next_bound");
	} else {
	    ILL_RESULT (1, "mpq_ILLmps_next_bound");	/* no coef found */
	}
    }
    ILL_RETURN (1, "mpq_ILLmps_next_bound");
}
Example #3
0
int EGLPNUM_TYPENAME_ILLmps_state_init (
	EGLPNUM_TYPENAME_ILLread_mps_state * state,
	EGLPNUM_TYPENAME_qsline_reader * file,
	const char *fname)
{
	int i, rval = 0;

	ILL_FAILtrue (file == 0, "need file");
	state->p = 0;
	state->file_name = fname;
	state->file = file;

	for (i = 0; i < ILL_MPS_N_SECTIONS; i++)
	{
		state->section[i] = 0;
	}
	state->active = ILL_MPS_NONE;
	state->intvar = 0;
	state->sosvar = 0;
	state->line_num = 0;
	state->p = 0;

	state->obj = 0;
	state->line[0] = '\0';
	state->key[0] = '\0';
	state->field[0] = '\0';

CLEANUP:
	ILL_RESULT (rval, "EGLPNUM_TYPENAME_ILLmps_state_init");
}
Example #4
0
int mpq_ILLmps_next_coef (mpq_ILLread_mps_state * state,
      mpq_t * coef)
{
    int len = 0;

    if (!mpq_mps_skip_comment (state)) {
	len = mpq_get_double (state, 0, coef);
    }
    ILL_RESULT (!(len > 0), "mpq_ILLmps_next_coef");
}
Example #5
0
int EGLPNUM_TYPENAME_ILLmps_next_coef (
	EGLPNUM_TYPENAME_ILLread_mps_state * state,
	EGLPNUM_TYPE * coef)
{
	int len = 0;

	if (!mps_skip_comment (state))
	{
		len = get_double (state, 0, coef);
	}
	ILL_RESULT (!(len > 0), "EGLPNUM_TYPENAME_ILLmps_next_coef");
}
Example #6
0
int mpq_ILLmps_set_section (mpq_ILLread_mps_state * state,
      const ILLmps_section sec)
{
    int rval = 0;
    ILL_FAILfalse (sec != ILL_MPS_NONE, "must be in a proper section");
    if (state->section[sec]) {
	rval = mpq_ILLmps_error (state, "Two %s sections.\n", mpq_ILLmps_section_name[sec]);
    }
    state->section[sec]++;
    state->active = sec;
CLEANUP:
    ILL_RESULT (rval, "mpq_ILLmps_set_section");
}
Example #7
0
static char mpq_get_double (mpq_ILLread_mps_state * state,
      int peek,
      mpq_t * coef)
{
    char ok = 0;
    int len, rval = 0;

    ILL_FAILfalse (state != 0, "must have state");
    if (mpq_mps_skip_comment (state))
	return 0;
    len = mpq_ILLget_value (state->p, coef);
    if (len > 0) {
	if (!peek) {
	    state->p += len;
	    state->field_num++;
	}
	ok = 1;
    }
CLEANUP:
    ILL_RESULT (ok, "mpq_get_double");
}