driver.hh gecode/minimodel.hh gecode/search.hh gecode/support/auto-link.hpp gecode/driver/options.hpp gecode/driver/script.hpp /usr/include/gecode/flatzinc.hh Gecode::Driver::BaseOption Gecode::Driver::StringValueOption Gecode::Driver::StringOption Gecode::Driver::StringOption::Value Gecode::Driver::IntOption Gecode::Driver::UnsignedIntOption Gecode::Driver::DoubleOption Gecode::Driver::BoolOption Gecode::BaseOptions Gecode::Options Gecode::SizeOptions Gecode::InstanceOptions Gecode::Driver::ScriptBase Gecode::Driver Gecode GECODE_DRIVER_EXPORT GECODE_LIBRARY_NAME "Driver" /*-*-mode:C++;c-basic-offset:2;indent-tabs-mode:nil-*-*/ /* *Mainauthors: *ChristianSchulte<schulte@gecode.org> * *Copyright: *ChristianSchulte,2009 * *Lastmodified: *$Date:2013-07-0814:22:40+0200(Mon,08Jul2013)$by$Author:schulte$ *$Revision:13820$ * *ThisfileispartofGecode,thegenericconstraint *developmentenvironment: *http://www.gecode.org * *Permissionisherebygranted,freeofcharge,toanypersonobtaining *acopyofthissoftwareandassociateddocumentationfiles(the *"Software"),todealintheSoftwarewithoutrestriction,including *withoutlimitationtherightstouse,copy,modify,merge,publish, *distribute,sublicense,and/orsellcopiesoftheSoftware,andto *permitpersonstowhomtheSoftwareisfurnishedtodoso,subjectto *thefollowingconditions: * *Theabovecopyrightnoticeandthispermissionnoticeshallbe *includedinallcopiesorsubstantialportionsoftheSoftware. * *THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND, *EXPRESSORIMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOF *MERCHANTABILITY,FITNESSFORAPARTICULARPURPOSEAND *NONINFRINGEMENT.INNOEVENTSHALLTHEAUTHORSORCOPYRIGHTHOLDERSBE *LIABLEFORANYCLAIM,DAMAGESOROTHERLIABILITY,WHETHERINANACTION *OFCONTRACT,TORTOROTHERWISE,ARISINGFROM,OUTOFORINCONNECTION *WITHTHESOFTWAREORTHEUSEOROTHERDEALINGSINTHESOFTWARE. * */ #ifndef__GECODE_DRIVER_HH__ #define__GECODE_DRIVER_HH__ #include<gecode/minimodel.hh> #include<gecode/search.hh> #ifdefGECODE_HAS_GIST #include<gecode/gist.hh> #endif /* *Configurelinking * */ #if!defined(GECODE_STATIC_LIBS)&&\ (defined(__CYGWIN__)||defined(__MINGW32__)||defined(_MSC_VER)) #ifdefGECODE_BUILD_DRIVER #defineGECODE_DRIVER_EXPORT__declspec(dllexport) #else #defineGECODE_DRIVER_EXPORT__declspec(dllimport) #endif #else #ifdefGECODE_GCC_HAS_CLASS_VISIBILITY #defineGECODE_DRIVER_EXPORT__attribute__((visibility("default"))) #else #defineGECODE_DRIVER_EXPORT #endif #endif //Configureauto-linking #ifndefGECODE_BUILD_DRIVER #defineGECODE_LIBRARY_NAME"Driver" #include<gecode/support/auto-link.hpp> #endif namespaceGecode{ enumScriptMode{ SM_SOLUTION, SM_TIME, SM_STAT, SM_GIST }; enumRestartMode{ RM_NONE, RM_CONSTANT, RM_LINEAR, RM_LUBY, RM_GEOMETRIC }; classBaseOptions; namespaceDriver{ classGECODE_DRIVER_EXPORTBaseOption{ friendclassGecode::BaseOptions; protected: constchar*opt; constchar*exp; BaseOption*next; char*argument(intargc,char*argv[])const; public: BaseOption(constchar*o,constchar*e); virtualintparse(intargc,char*argv[])=0; virtualvoidhelp(void)=0; virtual~BaseOption(void); staticchar*strdup(constchar*s); staticvoidstrdel(constchar*s); }; classGECODE_DRIVER_EXPORTStringValueOption:publicBaseOption{ protected: constchar*cur; public: StringValueOption(constchar*o,constchar*e,constchar*v=NULL); voidvalue(constchar*v); constchar*value(void)const; virtualintparse(intargc,char*argv[]); virtualvoidhelp(void); virtual~StringValueOption(void); }; classGECODE_DRIVER_EXPORTStringOption:publicBaseOption{ protected: classValue{ public: intval; constchar*opt; constchar*help; Value*next; }; intcur; Value*fst; Value*lst; public: StringOption(constchar*o,constchar*e,intv=0); voidvalue(intv); intvalue(void)const; voidadd(intv,constchar*o,constchar*h=NULL); virtualintparse(intargc,char*argv[]); virtualvoidhelp(void); virtual~StringOption(void); }; classGECODE_DRIVER_EXPORTIntOption:publicBaseOption{ protected: intcur; public: IntOption(constchar*o,constchar*e,intv=0); voidvalue(intv); intvalue(void)const; virtualintparse(intargc,char*argv[]); virtualvoidhelp(void); }; classGECODE_DRIVER_EXPORTUnsignedIntOption:publicBaseOption{ protected: unsignedintcur; public: UnsignedIntOption(constchar*o,constchar*e,unsignedintv=0); voidvalue(unsignedintv); unsignedintvalue(void)const; virtualintparse(intargc,char*argv[]); virtualvoidhelp(void); }; classGECODE_DRIVER_EXPORTDoubleOption:publicBaseOption{ protected: doublecur; public: DoubleOption(constchar*o,constchar*e,doublev=0); voidvalue(doublev); doublevalue(void)const; virtualintparse(intargc,char*argv[]); virtualvoidhelp(void); }; classGECODE_DRIVER_EXPORTBoolOption:publicBaseOption{ protected: boolcur; public: BoolOption(constchar*o,constchar*e,boolv=false); voidvalue(boolv); boolvalue(void)const; virtualintparse(intargc,char*argv[]); virtualvoidhelp(void); }; } classGECODE_DRIVER_EXPORTBaseOptions{ protected: Driver::BaseOption*fst; Driver::BaseOption*lst; constchar*_name; public: BaseOptions(constchar*s); virtualvoidhelp(void); voidadd(Driver::BaseOption&o); voidparse(int&argc,char*argv[]); constchar*name(void)const; voidname(constchar*); virtual~BaseOptions(void); }; classGECODE_DRIVER_EXPORTOptions:publicBaseOptions{ protected: Driver::StringOption_model; Driver::StringOption_symmetry; Driver::StringOption_propagation; Driver::StringOption_icl; Driver::StringOption_branching; Driver::DoubleOption_decay; Driver::StringOption_search; Driver::UnsignedIntOption_solutions; Driver::DoubleOption_threads; Driver::UnsignedIntOption_c_d; Driver::UnsignedIntOption_a_d; Driver::UnsignedIntOption_node; Driver::UnsignedIntOption_fail; Driver::UnsignedIntOption_time; Driver::StringOption_restart; Driver::DoubleOption_r_base; Driver::UnsignedIntOption_r_scale; Driver::BoolOption_nogoods; Driver::UnsignedIntOption_nogoods_limit; Driver::BoolOption_interrupt; Driver::StringOption_mode; Driver::UnsignedIntOption_samples; Driver::UnsignedIntOption_iterations; Driver::BoolOption_print_last; Driver::StringValueOption_out_file; Driver::StringValueOption_log_file; public: Options(constchar*s); voidmodel(intv); voidmodel(intv,constchar*o,constchar*h=NULL); intmodel(void)const; voidsymmetry(intv); voidsymmetry(intv,constchar*o,constchar*h=NULL); intsymmetry(void)const; voidpropagation(intv); voidpropagation(intv,constchar*o,constchar*h=NULL); intpropagation(void)const; voidicl(IntConLeveli); IntConLevelicl(void)const; voidbranching(intv); voidbranching(intv,constchar*o,constchar*h=NULL); intbranching(void)const; voiddecay(doubled); doubledecay(void)const; voidsearch(intv); voidsearch(intv,constchar*o,constchar*h=NULL); intsearch(void)const; voidsolutions(unsignedintn); unsignedintsolutions(void)const; voidthreads(doublen); doublethreads(void)const; voidc_d(unsignedintd); unsignedintc_d(void)const; voida_d(unsignedintd); unsignedinta_d(void)const; voidnode(unsignedintn); unsignedintnode(void)const; voidfail(unsignedintn); unsignedintfail(void)const; voidtime(unsignedintt); unsignedinttime(void)const; voidrestart(RestartModer); RestartModerestart(void)const; voidrestart_base(doublebase); doublerestart_base(void)const; voidrestart_scale(unsignedintscale); unsignedintrestart_scale(void)const; voidnogoods(boolb); boolnogoods(void)const; voidnogoods_limit(unsignedintl); unsignedintnogoods_limit(void)const; voidinterrupt(boolb); boolinterrupt(void)const; voidmode(ScriptModeem); ScriptModemode(void)const; voidsamples(unsignedints); unsignedintsamples(void)const; voiditerations(unsignedinti); unsignedintiterations(void)const; voidprint_last(boolp); boolprint_last(void)const; voidout_file(constchar*f); constchar*out_file(void)const; voidlog_file(constchar*f); constchar*log_file(void)const; #ifdefGECODE_HAS_GIST class_I{ private: Support::DynamicArray<Gist::Inspector*,Heap>_click; unsignedintn_click; Support::DynamicArray<Gist::Inspector*,Heap>_solution; unsignedintn_solution; Support::DynamicArray<Gist::Inspector*,Heap>_move; unsignedintn_move; Support::DynamicArray<Gist::Comparator*,Heap>_compare; unsignedintn_compare; public: _I(void); voidclick(Gist::Inspector*i); voidsolution(Gist::Inspector*i); voidmove(Gist::Inspector*i); voidcompare(Gist::Comparator*i); Gist::Inspector*click(unsignedinti)const; Gist::Inspector*solution(unsignedinti)const; Gist::Inspector*move(unsignedinti)const; Gist::Comparator*compare(unsignedinti)const; }inspect; #endif }; classGECODE_DRIVER_EXPORTSizeOptions:publicOptions{ protected: unsignedint_size; public: SizeOptions(constchar*s); virtualvoidhelp(void); voidparse(int&argc,char*argv[]); voidsize(unsignedints); unsignedintsize(void)const; }; classGECODE_DRIVER_EXPORTInstanceOptions:publicOptions{ protected: constchar*_inst; public: InstanceOptions(constchar*s); virtualvoidhelp(void); voidparse(int&argc,char*argv[]); voidinstance(constchar*s); constchar*instance(void)const; ~InstanceOptions(void); }; } #include<gecode/driver/options.hpp> namespaceGecode{ namespaceDriver{ template<classBaseSpace> classScriptBase:publicBaseSpace{ public: ScriptBase(void){} ScriptBase(boolshare,ScriptBase&e) :BaseSpace(share,e){} virtualvoidprint(std::ostream&os)const{(void)os;} virtualvoidcompare(constSpace&,std::ostream&os)const{ (void)os; } staticstd::ostream&select_ostream(constchar*name,std::ofstream&ofs); template<classScript,template<class>classEngine,classOptions> staticvoidrun(constOptions&opt,Script*s=NULL); private: template<classScript,template<class>classEngine,classOptions, template<template<class>class,class>classMeta> staticvoidrunMeta(constOptions&opt,Script*s); explicitScriptBase(ScriptBase&e); }; } typedefDriver::ScriptBase<Space>Script; typedefDriver::ScriptBase<MinimizeSpace>MinimizeScript; typedefDriver::ScriptBase<MaximizeSpace>MaximizeScript; typedefDriver::ScriptBase<IntMinimizeSpace>IntMinimizeScript; typedefDriver::ScriptBase<IntMaximizeSpace>IntMaximizeScript; #ifdefGECODE_HAS_FLOAT_VARS typedefDriver::ScriptBase<FloatMinimizeSpace>FloatMinimizeScript; typedefDriver::ScriptBase<FloatMaximizeSpace>FloatMaximizeScript; #endif } #include<gecode/driver/script.hpp> #endif //STATISTICS:driver-any