1 #ifndef CPPAD_CG_MODEL_LIBRARY_C_SOURCE_GEN_INCLUDED 2 #define CPPAD_CG_MODEL_LIBRARY_C_SOURCE_GEN_INCLUDED 28 class ModelLibraryCSourceGen :
public JobTimer {
30 static const std::string FUNCTION_VERSION;
31 static const std::string FUNCTION_MODELS;
32 static const std::string FUNCTION_ONCLOSE;
33 static const std::string FUNCTION_SETTHREADPOOLDISABLED;
34 static const std::string FUNCTION_ISTHREADPOOLDISABLED;
35 static const std::string FUNCTION_SETTHREADS;
36 static const std::string FUNCTION_GETTHREADS;
37 static const std::string FUNCTION_SETTHREADSCHEDULERSTRAT;
38 static const std::string FUNCTION_GETTHREADSCHEDULERSTRAT;
39 static const std::string FUNCTION_SETTHREADPOOLVERBOSE;
40 static const std::string FUNCTION_ISTHREADPOOLVERBOSE;
41 static const std::string FUNCTION_SETTHREADPOOLGUIDEDMAXGROUPWORK;
42 static const std::string FUNCTION_GETTHREADPOOLGUIDEDMAXGROUPWORK;
43 static const std::string FUNCTION_SETTHREADPOOLNUMBEROFTIMEMEAS;
44 static const std::string FUNCTION_GETTHREADPOOLNUMBEROFTIMEMEAS;
45 static const unsigned long API_VERSION;
47 static const std::string CONST;
52 std::map<std::string, ModelCSourceGen<Base>*>
_models;
81 _multiThreading(MultiThreadingType::NONE) {
82 CPPADCG_ASSERT_KNOWN(_models.find(model.
getName()) == _models.end(),
83 "Another model with the same name was already registered")
85 _models[model.
getName()] = &model;
91 CPPADCG_ASSERT_KNOWN(_models.find(headModel.
getName()) == _models.end(),
92 "Another model with the same name was already registered")
94 _models[headModel.
getName()] = &headModel;
98 ModelLibraryCSourceGen& operator=(
const ModelLibraryCSourceGen&) =
delete;
100 virtual ~ModelLibraryCSourceGen() =
default;
109 CPPADCG_ASSERT_KNOWN(_models.find(model.
getName()) == _models.end(),
110 "Another model with the same name was already registered")
112 _models[model.
getName()] = &model;
117 inline const std::map<std::string, ModelCSourceGen<Base>*>& getModels()
const {
121 void addCustomFunctionSource(
const std::string& filename,
const std::string& source) {
122 CPPADCG_ASSERT_KNOWN(!filename.empty(),
"The filename name cannot be empty")
124 _customSource[filename] = source;
158 _multiThreading = multiThreading;
168 void saveSources(
const std::string& sourcesFolder);
181 virtual void generateVersionSource(std::map<std::string, std::string>& sources);
183 virtual void generateModelsSource(std::map<std::string, std::string>& sources);
185 virtual void generateOnCloseSource(std::map<std::string, std::string>& sources);
187 virtual void generateThreadPoolSources(std::map<std::string, std::string>& sources);
189 static void saveSources(
const std::string& sourcesFolder,
190 const std::map<std::string, std::string>& sources);
virtual const std::map< std::string, std::string > & getLibrarySources()
void saveSources(const std::string &sourcesFolder)
MultiThreadingType _multiThreading
std::ostringstream _cache
std::map< std::string, ModelCSourceGen< Base > * > _models
ModelLibraryCSourceGen(ModelCSourceGen< Base > &model)
void setMultiThreading(MultiThreadingType multiThreading)
std::map< std::string, std::string > _libSources
const std::string & getName() const
MultiThreadingType getMultiThreading() const
const std::map< std::string, std::string > & getCustomSources() const
void addModel(ModelCSourceGen< Base > &model)
std::map< std::string, std::string > _customSource