From 7c79568606ee9bfdc22666954feac8d16fe37beb Mon Sep 17 00:00:00 2001 From: Bjoern Brandenburg Date: Mon, 10 Dec 2012 14:19:31 -0400 Subject: Refactor linprog_solve() into a proper function --- native/include/linprog/cplex.h | 6 +++++- native/include/linprog/glpk.h | 6 +++++- native/include/linprog/solver.h | 23 +++++++++++++++-------- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/native/include/linprog/cplex.h b/native/include/linprog/cplex.h index 5e7addf..7c4f8b5 100644 --- a/native/include/linprog/cplex.h +++ b/native/include/linprog/cplex.h @@ -1,7 +1,9 @@ #ifndef LINPROG_CPLEX_H #define LINPROG_CPLEX_H -#include "linprog/solver.h" +#include "linprog/model.h" + +class Solution; // solve with CPLEX connected via the "Concert Technology" API Solution *cplex_solve(const LinearProgram& lp, unsigned int max_num_vars); @@ -9,4 +11,6 @@ Solution *cplex_solve(const LinearProgram& lp, unsigned int max_num_vars); // solve with CPLEX connected via the plain, old C API Solution *cpx_solve(const LinearProgram& lp, unsigned int max_num_vars); +#include "linprog/solver.h" + #endif diff --git a/native/include/linprog/glpk.h b/native/include/linprog/glpk.h index fa2aec9..1b5fa1a 100644 --- a/native/include/linprog/glpk.h +++ b/native/include/linprog/glpk.h @@ -1,8 +1,12 @@ #ifndef LINPROG_GLPK_H #define LINPROG_GLPK_H -#include "linprog/solver.h" +#include "linprog/model.h" + +class Solution; Solution *glpk_solve(const LinearProgram& lp, unsigned int max_num_vars); +#include "linprog/solver.h" + #endif diff --git a/native/include/linprog/solver.h b/native/include/linprog/solver.h index eb873b8..a15b9e0 100644 --- a/native/include/linprog/solver.h +++ b/native/include/linprog/solver.h @@ -25,20 +25,27 @@ public: }; #if defined(CONFIG_HAVE_CPLEX) - #include "linprog/cplex.h" -#define linprog_solve(lp, vars) cpx_solve((lp), (vars)) - #elif defined(CONFIG_HAVE_GLPK) - #include "linprog/glpk.h" -#define linprog_solve(lp, vars) glpk_solve((lp), (vars)) - #else - #warning No LP solver available. -#define linprog_solve(lp, vars) assert(0) +#endif + +static inline Solution *linprog_solve( + const LinearProgram& lp, + unsigned int max_num_vars) +{ + +#if defined(CONFIG_HAVE_CPLEX) + return cpx_solve(lp, max_num_vars); +#elif defined(CONFIG_HAVE_GLPK) + return glpk_solve(lp, max_num_vars); +#else + assert(0); + return NULL; #endif +} #endif -- cgit v1.2.2