00001 // ******************** FlopCpp ********************************************** 00002 // File: flopc.hpp 00003 // $Id$ 00004 // Author: Tim Helge Hultberg (thh@mat.ua.pt) 00005 // Copyright (C) 2003 Tim Helge Hultberg 00006 // All Rights Reserved. 00007 // **************************************************************************** 00008 00009 #ifndef _flopc_hpp_ 00010 #define _flopc_hpp_ 00011 00012 #include "MP_variable.hpp" 00013 #include "MP_set.hpp" 00014 #include "MP_index.hpp" 00015 #include "MP_constant.hpp" 00016 #include "MP_data.hpp" 00017 #include "MP_constraint.hpp" 00018 #include "MP_expression.hpp" 00019 #include "MP_boolean.hpp" 00020 #include "MP_model.hpp" 00021 00049 namespace flopc { 00050 00055 inline void forall(const MP_domain& d, const Functor& f) { 00056 d.forall(&f); 00057 } 00058 00064 inline void forall(const Functor& f) { 00065 forall(MP_domain::getEmpty(), f); 00066 } 00067 00072 inline void operator<<=(const MP_domain& s, const MP_domain& d) { 00073 d.forall( s->makeInsertFunctor()); 00074 } 00075 00083 inline void minimize(const MP_expression &obj) { 00084 MP_model::getDefaultModel().minimize(obj); 00085 } 00086 00095 inline void minimize_max(MP_set& d, const MP_expression &obj) { 00096 MP_model::getDefaultModel().minimize_max(d,obj); 00097 } 00098 00106 inline void maximize(const MP_expression &obj) { 00107 MP_model::getDefaultModel().maximize(obj); 00108 } 00109 00110 } // End of namespace flopc 00111 #endif