1 #ifndef CPPAD_CG_MODEL_LIBRARY_C_SOURCE_GEN_INCLUDED 2 #define CPPAD_CG_MODEL_LIBRARY_C_SOURCE_GEN_INCLUDED 27 class ModelLibraryCSourceGen :
public JobTimer {
29 static const std::string FUNCTION_VERSION;
30 static const std::string FUNCTION_MODELS;
31 static const std::string FUNCTION_ONCLOSE;
32 static const std::string FUNCTION_SETTHREADPOOLDISABLED;
33 static const std::string FUNCTION_ISTHREADPOOLDISABLED;
34 static const std::string FUNCTION_SETTHREADS;
35 static const std::string FUNCTION_GETTHREADS;
36 static const std::string FUNCTION_SETTHREADSCHEDULERSTRAT;
37 static const std::string FUNCTION_GETTHREADSCHEDULERSTRAT;
38 static const std::string FUNCTION_SETTHREADPOOLVERBOSE;
39 static const std::string FUNCTION_ISTHREADPOOLVERBOSE;
40 static const std::string FUNCTION_SETTHREADPOOLGUIDEDMAXGROUPWORK;
41 static const std::string FUNCTION_GETTHREADPOOLGUIDEDMAXGROUPWORK;
42 static const std::string FUNCTION_SETTHREADPOOLNUMBEROFTIMEMEAS;
43 static const std::string FUNCTION_GETTHREADPOOLNUMBEROFTIMEMEAS;
44 static const unsigned long API_VERSION;
46 static const std::string CONST;
51 std::map<std::string, ModelCSourceGen<Base>*>
_models;
80 _multiThreading(MultiThreadingType::NONE) {
81 CPPADCG_ASSERT_KNOWN(_models.find(model.
getName()) == _models.end(),
82 "Another model with the same name was already registered");
84 _models[model.
getName()] = &model;
90 CPPADCG_ASSERT_KNOWN(_models.find(headModel.
getName()) == _models.end(),
91 "Another model with the same name was already registered");
93 _models[headModel.
getName()] = &headModel;
97 ModelLibraryCSourceGen& operator=(
const ModelLibraryCSourceGen&) =
delete;
99 virtual ~ModelLibraryCSourceGen() {
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