Skip to content

Commit

Permalink
Localize use of boost filesystem and program_options (#3522)
Browse files Browse the repository at this point in the history
  • Loading branch information
rfranke authored and OpenModelica-Hudson committed Oct 21, 2015
1 parent 8d2f20e commit 8beab33
Show file tree
Hide file tree
Showing 9 changed files with 82 additions and 86 deletions.
Expand Up @@ -7,6 +7,8 @@
#include <Core/ModelicaDefine.h>
#include <Core/Modelica.h>

#include <SimCoreFactory/OMCFactory/OMCFactory.h>

shared_ptr<ISimController> createSimController(PATH library_path, PATH modelicasystem_path);

/**
Expand Down
Expand Up @@ -56,19 +56,14 @@
#include <Core/Utils/extension/shared_library.hpp>
#include <Core/Utils/extension/convenience.hpp>
#include <Core/Utils/extension/factory_map.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/unordered_map.hpp>
#include <boost/program_options.hpp>
#include <string>
/*Namespaces*/
using namespace boost::extensions;
namespace fs = boost::filesystem;
using boost::unordered_map;
namespace po = boost::program_options;
using std::string;
/*Defines*/
#define PATH fs::path
#define PATH string
#include "LibrariesConfig.h"
#include <SimCoreFactory/OMCFactory/OMCFactory.h>

Expand All @@ -81,19 +76,14 @@
#include <Core/Utils/extension/shared_library.hpp>
#include <Core/Utils/extension/convenience.hpp>
#include <Core/Utils/extension/factory_map.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>
#include <boost/unordered_map.hpp>
#include <boost/program_options.hpp>
#include <string>
/*Namespaces*/
using namespace boost::extensions;
namespace fs = boost::filesystem;
using boost::unordered_map;
namespace po = boost::program_options;
using std::string;
/*Defines*/
#define PATH fs::path
#define PATH string
#include "LibrariesConfig.h"
/*interface includes*/
#include <Core/System/ISystemProperties.h>
Expand All @@ -118,9 +108,12 @@
#include <Core/SimController/ISimData.h>
#include <Core/SimulationSettings/ISimControllerSettings.h>
#include <Core/SimController/ISimController.h>
#include <SimCoreFactory/OMCFactory/OMCFactory.h>
//#include <SimCoreFactory/OMCFactory/StaticOMCFactory.h>

/** Minimal OMCFactory for statically linked solvers */
class BaseOMCFactory {
public:
BaseOMCFactory(PATH library_path, PATH modelicasystem_path) {}
};

#else
#error "operating system not supported"
Expand Down
Expand Up @@ -73,24 +73,13 @@

#elif defined(OMC_BUILD) && defined(RUNTIME_STATIC_LINKING)

/*include needed for object creation in factory classes*/
#include <Core/Utils/Modelica/ModelicaSimulationError.h>
#include <Core/Math/Array.h>
#include <Core/Solver/FactoryExport.h>
#include <Core/Solver/SolverSettings.h>
#include <Core/SimulationSettings/IGlobalSettings.h>
/*Policy include*/
#include <SimCoreFactory/Policies/StaticSolverOMCFactory.h>
#include <SimCoreFactory/Policies/StaticSolverSettingsOMCFactory.h>
#include <SimCoreFactory/Policies/StaticSystemOMCFactory.h>
#include <SimCoreFactory/Policies/StaticLinSolverOMCFactory.h>
#include <SimCoreFactory/Policies/StaticNonLinSolverOMCFactory.h>
/*Policy defines*/
/** Minimal OMCFactory for statically linked solvers */
class BaseOMCFactory {
public:
BaseOMCFactory(PATH library_path, PATH modelicasystem_path) {}
};
typedef BaseOMCFactory BaseFactory;
typedef StaticSystemOMCFactory<BaseFactory> SimControllerPolicy;
typedef StaticSolverOMCFactory<BaseFactory> ConfigurationPolicy;
Expand Down
Expand Up @@ -30,8 +30,8 @@ struct LinSolverOMCFactory : virtual public ObjectFactory<CreationPolicy>

if(lin_solver.compare("umfpack") == 0)
{
PATH umfpack_path = ObjectFactory<CreationPolicy>::_library_path;
PATH umfpack_name(UMFPACK_LIB);
fs::path umfpack_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path umfpack_name(UMFPACK_LIB);
umfpack_path/=umfpack_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(umfpack_path.string(),*_linsolver_type_map);
if (result != LOADER_SUCCESS)
Expand Down Expand Up @@ -81,4 +81,4 @@ struct LinSolverOMCFactory : virtual public ObjectFactory<CreationPolicy>
private:
type_map* _linsolver_type_map;
};
/** @} */ // end of simcorefactoriesPolicies
/** @} */ // end of simcorefactoriesPolicies
Expand Up @@ -34,8 +34,8 @@ struct NonLinSolverOMCFactory : virtual public ObjectFactory<CreationPolicy>
if(nonlin_solver.compare("newton")==0)
{

PATH newton_path = ObjectFactory<CreationPolicy>::_library_path;
PATH newton_name(NEWTON_LIB);
fs::path newton_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path newton_name(NEWTON_LIB);
newton_path/=newton_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(newton_path.string(),*_non_linsolver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -47,8 +47,8 @@ struct NonLinSolverOMCFactory : virtual public ObjectFactory<CreationPolicy>
}
else if(nonlin_solver.compare("broyden")==0)
{
PATH broyden_path = ObjectFactory<CreationPolicy>::_library_path;
PATH broyden_name(BROYDEN_LIB);
fs::path broyden_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path broyden_name(BROYDEN_LIB);
broyden_path/=broyden_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(broyden_path.string(),*_non_linsolver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -59,8 +59,8 @@ struct NonLinSolverOMCFactory : virtual public ObjectFactory<CreationPolicy>
}
else if(nonlin_solver.compare("kinsol")==0)
{
PATH kinsol_path = ObjectFactory<CreationPolicy>::_library_path;
PATH kinsol_name(KINSOL_LIB);
fs::path kinsol_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path kinsol_name(KINSOL_LIB);
kinsol_path/=kinsol_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(kinsol_path.string(),*_non_linsolver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -72,8 +72,8 @@ struct NonLinSolverOMCFactory : virtual public ObjectFactory<CreationPolicy>
}
else if(nonlin_solver.compare("hybrj")==0)
{
PATH hybrj_path = ObjectFactory<CreationPolicy>::_library_path;
PATH hybrj_name(HYBRJ_LIB);
fs::path hybrj_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path hybrj_name(HYBRJ_LIB);
hybrj_path/=hybrj_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(hybrj_path.string(),*_non_linsolver_type_map);
if (result != LOADER_SUCCESS)
Expand Down Expand Up @@ -121,4 +121,4 @@ struct NonLinSolverOMCFactory : virtual public ObjectFactory<CreationPolicy>
private:
type_map* _non_linsolver_type_map;
};
/** @} */ // end of simcorefactoriesPolicies
/** @} */ // end of simcorefactoriesPolicies
Expand Up @@ -8,6 +8,12 @@
#include <Core/Solver/ISolver.h>
#include <Core/SimulationSettings//ISettingsFactory.h>

/* use boost filesystem locally */
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>

namespace fs = boost::filesystem;

/*
Policy class to create solver object
*/
Expand Down Expand Up @@ -53,8 +59,8 @@ struct SolverOMCFactory : public ObjectFactory<CreationPolicy>

if(solvername.compare("euler")==0)
{
PATH euler_path = ObjectFactory<CreationPolicy>::_library_path;
PATH euler_name(EULER_LIB);
fs::path euler_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path euler_name(EULER_LIB);
euler_path/=euler_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(euler_path.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -65,8 +71,8 @@ struct SolverOMCFactory : public ObjectFactory<CreationPolicy>
}
else if(solvername.compare("peer")==0)
{
PATH peer_path = ObjectFactory<CreationPolicy>::_library_path;
PATH peer_name(PEER_LIB);
fs::path peer_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path peer_name(PEER_LIB);
peer_path/=peer_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(peer_path.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -76,8 +82,8 @@ struct SolverOMCFactory : public ObjectFactory<CreationPolicy>
}
else if(solvername.compare("rtrk")==0)
{
PATH rtrk_path = ObjectFactory<CreationPolicy>::_library_path;
PATH rtrk_name(RTRK_LIB);
fs::path rtrk_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path rtrk_name(RTRK_LIB);
rtrk_path/=rtrk_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(rtrk_path.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -87,8 +93,8 @@ struct SolverOMCFactory : public ObjectFactory<CreationPolicy>
}
else if(solvername.compare("RTEuler")==0)
{
PATH RTEuler_path = ObjectFactory<CreationPolicy>::_library_path;
PATH RTEuler_name(RTEULER_LIB);
fs::path RTEuler_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path RTEuler_name(RTEULER_LIB);
RTEuler_path/= RTEuler_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(RTEuler_path.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -103,8 +109,8 @@ struct SolverOMCFactory : public ObjectFactory<CreationPolicy>
else if(solvername.compare("ida")==0)
{
solvername = "ida"; //workound for dassl, using cvode instead
PATH ida_path = ObjectFactory<CreationPolicy>::_library_path;
PATH ida_name(IDA_LIB);
fs::path ida_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path ida_name(IDA_LIB);
ida_path/=ida_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(ida_path.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -115,8 +121,8 @@ struct SolverOMCFactory : public ObjectFactory<CreationPolicy>
else if((solvername.compare("cvode")==0)||(solvername.compare("dassl")==0))
{
solvername = "cvode"; //workound for dassl, using cvode instead
PATH cvode_path = ObjectFactory<CreationPolicy>::_library_path;
PATH cvode_name(CVODE_LIB);
fs::path cvode_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path cvode_name(CVODE_LIB);
cvode_path/=cvode_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(cvode_path.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -126,8 +132,8 @@ struct SolverOMCFactory : public ObjectFactory<CreationPolicy>
}
else if((solvername.compare("arkode")==0))
{
PATH arkode_path = ObjectFactory<CreationPolicy>::_library_path;
PATH arkode_name(ARKODE_LIB);
fs::path arkode_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path arkode_name(ARKODE_LIB);
arkode_path /= arkode_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(arkode_path.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand Down Expand Up @@ -157,8 +163,8 @@ struct SolverOMCFactory : public ObjectFactory<CreationPolicy>

LOADERRESULT result;

PATH math_path = ObjectFactory<CreationPolicy>::_library_path;
PATH math_name(MATH_LIB);
fs::path math_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path math_name(MATH_LIB);
math_path/=math_name;

result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(math_path.string(),*_settings_type_map);
Expand All @@ -171,8 +177,8 @@ struct SolverOMCFactory : public ObjectFactory<CreationPolicy>



PATH settingsfactory_path = ObjectFactory<CreationPolicy>::_library_path;
PATH settingsfactory_name(SETTINGSFACTORY_LIB);
fs::path settingsfactory_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path settingsfactory_name(SETTINGSFACTORY_LIB);
settingsfactory_path/=settingsfactory_name;

result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(settingsfactory_path.string(),*_settings_type_map);
Expand All @@ -183,8 +189,8 @@ struct SolverOMCFactory : public ObjectFactory<CreationPolicy>
throw ModelicaSimulationError(MODEL_FACTORY,"Failed loading SimulationSettings library!");
}

PATH solver_path = ObjectFactory<CreationPolicy>::_library_path;
PATH solver_name(SOLVER_LIB);
fs::path solver_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path solver_name(SOLVER_LIB);
solver_path/=solver_name;

result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(solver_path.string(),*_solver_type_map);
Expand Down
Expand Up @@ -39,8 +39,8 @@ struct SolverSettingsOMCFactory : public ObjectFactory<CreationPolicy>
string solver_settings_key;
if(solvername.compare("euler")==0)
{
PATH euler_path = ObjectFactory<CreationPolicy>::_library_path;
PATH euler_name(EULER_LIB);
fs::path euler_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path euler_name(EULER_LIB);
euler_path/=euler_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(euler_path.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -51,8 +51,8 @@ struct SolverSettingsOMCFactory : public ObjectFactory<CreationPolicy>
}
else if(solvername.compare("peer")==0)
{
PATH peer_path = ObjectFactory<CreationPolicy>::_library_path;
PATH peer_name(PEER_LIB);
fs::path peer_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path peer_name(PEER_LIB);
peer_path/=peer_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(peer_name.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -63,8 +63,8 @@ struct SolverSettingsOMCFactory : public ObjectFactory<CreationPolicy>
}
else if(solvername.compare("rtrk")==0)
{
PATH rtrk_path = ObjectFactory<CreationPolicy>::_library_path;
PATH rtrk_name(RTRK_LIB);
fs::path rtrk_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path rtrk_name(RTRK_LIB);
rtrk_path/=rtrk_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(rtrk_path.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -75,8 +75,8 @@ struct SolverSettingsOMCFactory : public ObjectFactory<CreationPolicy>
}
else if(solvername.compare("RTEuler")==0)
{
PATH RTEuler_path = ObjectFactory<CreationPolicy>::_library_path;
PATH RTEuler_name(RTEULER_LIB);
fs::path RTEuler_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path RTEuler_name(RTEULER_LIB);
RTEuler_path/=RTEuler_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(RTEuler_path.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -92,8 +92,8 @@ struct SolverSettingsOMCFactory : public ObjectFactory<CreationPolicy>
}
else if(solvername.compare("ida")==0)
{
PATH ida_path = ObjectFactory<CreationPolicy>::_library_path;
PATH ida_name(IDA_LIB);
fs::path ida_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path ida_name(IDA_LIB);
ida_path/=ida_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(ida_name.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -105,8 +105,8 @@ struct SolverSettingsOMCFactory : public ObjectFactory<CreationPolicy>
else if((solvername.compare("cvode")==0)||(solvername.compare("dassl")==0))
{
solvername = "cvode"; //workound for dassl, using cvode instead
PATH cvode_path = ObjectFactory<CreationPolicy>::_library_path;
PATH cvode_name(CVODE_LIB);
fs::path cvode_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path cvode_name(CVODE_LIB);
cvode_path/=cvode_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(cvode_path.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand All @@ -117,8 +117,8 @@ struct SolverSettingsOMCFactory : public ObjectFactory<CreationPolicy>
}
else if((solvername.compare("arkode")==0))
{
PATH arkode_path = ObjectFactory<CreationPolicy>::_library_path;
PATH arkode_name(ARKODE_LIB);
fs::path arkode_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path arkode_name(ARKODE_LIB);
arkode_path/=arkode_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(arkode_path.string(),*_solver_type_map);
if (result != LOADER_SUCCESS)
Expand Down Expand Up @@ -155,4 +155,4 @@ struct SolverSettingsOMCFactory : public ObjectFactory<CreationPolicy>
type_map* _solver_type_map;

};
/** @} */ // end of simcorefactoriesPolicies
/** @} */ // end of simcorefactoriesPolicies
Expand Up @@ -79,8 +79,8 @@ struct SystemOMCFactory : public ObjectFactory<CreationPolicy>

virtual shared_ptr<IMixedSystem> createSystem(string modelLib,string modelKey,IGlobalSettings* globalSettings,shared_ptr<IAlgLoopSolverFactory> algloopsolverfactory,shared_ptr<ISimData> simData,shared_ptr<ISimVars> simVars)
{
PATH modelica_path = ObjectFactory<CreationPolicy>::_modelicasystem_path;
PATH modelica_name(modelLib);
fs::path modelica_path = ObjectFactory<CreationPolicy>::_modelicasystem_path;
fs::path modelica_name(modelLib);
modelica_path/=modelica_name;
LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(modelica_path.string(),*_system_type_map);
if (result != LOADER_SUCCESS)
Expand Down Expand Up @@ -110,8 +110,8 @@ struct SystemOMCFactory : public ObjectFactory<CreationPolicy>
protected:
virtual void initializeLibraries(PATH library_path,PATH modelicasystem_path,PATH config_path)
{
PATH systemfactory_path = ObjectFactory<CreationPolicy>::_library_path;
PATH system_name(SYSTEM_LIB);
fs::path systemfactory_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path system_name(SYSTEM_LIB);
systemfactory_path/=system_name;

LOADERRESULT result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(systemfactory_path.string(), *_system_type_map);
Expand All @@ -122,8 +122,8 @@ struct SystemOMCFactory : public ObjectFactory<CreationPolicy>
throw ModelicaSimulationError(MODEL_FACTORY,tmp.str());
}

PATH dataexchange_path = ObjectFactory<CreationPolicy>::_library_path;
PATH dataexchange_name(DATAEXCHANGE_LIB);
fs::path dataexchange_path = ObjectFactory<CreationPolicy>::_library_path;
fs::path dataexchange_name(DATAEXCHANGE_LIB);
dataexchange_path/=dataexchange_name;

result = ObjectFactory<CreationPolicy>::_factory->LoadLibrary(dataexchange_path.string(), *_system_type_map);
Expand Down

0 comments on commit 8beab33

Please sign in to comment.