CoinUtils
trunk
|
00001 /* $Id$ */ 00002 /* 00003 Copyright (C) 2002, 2003 International Business Machines Corporation 00004 and others. All Rights Reserved. 00005 00006 This code is licensed under the terms of the Eclipse Public License (EPL). 00007 */ 00008 #ifndef CoinCDefine_H 00009 #define CoinCDefine_H 00010 00015 #if defined (CLP_EXTERN_C) 00016 #define COIN_EXTERN_C 00017 #define COIN_NO_SBB 00018 #define COIN_NO_CBC 00019 #endif 00020 #if defined (SBB_EXTERN_C) 00021 #define COIN_EXTERN_C 00022 #define COIN_NO_CLP 00023 #endif 00024 #if defined (CBC_EXTERN_C) 00025 #define COIN_EXTERN_C 00026 #define COIN_NO_CLP 00027 #endif 00028 /* We need to allow for Microsoft */ 00029 #ifndef COINLIBAPI 00030 00031 #if defined(CBCCINTERFACEDLL_EXPORTS) || defined(CLPMSDLL) 00032 #if defined (COIN_EXTERN_C) 00033 # define COINLIBAPI __declspec(dllexport) 00034 #else 00035 # define COINLIBAPI __declspec(dllexport) 00036 #endif 00037 # define COINLINKAGE __stdcall 00038 # define COINLINKAGE_CB __cdecl 00039 #else 00040 #if defined (COIN_EXTERN_C) 00041 # define COINLIBAPI extern "C" 00042 #else 00043 # define COINLIBAPI 00044 #endif 00045 # define COINLINKAGE 00046 # define COINLINKAGE_CB 00047 #endif 00048 00049 #endif 00050 00051 #if defined (CLP_EXTERN_C) 00052 /* Real typedef for structure */ 00053 class CMessageHandler; 00054 typedef struct { 00055 ClpSimplex * model_; 00056 CMessageHandler * handler_; 00057 } Clp_Simplex; 00058 #else 00059 typedef void Clp_Simplex; 00060 #endif 00061 00062 #ifndef COIN_NO_CLP 00063 00065 typedef void (COINLINKAGE_CB *clp_callback) (Clp_Simplex * model,int msgno, int ndouble, 00066 const double * dvec, int nint, const int * ivec, 00067 int nchar, char ** cvec); 00068 #endif 00069 00070 #if defined (SBB_EXTERN_C) 00071 /* Real typedef for structure */ 00072 class Sbb_MessageHandler; 00073 typedef struct { 00074 OsiClpSolverInterface * solver_; 00075 SbbModel * model_; 00076 Sbb_MessageHandler * handler_; 00077 char * information_; 00078 } Sbb_Model; 00079 #else 00080 typedef void Sbb_Model; 00081 #endif 00082 #if defined (CBC_EXTERN_C) 00083 /* Real typedef for structure */ 00084 class Cbc_MessageHandler; 00085 typedef struct { 00086 OsiClpSolverInterface * solver_; 00087 CbcModel * model_; 00088 Cbc_MessageHandler * handler_; 00089 std::vector<std::string> cmdargs_; 00090 } Cbc_Model; 00091 #else 00092 typedef void Cbc_Model; 00093 #endif 00094 #ifndef COIN_NO_SBB 00095 00097 typedef void (COINLINKAGE_CB *sbb_callback) (Sbb_Model * model,int msgno, int ndouble, 00098 const double * dvec, int nint, const int * ivec, 00099 int nchar, char ** cvec); 00100 typedef void (COINLINKAGE_CB *cbc_callback) (Cbc_Model * model,int msgno, int ndouble, 00101 const double * dvec, int nint, const int * ivec, 00102 int nchar, char ** cvec); 00103 #endif 00104 #if COIN_BIG_INDEX==0 00105 typedef int CoinBigIndex; 00106 #elif COIN_BIG_INDEX==1 00107 typedef long CoinBigIndex; 00108 #else 00109 typedef long long CoinBigIndex; 00110 #endif 00111 /* just in case used somewhere */ 00112 #undef COIN_NO_CLP 00113 #undef COIN_NO_SBB 00114 #undef COIN_NO_CBC 00115 #endif