#define HEADER_lp_report

#include "lp_lib.h"

#if defined LPSOLVEAPIFROMLPRECDEF
# define LPSOLVEAPIFROMLPREC
# define LPSOLVEAPIDEF
#endif

#if defined LPSOLVEAPIFROMLIBDEF
# define LPSOLVEAPIFROMLIB
# define LPSOLVEAPIDEF
#endif

#if !defined LPSOLVEAPIDEF
# define LPSOLVEAPIDEF extern
#endif

/* entries for lp structure */
LPSOLVEAPIDEF add_column_func               *_add_column;
LPSOLVEAPIDEF add_columnex_func             *_add_columnex;
LPSOLVEAPIDEF add_constraint_func           *_add_constraint;
LPSOLVEAPIDEF add_constraintex_func         *_add_constraintex;
LPSOLVEAPIDEF add_lag_con_func              *_add_lag_con;
LPSOLVEAPIDEF add_SOS_func                  *_add_SOS;
LPSOLVEAPIDEF column_in_lp_func             *_column_in_lp;
LPSOLVEAPIDEF copy_lp_func                  *_copy_lp;
LPSOLVEAPIDEF default_basis_func            *_default_basis;
LPSOLVEAPIDEF del_column_func               *_del_column;
LPSOLVEAPIDEF del_constraint_func           *_del_constraint;
LPSOLVEAPIDEF delete_lp_func                *_delete_lp;
LPSOLVEAPIDEF dualize_lp_func               *_dualize_lp;
LPSOLVEAPIDEF free_lp_func                  *_free_lp;
LPSOLVEAPIDEF get_anti_degen_func           *_get_anti_degen;
LPSOLVEAPIDEF get_basis_func                *_get_basis;
LPSOLVEAPIDEF get_basiscrash_func           *_get_basiscrash;
LPSOLVEAPIDEF get_bb_depthlimit_func        *_get_bb_depthlimit;
LPSOLVEAPIDEF get_bb_floorfirst_func        *_get_bb_floorfirst;
LPSOLVEAPIDEF get_bb_rule_func              *_get_bb_rule;
LPSOLVEAPIDEF get_bounds_tighter_func       *_get_bounds_tighter;
LPSOLVEAPIDEF get_break_at_value_func       *_get_break_at_value;
LPSOLVEAPIDEF get_col_name_func             *_get_col_name;
LPSOLVEAPIDEF get_column_func               *_get_column;
LPSOLVEAPIDEF get_columnex_func             *_get_columnex;
LPSOLVEAPIDEF get_constr_type_func          *_get_constr_type;
LPSOLVEAPIDEF get_constr_value_func         *_get_constr_value;
LPSOLVEAPIDEF get_constraints_func          *_get_constraints;
LPSOLVEAPIDEF get_dual_solution_func        *_get_dual_solution;
LPSOLVEAPIDEF get_epsb_func                 *_get_epsb;
LPSOLVEAPIDEF get_epsd_func                 *_get_epsd;
LPSOLVEAPIDEF get_epsel_func                *_get_epsel;
LPSOLVEAPIDEF get_epsint_func               *_get_epsint;
LPSOLVEAPIDEF get_epsperturb_func           *_get_epsperturb;
LPSOLVEAPIDEF get_epspivot_func             *_get_epspivot;
LPSOLVEAPIDEF get_improve_func              *_get_improve;
LPSOLVEAPIDEF get_infinite_func             *_get_infinite;
LPSOLVEAPIDEF get_lambda_func               *_get_lambda;
LPSOLVEAPIDEF get_lowbo_func                *_get_lowbo;
LPSOLVEAPIDEF get_lp_index_func             *_get_lp_index;
LPSOLVEAPIDEF get_lp_name_func              *_get_lp_name;
LPSOLVEAPIDEF get_Lrows_func                *_get_Lrows;
LPSOLVEAPIDEF get_mat_func                  *_get_mat;
LPSOLVEAPIDEF get_mat_byindex_func          *_get_mat_byindex;
LPSOLVEAPIDEF get_max_level_func            *_get_max_level;
LPSOLVEAPIDEF get_maxpivot_func             *_get_maxpivot;
LPSOLVEAPIDEF get_mip_gap_func              *_get_mip_gap;
LPSOLVEAPIDEF get_multiprice_func           *_get_multiprice;
LPSOLVEAPIDEF get_nameindex_func            *_get_nameindex;
LPSOLVEAPIDEF get_Ncolumns_func             *_get_Ncolumns;
LPSOLVEAPIDEF get_negrange_func             *_get_negrange;
LPSOLVEAPIDEF get_nz_func                   *_get_nonzeros;
LPSOLVEAPIDEF get_Norig_columns_func        *_get_Norig_columns;
LPSOLVEAPIDEF get_Norig_rows_func           *_get_Norig_rows;
LPSOLVEAPIDEF get_Nrows_func                *_get_Nrows;
LPSOLVEAPIDEF get_obj_bound_func            *_get_obj_bound;
LPSOLVEAPIDEF get_objective_func            *_get_objective;
LPSOLVEAPIDEF get_orig_index_func           *_get_orig_index;
LPSOLVEAPIDEF get_origcol_name_func         *_get_origcol_name;
LPSOLVEAPIDEF get_origrow_name_func         *_get_origrow_name;
LPSOLVEAPIDEF get_partialprice_func         *_get_partialprice;
LPSOLVEAPIDEF get_pivoting_func             *_get_pivoting;
LPSOLVEAPIDEF get_presolve_func             *_get_presolve;
LPSOLVEAPIDEF get_presolveloops_func        *_get_presolveloops;
LPSOLVEAPIDEF get_primal_solution_func      *_get_primal_solution;
LPSOLVEAPIDEF get_print_sol_func            *_get_print_sol;
LPSOLVEAPIDEF get_pseudocosts_func          *_get_pseudocosts;
LPSOLVEAPIDEF get_ptr_constraints_func      *_get_ptr_constraints;
LPSOLVEAPIDEF get_ptr_dual_solution_func    *_get_ptr_dual_solution;
LPSOLVEAPIDEF get_ptr_lambda_func           *_get_ptr_lambda;
LPSOLVEAPIDEF get_ptr_primal_solution_func  *_get_ptr_primal_solution;
LPSOLVEAPIDEF get_ptr_sensitivity_obj_func  *_get_ptr_sensitivity_obj;
LPSOLVEAPIDEF get_ptr_sensitivity_objex_func *_get_ptr_sensitivity_objex;
LPSOLVEAPIDEF get_ptr_sensitivity_rhs_func  *_get_ptr_sensitivity_rhs;
LPSOLVEAPIDEF get_ptr_variables_func        *_get_ptr_variables;
LPSOLVEAPIDEF get_rh_func                   *_get_rh;
LPSOLVEAPIDEF get_rh_range_func             *_get_rh_range;
LPSOLVEAPIDEF get_row_func                  *_get_row;
LPSOLVEAPIDEF get_rowex_func                *_get_rowex;
LPSOLVEAPIDEF get_row_name_func             *_get_row_name;
LPSOLVEAPIDEF get_scalelimit_func           *_get_scalelimit;
LPSOLVEAPIDEF get_scaling_func              *_get_scaling;
LPSOLVEAPIDEF get_sensitivity_obj_func      *_get_sensitivity_obj;
LPSOLVEAPIDEF get_sensitivity_objex_func    *_get_sensitivity_objex;
LPSOLVEAPIDEF get_sensitivity_rhs_func      *_get_sensitivity_rhs;
LPSOLVEAPIDEF get_simplextype_func          *_get_simplextype;
LPSOLVEAPIDEF get_solutioncount_func        *_get_solutioncount;
LPSOLVEAPIDEF get_solutionlimit_func        *_get_solutionlimit;
LPSOLVEAPIDEF get_status_func               *_get_status;
LPSOLVEAPIDEF get_statustext_func           *_get_statustext;
LPSOLVEAPIDEF get_timeout_func              *_get_timeout;
LPSOLVEAPIDEF get_total_iter_func           *_get_total_iter;
LPSOLVEAPIDEF get_total_nodes_func          *_get_total_nodes;
LPSOLVEAPIDEF get_upbo_func                 *_get_upbo;
LPSOLVEAPIDEF get_var_branch_func           *_get_var_branch;
LPSOLVEAPIDEF get_var_dualresult_func       *_get_var_dualresult;
LPSOLVEAPIDEF get_var_primalresult_func     *_get_var_primalresult;
LPSOLVEAPIDEF get_var_priority_func         *_get_var_priority;
LPSOLVEAPIDEF get_variables_func            *_get_variables;
LPSOLVEAPIDEF get_verbose_func              *_get_verbose;
LPSOLVEAPIDEF get_working_objective_func    *_get_working_objective;
LPSOLVEAPIDEF guess_basis_func              *_guess_basis;
LPSOLVEAPIDEF has_BFP_func                  *_has_BFP;
LPSOLVEAPIDEF has_XLI_func                  *_has_XLI;
LPSOLVEAPIDEF is_add_rowmode_func           *_is_add_rowmode;
LPSOLVEAPIDEF is_anti_degen_func            *_is_anti_degen;
LPSOLVEAPIDEF is_binary_func                *_is_binary;
LPSOLVEAPIDEF is_break_at_first_func        *_is_break_at_first;
LPSOLVEAPIDEF is_constr_type_func           *_is_constr_type;
LPSOLVEAPIDEF is_debug_func                 *_is_debug;
LPSOLVEAPIDEF is_feasible_func              *_is_feasible;
LPSOLVEAPIDEF is_unbounded_func             *_is_unbounded;
LPSOLVEAPIDEF is_infinite_func              *_is_infinite;
LPSOLVEAPIDEF is_int_func                   *_is_int;
LPSOLVEAPIDEF is_integerscaling_func        *_is_integerscaling;
LPSOLVEAPIDEF is_lag_trace_func             *_is_lag_trace;
LPSOLVEAPIDEF is_maxim_func                 *_is_maxim;
LPSOLVEAPIDEF is_nativeBFP_func             *_is_nativeBFP;
LPSOLVEAPIDEF is_nativeXLI_func             *_is_nativeXLI;
LPSOLVEAPIDEF is_negative_func              *_is_negative;
LPSOLVEAPIDEF is_piv_mode_func              *_is_piv_mode;
LPSOLVEAPIDEF is_piv_rule_func              *_is_piv_rule;
LPSOLVEAPIDEF is_presolve_func              *_is_presolve;
LPSOLVEAPIDEF is_scalemode_func             *_is_scalemode;
LPSOLVEAPIDEF is_scaletype_func             *_is_scaletype;
LPSOLVEAPIDEF is_semicont_func              *_is_semicont;
LPSOLVEAPIDEF is_SOS_var_func               *_is_SOS_var;
LPSOLVEAPIDEF is_trace_func                 *_is_trace;
LPSOLVEAPIDEF is_use_names_func             *_is_use_names;
LPSOLVEAPIDEF lp_solve_version_func         *_lp_solve_version;
LPSOLVEAPIDEF make_lp_func                  *_make_lp;
LPSOLVEAPIDEF print_constraints_func        *_print_constraints;
LPSOLVEAPIDEF print_debugdump_func          *_print_debugdump;
LPSOLVEAPIDEF print_duals_func              *_print_duals;
LPSOLVEAPIDEF print_lp_func                 *_print_lp;
LPSOLVEAPIDEF print_objective_func          *_print_objective;
LPSOLVEAPIDEF print_scales_func             *_print_scales;
LPSOLVEAPIDEF print_solution_func           *_print_solution;
LPSOLVEAPIDEF print_str_func                *_print_str;
LPSOLVEAPIDEF print_tableau_func            *_print_tableau;
LPSOLVEAPIDEF put_abortfunc_func            *_put_abortfunc;
LPSOLVEAPIDEF put_bb_nodefunc_func          *_put_bb_nodefunc;
LPSOLVEAPIDEF put_bb_branchfunc_func        *_put_bb_branchfunc;
LPSOLVEAPIDEF put_logfunc_func              *_put_logfunc;
LPSOLVEAPIDEF put_msgfunc_func              *_put_msgfunc;
LPSOLVEAPIDEF read_LP_func                  *_read_LP;
LPSOLVEAPIDEF read_MPS_func                 *_read_MPS;
LPSOLVEAPIDEF read_XLI_func                 *_read_XLI;
LPSOLVEAPIDEF read_params_func              *_read_params;
LPSOLVEAPIDEF read_basis_func               *_read_basis;
LPSOLVEAPIDEF reset_basis_func              *_reset_basis;
LPSOLVEAPIDEF reset_params_func             *_reset_params;
LPSOLVEAPIDEF reportfunc                    *_report;
LPSOLVEAPIDEF resize_lp_func                *_resize_lp;
LPSOLVEAPIDEF set_add_rowmode_func          *_set_add_rowmode;
LPSOLVEAPIDEF set_anti_degen_func           *_set_anti_degen;
LPSOLVEAPIDEF set_basisvar_func             *_set_basisvar;
LPSOLVEAPIDEF set_basis_func                *_set_basis;
LPSOLVEAPIDEF set_basiscrash_func           *_set_basiscrash;
LPSOLVEAPIDEF set_bb_depthlimit_func        *_set_bb_depthlimit;
LPSOLVEAPIDEF set_bb_floorfirst_func        *_set_bb_floorfirst;
LPSOLVEAPIDEF set_bb_rule_func              *_set_bb_rule;
LPSOLVEAPIDEF set_BFP_func                  *_set_BFP;
LPSOLVEAPIDEF set_binary_func               *_set_binary;
LPSOLVEAPIDEF set_bounds_func               *_set_bounds;
LPSOLVEAPIDEF set_bounds_tighter_func       *_set_bounds_tighter;
LPSOLVEAPIDEF set_break_at_first_func       *_set_break_at_first;
LPSOLVEAPIDEF set_break_at_value_func       *_set_break_at_value;
LPSOLVEAPIDEF set_column_func               *_set_column;
LPSOLVEAPIDEF set_columnex_func             *_set_columnex;
LPSOLVEAPIDEF set_col_name_func             *_set_col_name;
LPSOLVEAPIDEF set_constr_type_func          *_set_constr_type;
LPSOLVEAPIDEF set_debug_func                *_set_debug;
LPSOLVEAPIDEF set_epsb_func                 *_set_epsb;
LPSOLVEAPIDEF set_epsd_func                 *_set_epsd;
LPSOLVEAPIDEF set_epsel_func                *_set_epsel;
LPSOLVEAPIDEF set_epsint_func               *_set_epsint;
LPSOLVEAPIDEF set_epslevel_func             *_set_epslevel;
LPSOLVEAPIDEF set_epsperturb_func           *_set_epsperturb;
LPSOLVEAPIDEF set_epspivot_func             *_set_epspivot;
LPSOLVEAPIDEF set_unbounded_func            *_set_unbounded;
LPSOLVEAPIDEF set_improve_func              *_set_improve;
LPSOLVEAPIDEF set_infinite_func             *_set_infinite;
LPSOLVEAPIDEF set_int_func                  *_set_int;
LPSOLVEAPIDEF set_lag_trace_func            *_set_lag_trace;
LPSOLVEAPIDEF set_lowbo_func                *_set_lowbo;
LPSOLVEAPIDEF set_lp_name_func              *_set_lp_name;
LPSOLVEAPIDEF set_mat_func                  *_set_mat;
LPSOLVEAPIDEF set_maxim_func                *_set_maxim;
LPSOLVEAPIDEF set_maxpivot_func             *_set_maxpivot;
LPSOLVEAPIDEF set_minim_func                *_set_minim;
LPSOLVEAPIDEF set_mip_gap_func              *_set_mip_gap;
LPSOLVEAPIDEF set_multiprice_func           *_set_multiprice;
LPSOLVEAPIDEF set_negrange_func             *_set_negrange;
LPSOLVEAPIDEF set_obj_bound_func            *_set_obj_bound;
LPSOLVEAPIDEF set_obj_fn_func               *_set_obj_fn;
LPSOLVEAPIDEF set_obj_fnex_func             *_set_obj_fnex;
LPSOLVEAPIDEF set_obj_func                  *_set_obj;
LPSOLVEAPIDEF set_outputfile_func           *_set_outputfile;
LPSOLVEAPIDEF set_outputstream_func         *_set_outputstream;
LPSOLVEAPIDEF set_partialprice_func         *_set_partialprice;
LPSOLVEAPIDEF set_pivoting_func             *_set_pivoting;
LPSOLVEAPIDEF set_preferdual_func           *_set_preferdual;
LPSOLVEAPIDEF set_presolve_func             *_set_presolve;
LPSOLVEAPIDEF set_print_sol_func            *_set_print_sol;
LPSOLVEAPIDEF set_pseudocosts_func          *_set_pseudocosts;
LPSOLVEAPIDEF set_rh_func                   *_set_rh;
LPSOLVEAPIDEF set_rh_range_func             *_set_rh_range;
LPSOLVEAPIDEF set_rh_vec_func               *_set_rh_vec;
LPSOLVEAPIDEF set_row_func                  *_set_row;
LPSOLVEAPIDEF set_rowex_func                *_set_rowex;
LPSOLVEAPIDEF set_row_name_func             *_set_row_name;
LPSOLVEAPIDEF set_scalelimit_func           *_set_scalelimit;
LPSOLVEAPIDEF set_scaling_func              *_set_scaling;
LPSOLVEAPIDEF set_semicont_func             *_set_semicont;
LPSOLVEAPIDEF set_sense_func                *_set_sense;
LPSOLVEAPIDEF set_simplextype_func          *_set_simplextype;
LPSOLVEAPIDEF set_solutionlimit_func        *_set_solutionlimit;
LPSOLVEAPIDEF set_timeout_func              *_set_timeout;
LPSOLVEAPIDEF set_trace_func                *_set_trace;
LPSOLVEAPIDEF set_upbo_func                 *_set_upbo;
LPSOLVEAPIDEF set_var_branch_func           *_set_var_branch;
LPSOLVEAPIDEF set_var_weights_func          *_set_var_weights;
LPSOLVEAPIDEF set_verbose_func              *_set_verbose;
LPSOLVEAPIDEF set_XLI_func                  *_set_XLI;
LPSOLVEAPIDEF solve_func                    *_solve;
LPSOLVEAPIDEF str_add_column_func           *_str_add_column;
LPSOLVEAPIDEF str_add_constraint_func       *_str_add_constraint;
LPSOLVEAPIDEF str_add_lag_con_func          *_str_add_lag_con;
LPSOLVEAPIDEF str_set_obj_fn_func           *_str_set_obj_fn;
LPSOLVEAPIDEF str_set_rh_vec_func           *_str_set_rh_vec;
LPSOLVEAPIDEF time_elapsed_func             *_time_elapsed;
LPSOLVEAPIDEF unscale_func                  *_unscale;
LPSOLVEAPIDEF write_lp_func                 *_write_lp;
LPSOLVEAPIDEF write_LP_func                 *_write_LP;
LPSOLVEAPIDEF write_mps_func                *_write_mps;
LPSOLVEAPIDEF write_MPS_func                *_write_MPS;
LPSOLVEAPIDEF write_freemps_func            *_write_freemps;
LPSOLVEAPIDEF write_freeMPS_func            *_write_freeMPS;
LPSOLVEAPIDEF write_XLI_func                *_write_XLI;
LPSOLVEAPIDEF write_basis_func              *_write_basis;
LPSOLVEAPIDEF write_params_func             *_write_params;

