DllExport int STDCALL C__hisReadyAPI(void* Cptr, gmoHandle_t Gptr, optHandle_t Optr) { gamshighs_t* gh; assert(Cptr != NULL); assert(Gptr != NULL); assert(Optr == NULL); char msg[256]; if(!gmoGetReady(msg, sizeof(msg))) return 1; if(!gevGetReady(msg, sizeof(msg))) return 1; gh = (gamshighs_t*)Cptr; gh->gmo = Gptr; gh->gev = (gevHandle_t)gmoEnvironment(gh->gmo); return 0; }
int GamsScip::readyAPI( struct gmoRec* gmo_, /**< GAMS modeling object */ struct optRec* opt_ /**< GAMS options object */ ) { char buffer[512]; gmo = gmo_; assert(gmo != NULL); if( getGmoReady() || getGevReady() ) return 1; gev = (gevRec*)gmoEnvironment(gmo); assert(gev != NULL); ipoptlicensed = false; #ifdef GAMS_BUILD if( pal == NULL && !palCreate(&pal, buffer, sizeof(buffer)) ) return 1; #define PALPTR pal #include "coinlibdCL5svn.h" palGetAuditLine(pal, buffer); gevLogStat(gev, ""); gevLogStat(gev, buffer); gevStatAudit(gev, buffer); initLicensing(gmo, pal); #ifdef COIN_HAS_OSIXPR /* Xpress license setup - don't say anything if failing, since Xpress is not used by default */ XPlicenseInit_t initType; gevxpresslice(gev, pal, gmoM(gmo), gmoN(gmo), gmoNZ(gmo), gmoNLNZ(gmo), gmoNDisc(gmo), 0, &initType, buffer, sizeof(buffer)); #endif #endif // check for academic license, or if we run in demo mode if( !checkScipLicense(gmo, pal) ) { gevLogStat(gev, "*** Use of SCIP is limited to academic users."); gevLogStat(gev, "*** Please contact [email protected] to arrange for a license."); gmoSolveStatSet(gmo, gmoSolveStat_License); gmoModelStatSet(gmo, gmoModelStat_LicenseError); return 1; } ipoptlicensed = HSLInit(gmo, pal); // print version info and copyright if( SCIPsubversion() > 0 ) sprintf(buffer, "SCIP version %d.%d.%d.%d (" SCIP_GITHASH ")\n", SCIPmajorVersion(), SCIPminorVersion(), SCIPtechVersion(), SCIPsubversion()); else sprintf(buffer, "SCIP version %d.%d.%d (" SCIP_GITHASH ")\n", SCIPmajorVersion(), SCIPminorVersion(), SCIPtechVersion()); gevLogStatPChar(gev, buffer); gevLogStatPChar(gev, SCIP_COPYRIGHT"\n\n"); // install or update error printing callback in SCIP to use current gev SCIPmessageSetErrorPrinting(printErrorGev, (void*)gev); // setup (or reset) SCIP instance SCIP_RETCODE scipret; scipret = setupSCIP(); if( scipret != SCIP_OKAY ) { snprintf(buffer, sizeof(buffer), "Error %d in call of SCIP function\n", scipret); gevLogStatPChar(gev, buffer); gmoSolveStatSet(gmo, gmoSolveStat_SystemErr); gmoModelStatSet(gmo, gmoModelStat_ErrorNoSolution); return 1; } assert(scip != NULL); // print info on used external codes SCIPprintExternalCodes(scip, NULL); return 0; }