CppADCodeGen
2.4.3
A C++ Algorithmic Differentiation Package with Source Code Generation
llvm_model.hpp
1
#ifndef CPPAD_CG_LLVM_MODEL_INCLUDED
2
#define CPPAD_CG_LLVM_MODEL_INCLUDED
3
/* --------------------------------------------------------------------------
4
* CppADCodeGen: C++ Algorithmic Differentiation with Source Code Generation:
5
* Copyright (C) 2013 Ciengis
6
* Copyright (C) 2018 Joao Leal
7
*
8
* CppADCodeGen is distributed under multiple licenses:
9
*
10
* - Eclipse Public License Version 1.0 (EPL1), and
11
* - GNU General Public License Version 3 (GPL3).
12
*
13
* EPL1 terms and conditions can be found in the file "epl-v10.txt", while
14
* terms and conditions for the GPL3 can be found in the file "gpl3.txt".
15
* ----------------------------------------------------------------------------
16
* Author: Joao Leal
17
*/
18
19
namespace
CppAD
{
20
namespace
cg {
21
27
template
<
class
Base>
28
class
LlvmModel
:
public
FunctorGenericModel
<Base> {
29
protected
:
31
LlvmModelLibrary<Base>
*
_dynLib
;
32
33
public
:
34
35
LlvmModel
(
const
LlvmModel
&) =
delete
;
36
LlvmModel
& operator=(
const
LlvmModel
&) =
delete
;
37
38
virtual
~
LlvmModel
() {
39
if
(
_dynLib
!=
nullptr
) {
40
_dynLib
->destroyed(
this
);
41
}
42
}
43
44
protected
:
45
51
LlvmModel
(
LlvmModelLibrary<Base>
* dynLib,
52
const
std::string& name) :
53
FunctorGenericModel
<Base>(name),
54
_dynLib
(dynLib) {
55
56
CPPADCG_ASSERT_UNKNOWN(
_dynLib
!=
nullptr
);
57
58
this->init();
59
}
60
61
void
* loadFunction(
const
std::string& functionName,
bool
required =
true
)
override
{
62
return
_dynLib
->loadFunction(functionName, required);
63
}
64
65
void
modelLibraryClosed()
override
{
66
_dynLib
=
nullptr
;
67
FunctorGenericModel<Base>::modelLibraryClosed();
68
}
69
70
friend
class
LlvmModelLibrary<Base>;
71
};
72
73
}
// END cg namespace
74
}
// END CppAD namespace
75
76
#endif
CppAD::cg::FunctorGenericModel
Definition:
declare_cg.hpp:147
CppAD::cg::LlvmModelLibrary
Definition:
llvm_model_library.hpp:31
CppAD
Definition:
abstract_atomic_fun.hpp:19
CppAD::cg::LlvmModel::_dynLib
LlvmModelLibrary< Base > * _dynLib
the dynamic library
Definition:
llvm_model.hpp:31
CppAD::cg::LlvmModel
Definition:
llvm_model.hpp:28
CppAD::cg::LlvmModel::LlvmModel
LlvmModel(LlvmModelLibrary< Base > *dynLib, const std::string &name)
Definition:
llvm_model.hpp:51
include
cppad
cg
model
llvm
llvm_model.hpp
Generated on Tue Jan 23 2024 13:46:33 for CppADCodeGen by
1.8.17