#if defined LPSOLVEAPIFROMLPREC

static int init_lpsolve(lprec *lp)
{
  _add_column = lp->add_column;
  _add_columnex = lp->add_columnex;
  _add_constraint = lp->add_constraint;
  _add_constraintex = lp->add_constraintex;
  _add_lag_con = lp->add_lag_con;
  _add_SOS = lp->add_SOS;
  _column_in_lp = lp->column_in_lp;
  _copy_lp = lp->copy_lp;
  _default_basis = lp->default_basis;
  _del_column = lp->del_column;
  _del_constraint = lp->del_constraint;
  _delete_lp = lp->delete_lp;
  _dualize_lp = lp->dualize_lp;
  _free_lp = lp->free_lp;
  _get_anti_degen = lp->get_anti_degen;
  _get_basis = lp->get_basis;
  _get_basiscrash = lp->get_basiscrash;
  _get_bb_depthlimit = lp->get_bb_depthlimit;
  _get_bb_floorfirst = lp->get_bb_floorfirst;
  _get_bb_rule = lp->get_bb_rule;
  _get_bounds_tighter = lp->get_bounds_tighter;
  _get_break_at_value = lp->get_break_at_value;
  _get_col_name = lp->get_col_name;
  _get_columnex = lp->get_columnex;
  _get_constr_type = lp->get_constr_type;
  _get_constr_value = lp->get_constr_value;
  _get_constraints = lp->get_constraints;
  _get_dual_solution = lp->get_dual_solution;
  _get_epsb = lp->get_epsb;
  _get_epsd = lp->get_epsd;
  _get_epsel = lp->get_epsel;
  _get_epsint = lp->get_epsint;
  _get_epsperturb = lp->get_epsperturb;
  _get_epspivot = lp->get_epspivot;
  _get_improve = lp->get_improve;
  _get_infinite = lp->get_infinite;
  _get_lambda = lp->get_lambda;
  _get_lowbo = lp->get_lowbo;
  _get_lp_index = lp->get_lp_index;
  _get_lp_name = lp->get_lp_name;
  _get_Lrows = lp->get_Lrows;
  _get_mat = lp->get_mat;
  _get_mat_byindex = lp->get_mat_byindex;
  _get_max_level = lp->get_max_level;
  _get_maxpivot = lp->get_maxpivot;
  _get_mip_gap = lp->get_mip_gap;
  _get_multiprice = lp->get_multiprice;
  _get_nameindex = lp->get_nameindex;
  _get_Ncolumns = lp->get_Ncolumns;
  _get_negrange = lp->get_negrange;
  _get_nonzeros = lp->get_nonzeros;
  _get_Norig_columns = lp->get_Norig_columns;
  _get_Norig_rows = lp->get_Norig_rows;
  _get_Nrows = lp->get_Nrows;
  _get_obj_bound = lp->get_obj_bound;
  _get_objective = lp->get_objective;
  _get_orig_index = lp->get_orig_index;
  _get_origcol_name = lp->get_origcol_name;
  _get_origrow_name = lp->get_origrow_name;
  _get_partialprice = lp->get_partialprice;
  _get_pivoting = lp->get_pivoting;
  _get_presolve = lp->get_presolve;
  _get_presolveloops = lp->get_presolveloops;
  _get_primal_solution = lp->get_primal_solution;
  _get_print_sol = lp->get_print_sol;
  _get_pseudocosts = lp->get_pseudocosts;
  _get_ptr_constraints = lp->get_ptr_constraints;
  _get_ptr_dual_solution = lp->get_ptr_dual_solution;
  _get_ptr_lambda = lp->get_ptr_lambda;
  _get_ptr_primal_solution = lp->get_ptr_primal_solution;
  _get_ptr_sensitivity_obj = lp->get_ptr_sensitivity_obj;
  _get_ptr_sensitivity_objex = lp->get_ptr_sensitivity_objex;
  _get_ptr_sensitivity_rhs = lp->get_ptr_sensitivity_rhs;
  _get_ptr_variables = lp->get_ptr_variables;
  _get_rh = lp->get_rh;
  _get_rh_range = lp->get_rh_range;
  _get_row = lp->get_row;
  _get_rowex = lp->get_rowex;
  _get_row_name = lp->get_row_name;
  _get_scalelimit = lp->get_scalelimit;
  _get_scaling = lp->get_scaling;
  _get_sensitivity_obj = lp->get_sensitivity_obj;
  _get_sensitivity_objex = lp->get_sensitivity_objex;
  _get_sensitivity_rhs = lp->get_sensitivity_rhs;
  _get_simplextype = lp->get_simplextype;
  _get_solutioncount = lp->get_solutioncount;
  _get_solutionlimit = lp->get_solutionlimit;
  _get_status = lp->get_status;
  _get_statustext = lp->get_statustext;
  _get_timeout = lp->get_timeout;
  _get_total_iter = lp->get_total_iter;
  _get_total_nodes = lp->get_total_nodes;
  _get_upbo = lp->get_upbo;
  _get_var_branch = lp->get_var_branch;
  _get_var_dualresult = lp->get_var_dualresult;
  _get_var_primalresult = lp->get_var_primalresult;
  _get_var_priority = lp->get_var_priority;
  _get_variables = lp->get_variables;
  _get_verbose = lp->get_verbose;
  _get_working_objective = lp->get_working_objective;
  _has_BFP = lp->has_BFP;
  _has_XLI = lp->has_XLI;
  _is_add_rowmode = lp->is_add_rowmode;
  _is_anti_degen = lp->is_anti_degen;
  _is_binary = lp->is_binary;
  _is_break_at_first = lp->is_break_at_first;
  _is_constr_type = lp->is_constr_type;
  _is_debug = lp->is_debug;
  _is_feasible = lp->is_feasible;
  _is_unbounded = lp->is_unbounded;
  _is_infinite = lp->is_infinite;
  _is_int = lp->is_int;
  _is_integerscaling = lp->is_integerscaling;
  _is_lag_trace = lp->is_lag_trace;
  _is_maxim = lp->is_maxim;
  _is_nativeBFP = lp->is_nativeBFP;
  _is_nativeXLI = lp->is_nativeXLI;
  _is_negative = lp->is_negative;
  _is_piv_mode = lp->is_piv_mode;
  _is_piv_rule = lp->is_piv_rule;
  _is_presolve = lp->is_presolve;
  _is_scalemode = lp->is_scalemode;
  _is_scaletype = lp->is_scaletype;
  _is_semicont = lp->is_semicont;
  _is_SOS_var = lp->is_SOS_var;
  _is_trace = lp->is_trace;
  _is_use_names = lp->is_use_names;
  _lp_solve_version = lp->lp_solve_version;
  _make_lp = lp->make_lp;
  _print_constraints = lp->print_constraints;
  _print_debugdump = lp->print_debugdump;
  _print_duals = lp->print_duals;
  _print_lp = lp->print_lp;
  _print_objective = lp->print_objective;
  _print_scales = lp->print_scales;
  _print_solution = lp->print_solution;
  _print_str = lp->print_str;
  _print_tableau = lp->print_tableau;
  _put_abortfunc = lp->put_abortfunc;
  _put_bb_nodefunc = lp->put_bb_nodefunc;
  _put_bb_branchfunc = lp->put_bb_branchfunc;
  _put_logfunc = lp->put_logfunc;
  _put_msgfunc = lp->put_msgfunc;
  _read_LP = lp->read_LP;
  _read_MPS = lp->read_MPS;
  _read_XLI = lp->read_XLI;
  _read_params = lp->read_params;
  _read_basis = lp->read_basis;
  _reset_basis = lp->reset_basis;
  _reset_params = lp->reset_params;
  _report = lp->report;
  _resize_lp = lp->resize_lp;
  _set_add_rowmode = lp->set_add_rowmode;
  _set_anti_degen = lp->set_anti_degen;
  _set_basisvar = lp->set_basisvar;
  _set_basis = lp->set_basis;
  _set_basiscrash = lp->set_basiscrash;
  _set_bb_depthlimit = lp->set_bb_depthlimit;
  _set_bb_floorfirst = lp->set_bb_floorfirst;
  _set_bb_rule = lp->set_bb_rule;
  _set_BFP = lp->set_BFP;
  _set_binary = lp->set_binary;
  _set_bounds = lp->set_bounds;
  _set_bounds_tighter = lp->set_bounds_tighter;
  _set_break_at_first = lp->set_break_at_first;
  _set_break_at_value = lp->set_break_at_value;
  _set_column = lp->set_column;
  _set_columnex = lp->set_columnex;
  _set_col_name = lp->set_col_name;
  _set_constr_type = lp->set_constr_type;
  _set_debug = lp->set_debug;
  _set_epsb = lp->set_epsb;
  _set_epsd = lp->set_epsd;
  _set_epsel = lp->set_epsel;
  _set_epsint = lp->set_epsint;
  _set_epslevel = lp->set_epslevel;
  _set_epsperturb = lp->set_epsperturb;
  _set_epspivot = lp->set_epspivot;
  _set_unbounded = lp->set_unbounded;
  _set_improve = lp->set_improve;
  _set_infinite = lp->set_infinite;
  _set_int = lp->set_int;
  _set_lag_trace = lp->set_lag_trace;
  _set_lowbo = lp->set_lowbo;
  _set_lp_name = lp->set_lp_name;
  _set_mat = lp->set_mat;
  _set_maxim = lp->set_maxim;
  _set_maxpivot = lp->set_maxpivot;
  _set_minim = lp->set_minim;
  _set_mip_gap = lp->set_mip_gap;
  _set_multiprice = lp->set_multiprice;
  _set_negrange = lp->set_negrange;
  _set_obj_bound = lp->set_obj_bound;
  _set_obj_fn = lp->set_obj_fn;
  _set_obj_fnex = lp->set_obj_fnex;
  _set_obj = lp->set_obj;
  _set_outputfile = lp->set_outputfile;
  _set_outputstream = lp->set_outputstream;
  _set_partialprice = lp->set_partialprice;
  _set_pivoting = lp->set_pivoting;
  _set_preferdual = lp->set_preferdual;
  _set_presolve = lp->set_presolve;
  _set_print_sol = lp->set_print_sol;
  _set_pseudocosts = lp->set_pseudocosts;
  _set_rh = lp->set_rh;
  _set_rh_range = lp->set_rh_range;
  _set_rh_vec = lp->set_rh_vec;
  _set_row = lp->set_row;
  _set_rowex = lp->set_rowex;
  _set_row_name = lp->set_row_name;
  _set_scalelimit = lp->set_scalelimit;
  _set_scaling = lp->set_scaling;
  _set_semicont = lp->set_semicont;
  _set_sense = lp->set_sense;
  _set_simplextype = lp->set_simplextype;
  _set_solutionlimit = lp->set_solutionlimit;
  _set_timeout = lp->set_timeout;
  _set_trace = lp->set_trace;
  _set_upbo = lp->set_upbo;
  _set_var_branch = lp->set_var_branch;
  _set_var_weights = lp->set_var_weights;
  _set_verbose = lp->set_verbose;
  _set_XLI = lp->set_XLI;
  _solve = lp->solve;
  _str_add_column = lp->str_add_column;
  _str_add_constraint = lp->str_add_constraint;
  _str_add_lag_con = lp->str_add_lag_con;
  _str_set_obj_fn = lp->str_set_obj_fn;
  _str_set_rh_vec = lp->str_set_rh_vec;
  _time_elapsed = lp->time_elapsed;
  _unscale = lp->unscale;
  _write_lp = lp->write_lp;
  _write_LP = lp->write_LP;
  _write_mps = lp->write_mps;
  _write_MPS = lp->write_MPS;
  _write_freemps = lp->write_freemps;
  _write_freeMPS = lp->write_freeMPS;
  _write_XLI = lp->write_XLI;
  _write_basis = lp->write_basis;
  _write_params = lp->write_params;

  return(TRUE);
}

