#ifndef _RATLPTYPES_H_
#define _RATLPTYPES_H_
#ifdef __cplusplus
extern "C" {
#endif
enum con_type { CON_FREE = 0, CON_LHS, CON_RHS, CON_RANGE, CON_EQUAL };
enum var_type { VAR_FREE = 0, VAR_LOWER, VAR_UPPER, VAR_BOXED, VAR_FIXED };
enum sos_type { SOS_ERR = 0, SOS_TYPE1, SOS_TYPE2 };
enum var_class { VAR_CON = 0, VAR_IMP, VAR_INT };
enum lp_direct { LP_MIN = 0, LP_MAX };
enum lp_type { LP_ERR = 0, LP_LP, LP_IP };
enum lp_format { LP_FORM_ERR = 0, LP_FORM_LPF, LP_FORM_HUM, LP_FORM_MPS, LP_FORM_RLP, LP_FORM_PIP, LP_FORM_QBO };
#if 0
enum presolve_result
{
PRESOLVE_ERROR = 0, PRESOLVE_OKAY, PRESOLVE_INFEASIBLE,
PRESOLVE_UNBOUNDED, PRESOLVE_VANISHED
};
typedef enum presolve_result PSResult;
#endif
typedef struct nonzero Nzo;
typedef struct variable Var;
typedef struct constraint Con;
typedef struct soset Sos;
typedef struct soselement Sse;
typedef struct lpstorage Lps;
typedef enum con_type ConType;
typedef enum sos_type SosType;
typedef enum var_class VarClass;
typedef enum lp_direct LpDirect;
typedef enum lp_type LpType;
typedef enum lp_format LpFormat;
#define LP_FLAG_CON_SCALE 0x0001
#define LP_FLAG_CON_SEPAR 0x0002
#define LP_FLAG_CON_CHECK 0x0004
#define LP_FLAG_CON_INDIC 0x0008
#define LP_FLAG_CON_QUBO 0x0010
#define LP_FLAG_CON_PENALTY1 0x0020
#define LP_FLAG_CON_PENALTY2 0x0040
#define LP_FLAG_CON_PENALTY3 0x0080
#define LP_FLAG_CON_PENALTY4 0x0100
#define LP_FLAG_CON_PENALTY5 0x0200
#define LP_FLAG_CON_PENALTY6 0x0400
#define HAS_LOWER(var) ((var)->type != VAR_FREE && (var)->type != VAR_UPPER)
#define HAS_UPPER(var) ((var)->type != VAR_FREE && (var)->type != VAR_LOWER)
#define HAS_LHS(con) ((con)->type != CON_FREE && (con)->type != CON_RHS)
#define HAS_RHS(con) ((con)->type != CON_FREE && (con)->type != CON_LHS)
#ifdef __cplusplus
}
#endif
#endif