#ifndef __BONSTDCINTERFACE_H__
#define __BONSTDCINTERFACE_H__
#ifdef __cplusplus
extern "C"
{
#endif
typedef double Number;
typedef int Index;
typedef int Int;
typedef enum
{
CONTINUOUS,
BINARY,
INTEGER
} VariableTypeC;
typedef enum
{
LINEAR,
NON_LINEAR
} LinearityTypeC;
typedef enum
{ C_STYLE = 0,
FORTRAN_STYLE = 1
} IndexStyleC;
struct BonminBranchingInfo;
struct BonminSosInfo;
struct BonminProblemInfo;
typedef struct BonminProblemInfo* BonminProblem;
typedef int Bool;
#ifndef TRUE
# define TRUE (1)
#endif
#ifndef FALSE
# define FALSE (0)
#endif
typedef void * UserDataPtr;
typedef Bool (*Eval_F_CB)(Index n, Number* x, Bool new_x,
Number* obj_value, UserDataPtr user_data);
typedef Bool (*Eval_Grad_F_CB)(Index n, Number* x, Bool new_x,
Number* grad_f, UserDataPtr user_data);
typedef Bool (*Eval_G_CB)(Index n, Number* x, Bool new_x,
Index m, Number* g, UserDataPtr user_data);
typedef Bool (*Eval_Jac_G_CB)(Index n, Number *x, Bool new_x,
Index m, Index nnz_jac_g,
Index *iRow, Index *jCol, Number *values,
UserDataPtr user_data);
typedef Bool (*Eval_H_CB)(Index n, Number *x, Bool new_x, Number obj_factor,
Index m, Number *lambda, Bool new_lambda,
Index nnz_h_lag, Index *iRow, Index *jCol,
Number *values, UserDataPtr user_data);
typedef Bool (*Intermediate_CB)(Index alg_mod,
Index iter_count, Number obj_value,
Number inf_pr, Number inf_du,
Number mu, Number d_norm,
Number regularization_size,
Number alpha_du, Number alpha_pr,
Index ls_trials, UserDataPtr user_data);
BonminProblem CreateBonminProblem(
Index n
, Number* x_L
, Number* x_U
, Index m
, Number* g_L
, Number* g_U
, Index nnz_jac_g
, Index nnz_h_lag
, Index index_style
, Eval_F_CB eval_f
, Eval_G_CB eval_g
, Eval_Grad_F_CB eval_grad_f
, Eval_Jac_G_CB eval_jac_g
, Eval_H_CB eval_h
, VariableTypeC* var_types
, LinearityTypeC* var_linearity_types
, LinearityTypeC* constraint_linearity_types
, struct BonminSosInfo* sos_info
, struct BonminBranchingInfo* branching_info );
void FreeBonminProblem(BonminProblem bonmin_problem);
Bool AddBonminStrOption(BonminProblem bonmin_problem, char* keyword, char* val);
Bool AddBonminNumOption(BonminProblem bonmin_problem, char* keyword, Number val);
Bool ReadBonminOptFile( BonminProblem bonmin_problem, char* file_path );
Bool ReadBonminOptString( BonminProblem bonmin_problem, char* option );
Bool AddBonminIntOption(BonminProblem bonmin_problem, char* keyword, Int val);
Bool OpenBonminOutputFile(BonminProblem bonmin_problem, char* file_name,
Int print_level);
Bool SetBonminProblemScaling(BonminProblem bonmin_problem,
Number obj_scaling,
Number* x_scaling,
Number* g_scaling);
Int BonminSolve(
BonminProblem bonmin_problem
, Number* x
, Number* g
, Number* obj_val
, Number* mult_g
, Number* mult_x_L
, Number* mult_x_U
, UserDataPtr user_data );
#ifdef __cplusplus
}
#endif
#endif