#elif defined LPSOLVEAPIFROMLIB

#ifdef WIN32
#  include <windows.h>
#else
#  include <dlfcn.h>
#endif

#if defined WIN32
# define hlpsolve HINSTANCE
#else
# define hlpsolve void *
#endif

static hlpsolve open_lpsolve_lib(char *filename)
{
  hlpsolve lpsolve;

# if defined WIN32
  /* Get a handle to the Windows DLL module. */
  lpsolve = LoadLibrary("lpsolve55.dll");
# else
  lpsolve = dlopen("liblpsolve55.so", RTLD_LAZY);;
# endif
  return(lpsolve);
}

static int close_lpsolve_lib(hlpsolve lpsolve)
{
#ifdef WIN32
  FreeLibrary(lpsolve);
#else
  dlclose(lpsolve);
#endif

  return(TRUE);
}

static int init_lpsolve(hlpsolve lpsolve)
{
# if defined WIN32
#   define AddressOf GetProcAddress
# else
#   define AddressOf dlsym
# endif

  /* assign API functions to lp structure */
  _add_column = (add_column_func *) AddressOf(lpsolve, "add_column");
  _add_columnex = (add_columnex_func *) AddressOf(lpsolve, "add_columnex");
  _add_constraint = (add_constraint_func *) AddressOf(lpsolve, "add_constraint");
  _add_constraintex = (add_constraintex_func *) AddressOf(lpsolve, "add_constraintex");
  _add_lag_con = (add_lag_con_func *) AddressOf(lpsolve, "add_lag_con");
  _add_SOS = (add_SOS_func *) AddressOf(lpsolve, "add_SOS");
  _column_in_lp = (column_in_lp_func *) AddressOf(lpsolve, "column_in_lp");
  _copy_lp = (copy_lp_func *) AddressOf(lpsolve, "copy_lp");
  _default_basis = (default_basis_func *) AddressOf(lpsolve, "default_basis");
  _del_column = (del_column_func *) AddressOf(lpsolve, "del_column");
  _del_constraint = (del_constraint_func *) AddressOf(lpsolve, "del_constraint");
  _delete_lp = (delete_lp_func *) AddressOf(lpsolve, "delete_lp");
  _dualize_lp = (dualize_lp_func *) AddressOf(lpsolve, "dualize_lp");
  _free_lp = (free_lp_func *) AddressOf(lpsolve, "free_lp");
  _get_anti_degen = (get_anti_degen_func *) AddressOf(lpsolve, "get_anti_degen");
  _get_basis = (get_basis_func *) AddressOf(lpsolve, "get_basis");
  _get_basiscrash = (get_basiscrash_func *) AddressOf(lpsolve, "get_basiscrash");
  _get_bb_depthlimit = (get_bb_depthlimit_func *) AddressOf(lpsolve, "get_bb_depthlimit");
  _get_bb_floorfirst = (get_bb_floorfirst_func *) AddressOf(lpsolve, "get_bb_floorfirst");
  _get_bb_rule = (get_bb_rule_func *) AddressOf(lpsolve, "get_bb_rule");
  _get_bounds_tighter = (get_bounds_tighter_func *) AddressOf(lpsolve, "get_bounds_tighter");
  _get_break_at_value = (get_break_at_value_func *) AddressOf(lpsolve, "get_break_at_value");
  _get_col_name = (get_col_name_func *) AddressOf(lpsolve, "get_col_name");
  _get_column = (get_column_func *) AddressOf(lpsolve, "get_column");
  _get_columnex = (get_columnex_func *) AddressOf(lpsolve, "get_columnex");
  _get_constr_type = (get_constr_type_func *) AddressOf(lpsolve, "get_constr_type");
  _get_constr_value = (get_constr_value_func *) AddressOf(lpsolve, "get_constr_value");
  _get_constraints = (get_constraints_func *) AddressOf(lpsolve, "get_constraints");
  _get_dual_solution = (get_dual_solution_func *) AddressOf(lpsolve, "get_dual_solution");
  _get_epsb = (get_epsb_func *) AddressOf(lpsolve, "get_epsb");
  _get_epsd = (get_epsd_func *) AddressOf(lpsolve, "get_epsd");
  _get_epsel = (get_epsel_func *) AddressOf(lpsolve, "get_epsel");
  _get_epsint = (get_epsint_func *) AddressOf(lpsolve, "get_epsint");
  _get_epsperturb = (get_epsperturb_func *) AddressOf(lpsolve, "get_epsperturb");
  _get_epspivot = (get_epspivot_func *) AddressOf(lpsolve, "get_epspivot");
  _get_improve = (get_improve_func *) AddressOf(lpsolve, "get_improve");
  _get_infinite = (get_infinite_func *) AddressOf(lpsolve, "get_infinite");
  _get_lambda = (get_lambda_func *) AddressOf(lpsolve, "get_lambda");
  _get_lowbo = (get_lowbo_func *) AddressOf(lpsolve, "get_lowbo");
  _get_lp_index = (get_lp_index_func *) AddressOf(lpsolve, "get_lp_index");
  _get_lp_name = (get_lp_name_func *) AddressOf(lpsolve, "get_lp_name");
  _get_Lrows = (get_Lrows_func *) AddressOf(lpsolve, "get_Lrows");
  _get_mat = (get_mat_func *) AddressOf(lpsolve, "get_mat");
  _get_mat_byindex = (get_mat_byindex_func *) AddressOf(lpsolve, "get_mat_byindex");
  _get_max_level = (get_max_level_func *) AddressOf(lpsolve, "get_max_level");
  _get_maxpivot = (get_maxpivot_func *) AddressOf(lpsolve, "get_maxpivot");
  _get_mip_gap = (get_mip_gap_func *) AddressOf(lpsolve, "get_mip_gap");
  _get_multiprice = (get_multiprice_func *) AddressOf(lpsolve, "get_multiprice");
  _get_nameindex = (get_nameindex_func *) AddressOf(lpsolve, "get_nameindex");
  _get_Ncolumns = (get_Ncolumns_func *) AddressOf(lpsolve, "get_Ncolumns");
  _get_negrange = (get_negrange_func *) AddressOf(lpsolve, "get_negrange");
  _get_nonzeros = (get_nz_func *) AddressOf(lpsolve, "get_nonzeros");
  _get_Norig_columns = (get_Norig_columns_func *) AddressOf(lpsolve, "get_Norig_columns");
  _get_Norig_rows = (get_Norig_rows_func *) AddressOf(lpsolve, "get_Norig_rows");
  _get_Nrows = (get_Nrows_func *) AddressOf(lpsolve, "get_Nrows");
  _get_obj_bound = (get_obj_bound_func *) AddressOf(lpsolve, "get_obj_bound");
  _get_objective = (get_objective_func *) AddressOf(lpsolve, "get_objective");
  _get_orig_index = (get_orig_index_func *) AddressOf(lpsolve, "get_orig_index");
  _get_origcol_name = (get_origcol_name_func *) AddressOf(lpsolve, "get_origcol_name");
  _get_origrow_name = (get_origrow_name_func *) AddressOf(lpsolve, "get_origrow_name");
  _get_partialprice = (get_partialprice_func *) AddressOf(lpsolve, "get_partialprice");
  _get_pivoting = (get_pivoting_func *) AddressOf(lpsolve, "get_pivoting");
  _get_presolve = (get_presolve_func *) AddressOf(lpsolve, "get_presolve");
  _get_presolveloops = (get_presolveloops_func *) AddressOf(lpsolve, "get_presolveloops");
  _get_primal_solution = (get_primal_solution_func *) AddressOf(lpsolve, "get_primal_solution");
  _get_print_sol = (get_print_sol_func *) AddressOf(lpsolve, "get_print_sol");
  _get_pseudocosts = (get_pseudocosts_func *) AddressOf(lpsolve, "get_pseudocosts");
  _get_ptr_constraints = (get_ptr_constraints_func *) AddressOf(lpsolve, "get_ptr_constraints");
  _get_ptr_dual_solution = (get_ptr_dual_solution_func *) AddressOf(lpsolve, "get_ptr_dual_solution");
  _get_ptr_lambda = (get_ptr_lambda_func *) AddressOf(lpsolve, "get_ptr_lambda");
  _get_ptr_primal_solution = (get_ptr_primal_solution_func *) AddressOf(lpsolve, "get_ptr_primal_solution");
  _get_ptr_sensitivity_obj = (get_ptr_sensitivity_obj_func *) AddressOf(lpsolve, "get_ptr_sensitivity_obj");
  _get_ptr_sensitivity_objex = (get_ptr_sensitivity_objex_func *) AddressOf(lpsolve, "get_ptr_sensitivity_objex");
  _get_ptr_sensitivity_rhs = (get_ptr_sensitivity_rhs_func *) AddressOf(lpsolve, "get_ptr_sensitivity_rhs");
  _get_ptr_variables = (get_ptr_variables_func *) AddressOf(lpsolve, "get_ptr_variables");
  _get_rh = (get_rh_func *) AddressOf(lpsolve, "get_rh");
  _get_rh_range = (get_rh_range_func *) AddressOf(lpsolve, "get_rh_range");
  _get_row = (get_row_func *) AddressOf(lpsolve, "get_row");
  _get_rowex = (get_rowex_func *) AddressOf(lpsolve, "get_rowex");
  _get_row_name = (get_row_name_func *) AddressOf(lpsolve, "get_row_name");
  _get_scalelimit = (get_scalelimit_func *) AddressOf(lpsolve, "get_scalelimit");
  _get_scaling = (get_scaling_func *) AddressOf(lpsolve, "get_scaling");
  _get_sensitivity_obj = (get_sensitivity_obj_func *) AddressOf(lpsolve, "get_sensitivity_obj");
  _get_sensitivity_objex = (get_sensitivity_objex_func *) AddressOf(lpsolve, "get_sensitivity_objex");
  _get_sensitivity_rhs = (get_sensitivity_rhs_func *) AddressOf(lpsolve, "get_sensitivity_rhs");
  _get_simplextype = (get_simplextype_func *) AddressOf(lpsolve, "get_simplextype");
  _get_solutioncount = (get_solutioncount_func *) AddressOf(lpsolve, "get_solutioncount");
  _get_solutionlimit = (get_solutionlimit_func *) AddressOf(lpsolve, "get_solutionlimit");
  _get_status = (get_status_func *) AddressOf(lpsolve, "get_status");
  _get_statustext = (get_statustext_func *) AddressOf(lpsolve, "get_statustext");
  _get_timeout = (get_timeout_func *) AddressOf(lpsolve, "get_timeout");
  _get_total_iter = (get_total_iter_func *) AddressOf(lpsolve, "get_total_iter");
  _get_total_nodes = (get_total_nodes_func *) AddressOf(lpsolve, "get_total_nodes");
  _get_upbo = (get_upbo_func *) AddressOf(lpsolve, "get_upbo");
  _get_var_branch = (get_var_branch_func *) AddressOf(lpsolve, "get_var_branch");
  _get_var_dualresult = (get_var_dualresult_func *) AddressOf(lpsolve, "get_var_dualresult");
  _get_var_primalresult = (get_var_primalresult_func *) AddressOf(lpsolve, "get_var_primalresult");
  _get_var_priority = (get_var_priority_func *) AddressOf(lpsolve, "get_var_priority");
  _get_variables = (get_variables_func *) AddressOf(lpsolve, "get_variables");
  _get_verbose = (get_verbose_func *) AddressOf(lpsolve, "get_verbose");
  _get_working_objective = (get_working_objective_func *) AddressOf(lpsolve, "get_working_objective");
  _guess_basis = (guess_basis_func *) AddressOf(lpsolve, "guess_basis");
  _has_BFP = (has_BFP_func *) AddressOf(lpsolve, "has_BFP");
  _has_XLI = (has_XLI_func *) AddressOf(lpsolve, "has_XLI");
  _is_add_rowmode = (is_add_rowmode_func *) AddressOf(lpsolve, "is_add_rowmode");
  _is_anti_degen = (is_anti_degen_func *) AddressOf(lpsolve, "is_anti_degen");
  _is_binary = (is_binary_func *) AddressOf(lpsolve, "is_binary");
  _is_break_at_first = (is_break_at_first_func *) AddressOf(lpsolve, "is_break_at_first");
  _is_constr_type = (is_constr_type_func *) AddressOf(lpsolve, "is_constr_type");
  _is_debug = (is_debug_func *) AddressOf(lpsolve, "is_debug");
  _is_feasible = (is_feasible_func *) AddressOf(lpsolve, "is_feasible");
  _is_unbounded = (is_unbounded_func *) AddressOf(lpsolve, "is_unbounded");
  _is_infinite = (is_infinite_func *) AddressOf(lpsolve, "is_infinite");
  _is_int = (is_int_func *) AddressOf(lpsolve, "is_int");
  _is_integerscaling = (is_integerscaling_func *) AddressOf(lpsolve, "is_integerscaling");
  _is_lag_trace = (is_lag_trace_func *) AddressOf(lpsolve, "is_lag_trace");
  _is_maxim = (is_maxim_func *) AddressOf(lpsolve, "is_maxim");
  _is_nativeBFP = (is_nativeBFP_func *) AddressOf(lpsolve, "is_nativeBFP");
  _is_nativeXLI = (is_nativeXLI_func *) AddressOf(lpsolve, "is_nativeXLI");
  _is_negative = (is_negative_func *) AddressOf(lpsolve, "is_negative");
  _is_piv_mode = (is_piv_mode_func *) AddressOf(lpsolve, "is_piv_mode");
  _is_piv_rule = (is_piv_rule_func *) AddressOf(lpsolve, "is_piv_rule");
  _is_presolve = (is_presolve_func *) AddressOf(lpsolve, "is_presolve");
  _is_scalemode = (is_scalemode_func *) AddressOf(lpsolve, "is_scalemode");
  _is_scaletype = (is_scaletype_func *) AddressOf(lpsolve, "is_scaletype");
  _is_semicont = (is_semicont_func *) AddressOf(lpsolve, "is_semicont");
  _is_SOS_var = (is_SOS_var_func *) AddressOf(lpsolve, "is_SOS_var");
  _is_trace = (is_trace_func *) AddressOf(lpsolve, "is_trace");
  _is_use_names = (is_use_names_func *) AddressOf(lpsolve, "is_use_names");
  _lp_solve_version = (lp_solve_version_func *) AddressOf(lpsolve, "lp_solve_version");
  _make_lp = (make_lp_func *) AddressOf(lpsolve, "make_lp");
  _print_constraints = (print_constraints_func *) AddressOf(lpsolve, "print_constraints");
  _print_debugdump = (print_debugdump_func *) AddressOf(lpsolve, "print_debugdump");
  _print_duals = (print_duals_func *) AddressOf(lpsolve, "print_duals");
  _print_lp = (print_lp_func *) AddressOf(lpsolve, "print_lp");
  _print_objective = (print_objective_func *) AddressOf(lpsolve, "print_objective");
  _print_scales = (print_scales_func *) AddressOf(lpsolve, "print_scales");
  _print_solution = (print_solution_func *) AddressOf(lpsolve, "print_solution");
  _print_str = (print_str_func *) AddressOf(lpsolve, "print_str");
  _print_tableau = (print_tableau_func *) AddressOf(lpsolve, "print_tableau");
  _put_abortfunc = (put_abortfunc_func *) AddressOf(lpsolve, "put_abortfunc");
  _put_bb_nodefunc = (put_bb_nodefunc_func *) AddressOf(lpsolve, "put_bb_nodefunc");
  _put_bb_branchfunc = (put_bb_branchfunc_func *) AddressOf(lpsolve, "put_bb_branchfunc");
  _put_logfunc = (put_logfunc_func *) AddressOf(lpsolve, "put_logfunc");
  _put_msgfunc = (put_msgfunc_func *) AddressOf(lpsolve, "put_msgfunc");
  _read_LP = (read_LP_func *) AddressOf(lpsolve, "read_LP");
  _read_MPS = (read_MPS_func *) AddressOf(lpsolve, "read_MPS");
  _read_XLI = (read_XLI_func *) AddressOf(lpsolve, "read_XLI");
  _read_params = (read_params_func *) AddressOf(lpsolve, "read_params");
  _read_basis = (read_basis_func *) AddressOf(lpsolve, "read_basis");
  _reset_basis = (reset_basis_func *) AddressOf(lpsolve, "reset_basis");
  _reset_params = (reset_params_func *) AddressOf(lpsolve, "reset_params");
  _report = (reportfunc *) AddressOf(lpsolve, "report");
  _resize_lp = (resize_lp_func *) AddressOf(lpsolve, "resize_lp");
  _set_add_rowmode = (set_add_rowmode_func *) AddressOf(lpsolve, "set_add_rowmode");
  _set_anti_degen = (set_anti_degen_func *) AddressOf(lpsolve, "set_anti_degen");
  _set_basisvar = (set_basisvar_func *) AddressOf(lpsolve, "set_basisvar");
  _set_basis = (set_basis_func *) AddressOf(lpsolve, "set_basis");
  _set_basiscrash = (set_basiscrash_func *) AddressOf(lpsolve, "set_basiscrash");
  _set_bb_depthlimit = (set_bb_depthlimit_func *) AddressOf(lpsolve, "set_bb_depthlimit");
  _set_bb_floorfirst = (set_bb_floorfirst_func *) AddressOf(lpsolve, "set_bb_floorfirst");
  _set_bb_rule = (set_bb_rule_func *) AddressOf(lpsolve, "set_bb_rule");
  _set_BFP = (set_BFP_func *) AddressOf(lpsolve, "set_BFP");
  _set_binary = (set_binary_func *) AddressOf(lpsolve, "set_binary");
  _set_bounds = (set_bounds_func *) AddressOf(lpsolve, "set_bounds");
  _set_bounds_tighter = (set_bounds_tighter_func *) AddressOf(lpsolve, "set_bounds_tighter");
  _set_break_at_first = (set_break_at_first_func *) AddressOf(lpsolve, "set_break_at_first");
  _set_break_at_value = (set_break_at_value_func *) AddressOf(lpsolve, "set_break_at_value");
  _set_column = (set_column_func *) AddressOf(lpsolve, "set_column");
  _set_columnex = (set_columnex_func *) AddressOf(lpsolve, "set_columnex");
  _set_col_name = (set_col_name_func *) AddressOf(lpsolve, "set_col_name");
  _set_constr_type = (set_constr_type_func *) AddressOf(lpsolve, "set_constr_type");
  _set_debug = (set_debug_func *) AddressOf(lpsolve, "set_debug");
  _set_epsb = (set_epsb_func *) AddressOf(lpsolve, "set_epsb");
  _set_epsd = (set_epsd_func *) AddressOf(lpsolve, "set_epsd");
  _set_epsel = (set_epsel_func *) AddressOf(lpsolve, "set_epsel");
  _set_epsint = (set_epsint_func *) AddressOf(lpsolve, "set_epsint");
  _set_epslevel = (set_epslevel_func *) AddressOf(lpsolve, "set_epslevel");
  _set_epsperturb = (set_epsperturb_func *) AddressOf(lpsolve, "set_epsperturb");
  _set_epspivot = (set_epspivot_func *) AddressOf(lpsolve, "set_epspivot");
  _set_unbounded = (set_unbounded_func *) AddressOf(lpsolve, "set_unbounded");
  _set_improve = (set_improve_func *) AddressOf(lpsolve, "set_improve");
  _set_infinite = (set_infinite_func *) AddressOf(lpsolve, "set_infinite");
  _set_int = (set_int_func *) AddressOf(lpsolve, "set_int");
  _set_lag_trace = (set_lag_trace_func *) AddressOf(lpsolve, "set_lag_trace");
  _set_lowbo = (set_lowbo_func *) AddressOf(lpsolve, "set_lowbo");
  _set_lp_name = (set_lp_name_func *) AddressOf(lpsolve, "set_lp_name");
  _set_mat = (set_mat_func *) AddressOf(lpsolve, "set_mat");
  _set_maxim = (set_maxim_func *) AddressOf(lpsolve, "set_maxim");
  _set_maxpivot = (set_maxpivot_func *) AddressOf(lpsolve, "set_maxpivot");
  _set_minim = (set_minim_func *) AddressOf(lpsolve, "set_minim");
  _set_mip_gap = (set_mip_gap_func *) AddressOf(lpsolve, "set_mip_gap");
  _set_multiprice = (set_multiprice_func *) AddressOf(lpsolve, "set_multiprice");
  _set_negrange = (set_negrange_func *) AddressOf(lpsolve, "set_negrange");
  _set_obj_bound = (set_obj_bound_func *) AddressOf(lpsolve, "set_obj_bound");
  _set_obj_fn = (set_obj_fn_func *) AddressOf(lpsolve, "set_obj_fn");
  _set_obj_fnex = (set_obj_fnex_func *) AddressOf(lpsolve, "set_obj_fnex");
  _set_obj = (set_obj_func *) AddressOf(lpsolve, "set_obj");
  _set_outputfile = (set_outputfile_func *) AddressOf(lpsolve, "set_outputfile");
  _set_outputstream = (set_outputstream_func *) AddressOf(lpsolve, "set_outputstream");
  _set_partialprice = (set_partialprice_func *) AddressOf(lpsolve, "set_partialprice");
  _set_pivoting = (set_pivoting_func *) AddressOf(lpsolve, "set_pivoting");
  _set_preferdual = (set_preferdual_func *) AddressOf(lpsolve, "set_preferdual");
  _set_presolve = (set_presolve_func *) AddressOf(lpsolve, "set_presolve");
  _set_print_sol = (set_print_sol_func *) AddressOf(lpsolve, "set_print_sol");
  _set_pseudocosts = (set_pseudocosts_func *) AddressOf(lpsolve, "set_pseudocosts");
  _set_rh = (set_rh_func *) AddressOf(lpsolve, "set_rh");
  _set_rh_range = (set_rh_range_func *) AddressOf(lpsolve, "set_rh_range");
  _set_rh_vec = (set_rh_vec_func *) AddressOf(lpsolve, "set_rh_vec");
  _set_row = (set_row_func *) AddressOf(lpsolve, "set_row");
  _set_rowex = (set_rowex_func *) AddressOf(lpsolve, "set_rowex");
  _set_row_name = (set_row_name_func *) AddressOf(lpsolve, "set_row_name");
  _set_scalelimit = (set_scalelimit_func *) AddressOf(lpsolve, "set_scalelimit");
  _set_scaling = (set_scaling_func *) AddressOf(lpsolve, "set_scaling");
  _set_semicont = (set_semicont_func *) AddressOf(lpsolve, "set_semicont");
  _set_sense = (set_sense_func *) AddressOf(lpsolve, "set_sense");
  _set_simplextype = (set_simplextype_func *) AddressOf(lpsolve, "set_simplextype");
  _set_solutionlimit = (set_solutionlimit_func *) AddressOf(lpsolve, "set_solutionlimit");
  _set_timeout = (set_timeout_func *) AddressOf(lpsolve, "set_timeout");
  _set_trace = (set_trace_func *) AddressOf(lpsolve, "set_trace");
  _set_upbo = (set_upbo_func *) AddressOf(lpsolve, "set_upbo");
  _set_var_branch = (set_var_branch_func *) AddressOf(lpsolve, "set_var_branch");
  _set_var_weights = (set_var_weights_func *) AddressOf(lpsolve, "set_var_weights");
  _set_verbose = (set_verbose_func *) AddressOf(lpsolve, "set_verbose");
  _set_XLI = (set_XLI_func *) AddressOf(lpsolve, "set_XLI");
  _solve = (solve_func *) AddressOf(lpsolve, "solve");
  _str_add_column = (str_add_column_func *) AddressOf(lpsolve, "str_add_column");
  _str_add_constraint = (str_add_constraint_func *) AddressOf(lpsolve, "str_add_constraint");
  _str_add_lag_con = (str_add_lag_con_func *) AddressOf(lpsolve, "str_add_lag_con");
  _str_set_obj_fn = (str_set_obj_fn_func *) AddressOf(lpsolve, "str_set_obj_fn");
  _str_set_rh_vec = (str_set_rh_vec_func *) AddressOf(lpsolve, "str_set_rh_vec");
  _time_elapsed = (time_elapsed_func *) AddressOf(lpsolve, "time_elapsed");
  _unscale = (unscale_func *) AddressOf(lpsolve, "unscale");
  _write_lp = (write_lp_func *) AddressOf(lpsolve, "write_lp");
  _write_LP = (write_LP_func *) AddressOf(lpsolve, "write_LP");
  _write_mps = (write_mps_func *) AddressOf(lpsolve, "write_mps");
  _write_MPS = (write_MPS_func *) AddressOf(lpsolve, "write_MPS");
  _write_freemps = (write_freemps_func *) AddressOf(lpsolve, "write_freemps");
  _write_freeMPS = (write_freeMPS_func *) AddressOf(lpsolve, "write_freeMPS");
  _write_XLI = (write_XLI_func *) AddressOf(lpsolve, "write_XLI");
  _write_basis = (write_basis_func *) AddressOf(lpsolve, "write_basis");
  _write_params = (write_params_func *) AddressOf(lpsolve, "write_params");

  return(TRUE);
# undef AddressOf
}

#else
#  error Either LPSOLVEAPIFROMLPREC or LPSOLVEAPIFROMLIB must be defined
#endif

#define add_column _add_column
#define add_columnex _add_columnex
#define add_constraint _add_constraint
#define add_constraintex _add_constraintex
#define add_lag_con _add_lag_con
#define add_SOS _add_SOS
#define column_in_lp _column_in_lp
#define copy_lp _copy_lp
#define default_basis _default_basis
#define del_column _del_column
#define del_constraint _del_constraint
#define delete_lp _delete_lp
#define dualize_lp _dualize_lp
#define free_lp _free_lp
#define get_anti_degen _get_anti_degen
#define get_basis _get_basis
#define get_basiscrash _get_basiscrash
#define get_bb_depthlimit _get_bb_depthlimit
#define get_bb_floorfirst _get_bb_floorfirst
#define get_bb_rule _get_bb_rule
#define get_bounds_tighter _get_bounds_tighter
#define get_break_at_value _get_break_at_value
#define get_col_name _get_col_name
#define get_column _get_column
#define get_columnex _get_columnex
#define get_constr_type _get_constr_type
#define get_constr_value _get_constr_value
#define get_constraints _get_constraints
#define get_dual_solution _get_dual_solution
#define get_epsb _get_epsb
#define get_epsd _get_epsd
#define get_epsel _get_epsel
#define get_epsint _get_epsint
#define get_epsperturb _get_epsperturb
#define get_epspivot _get_epspivot
#define get_improve _get_improve
#define get_infinite _get_infinite
#define get_lambda _get_lambda
#define get_lowbo _get_lowbo
#define get_lp_index _get_lp_index
#define get_lp_name _get_lp_name
#define get_Lrows _get_Lrows
#define get_mat _get_mat
#define get_mat_byindex _get_mat_byindex
#define get_max_level _get_max_level
#define get_maxpivot _get_maxpivot
#define get_mip_gap _get_mip_gap
#define get_multiprice _get_multiprice
#define get_nameindex _get_nameindex
#define get_Ncolumns _get_Ncolumns
#define get_negrange _get_negrange
#define get_nonzeros _get_nonzeros
#define get_Norig_columns _get_Norig_columns
#define get_Norig_rows _get_Norig_rows
#define get_Nrows _get_Nrows
#define get_obj_bound _get_obj_bound
#define get_objective _get_objective
#define get_orig_index _get_orig_index
#define get_origcol_name _get_origcol_name
#define get_origrow_name _get_origrow_name
#define get_partialprice _get_partialprice
#define get_pivoting _get_pivoting
#define get_presolve _get_presolve
#define get_presolveloops _get_presolveloops
#define get_primal_solution _get_primal_solution
#define get_print_sol _get_print_sol
#define get_pseudocosts _get_pseudocosts
#define get_ptr_constraints _get_ptr_constraints
#define get_ptr_dual_solution _get_ptr_dual_solution
#define get_ptr_lambda _get_ptr_lambda
#define get_ptr_primal_solution _get_ptr_primal_solution
#define get_ptr_sensitivity_obj _get_ptr_sensitivity_obj
#define get_ptr_sensitivity_objex _get_ptr_sensitivity_objex
#define get_ptr_sensitivity_rhs _get_ptr_sensitivity_rhs
#define get_ptr_variables _get_ptr_variables
#define get_rh _get_rh
#define get_rh_range _get_rh_range
#define get_row _get_row
#define get_rowex _get_rowex
#define get_row_name _get_row_name
#define get_scalelimit _get_scalelimit
#define get_scaling _get_scaling
#define get_sensitivity_obj _get_sensitivity_obj
#define get_sensitivity_objex _get_sensitivity_objex
#define get_sensitivity_rhs _get_sensitivity_rhs
#define get_simplextype _get_simplextype
#define get_solutioncount _get_solutioncount
#define get_solutionlimit _get_solutionlimit
#define get_status _get_status
#define get_statustext _get_statustext
#define get_timeout _get_timeout
#define get_total_iter _get_total_iter
#define get_total_nodes _get_total_nodes
#define get_upbo _get_upbo
#define get_var_branch _get_var_branch
#define get_var_dualresult _get_var_dualresult
#define get_var_primalresult _get_var_primalresult
#define get_var_priority _get_var_priority
#define get_variables _get_variables
#define get_verbose _get_verbose
#define get_working_objective _get_working_objective
#define guess_basis _guess_basis
#define has_BFP _has_BFP
#define has_XLI _has_XLI
#define is_add_rowmode _is_add_rowmode
#define is_anti_degen _is_anti_degen
#define is_binary _is_binary
#define is_break_at_first _is_break_at_first
#define is_constr_type _is_constr_type
#define is_debug _is_debug
#define is_feasible _is_feasible
#define is_unbounded _is_unbounded
#define is_infinite _is_infinite
#define is_int _is_int
#define is_integerscaling _is_integerscaling
#define is_lag_trace _is_lag_trace
#define is_maxim _is_maxim
#define is_nativeBFP _is_nativeBFP
#define is_nativeXLI _is_nativeXLI
#define is_negative _is_negative
#define is_piv_mode _is_piv_mode
#define is_piv_rule _is_piv_rule
#define is_presolve _is_presolve
#define is_scalemode _is_scalemode
#define is_scaletype _is_scaletype
#define is_semicont _is_semicont
#define is_SOS_var _is_SOS_var
#define is_trace _is_trace
#define is_use_names _is_use_names
#define lp_solve_version _lp_solve_version
#define make_lp _make_lp
#define print_constraints _print_constraints
#define print_debugdump _print_debugdump
#define print_duals _print_duals
#define print_lp _print_lp
#define print_objective _print_objective
#define print_scales _print_scales
#define print_solution _print_solution
#define print_str _print_str
#define print_tableau _print_tableau
#define put_abortfunc _put_abortfunc
#define put_bb_nodefunc _put_bb_nodefunc
#define put_bb_branchfunc _put_bb_branchfunc
#define put_logfunc _put_logfunc
#define put_msgfunc _put_msgfunc
#define read_LP _read_LP
#define read_MPS _read_MPS
#define read_XLI _read_XLI
#define read_params _read_params
#define read_basis _read_basis
#define reset_basis _reset_basis
#define reset_params _reset_params
#define report _report
#define resize_lp _resize_lp
#define set_add_rowmode _set_add_rowmode
#define set_anti_degen _set_anti_degen
#define set_basisvar _set_basisvar
#define set_basis _set_basis
#define set_basiscrash _set_basiscrash
#define set_bb_depthlimit _set_bb_depthlimit
#define set_bb_floorfirst _set_bb_floorfirst
#define set_bb_rule _set_bb_rule
#define set_BFP _set_BFP
#define set_binary _set_binary
#define set_bounds _set_bounds
#define set_bounds_tighter _set_bounds_tighter
#define set_break_at_first _set_break_at_first
#define set_break_at_value _set_break_at_value
#define set_column _set_column
#define set_columnex _set_columnex
#define set_col_name _set_col_name
#define set_constr_type _set_constr_type
#define set_debug _set_debug
#define set_epsb _set_epsb
#define set_epsd _set_epsd
#define set_epsel _set_epsel
#define set_epsint _set_epsint
#define set_epslevel _set_epslevel
#define set_epsperturb _set_epsperturb
#define set_epspivot _set_epspivot
#define set_unbounded _set_unbounded
#define set_improve _set_improve
#define set_infinite _set_infinite
#define set_int _set_int
#define set_lag_trace _set_lag_trace
#define set_lowbo _set_lowbo
#define set_lp_name _set_lp_name
#define set_mat _set_mat
#define set_maxim _set_maxim
#define set_maxpivot _set_maxpivot
#define set_minim _set_minim
#define set_mip_gap _set_mip_gap
#define set_multiprice _set_multiprice
#define set_negrange _set_negrange
#define set_obj_bound _set_obj_bound
#define set_obj_fn _set_obj_fn
#define set_obj_fnex _set_obj_fnex
#define set_obj _set_obj
#define set_outputfile _set_outputfile
#define set_outputstream _set_outputstream
#define set_partialprice _set_partialprice
#define set_pivoting _set_pivoting
#define set_preferdual _set_preferdual
#define set_presolve _set_presolve
#define set_print_sol _set_print_sol
#define set_pseudocosts _set_pseudocosts
#define set_rh _set_rh
#define set_rh_range _set_rh_range
#define set_rh_vec _set_rh_vec
#define set_row _set_row
#define set_rowex _set_rowex
#define set_row_name _set_row_name
#define set_scalelimit _set_scalelimit
#define set_scaling _set_scaling
#define set_semicont _set_semicont
#define set_sense _set_sense
#define set_simplextype _set_simplextype
#define set_solutionlimit _set_solutionlimit
#define set_timeout _set_timeout
#define set_trace _set_trace
#define set_upbo _set_upbo
#define set_var_branch _set_var_branch
#define set_var_weights _set_var_weights
#define set_verbose _set_verbose
#define set_XLI _set_XLI
#define solve _solve
#define str_add_column _str_add_column
#define str_add_constraint _str_add_constraint
#define str_add_lag_con _str_add_lag_con
#define str_set_obj_fn _str_set_obj_fn
#define str_set_rh_vec _str_set_rh_vec
#define time_elapsed _time_elapsed
#define unscale _unscale
#define write_lp _write_lp
#define write_LP _write_LP
#define write_mps _write_mps
#define write_MPS _write_MPS
#define write_freemps _write_freemps
#define write_freeMPS _write_freeMPS
#define write_XLI _write_XLI
#define write_basis _write_basis
#define write_params _write_params
