1 #ifndef CPPAD_CG_LANGUAGE_INCLUDED 2 #define CPPAD_CG_LANGUAGE_INCLUDED 30 using ScopeIDType =
typename CodeHandler<Base>::ScopeIDType;
84 const std::set<const Node*>& indexes;
86 const std::set<RandomIndexPattern*>& indexRandomPatterns;
88 const std::vector<IndexPattern*>& loopDependentIndexPatterns;
90 const std::vector<IndexPattern*>& loopIndependentIndexPatterns;
114 const std::vector<Node*>& vo,
115 const std::vector<std::set<Node*>>& variableDependencies,
117 const std::map<size_t, size_t>& atomicId2Index,
118 const std::map<size_t, std::string>& atomicId2Name,
119 const std::vector<int>& atomicMaxForward,
120 const std::vector<int>& atomicMaxReverse,
122 const std::set<const Node*>& indexes,
123 const std::set<RandomIndexPattern*>& idxRandomPatterns,
124 const std::vector<IndexPattern*>& dependentIndexPatterns,
125 const std::vector<IndexPattern*>& independentIndexPatterns,
132 minTemporaryVarID(minTempVID),
135 variableDependencies(variableDependencies),
137 atomicFunctionId2Index(atomicId2Index),
138 atomicFunctionId2Name(atomicId2Name),
139 atomicFunctionsMaxForward(atomicMaxForward),
140 atomicFunctionsMaxReverse(atomicMaxReverse),
143 indexRandomPatterns(idxRandomPatterns),
144 loopDependentIndexPatterns(dependentIndexPatterns),
145 loopIndependentIndexPatterns(independentIndexPatterns),
146 totalUseCount(totalUseCount),
148 auxIterationIndexOp(auxIterationIndexOp),
149 zeroDependents(zero) {
164 virtual void generateSourceCode(std::ostream& out,
173 virtual bool createsNewVariable(
const Node& op,
176 virtual bool requiresVariableArgument(
enum CGOpCode op,
177 size_t argIndex)
const = 0;
183 virtual bool requiresVariableDependencies()
const = 0;
const std::map< size_t, std::string > & atomicFunctionId2Name
const bool zeroDependents
const CodeHandlerVector< Base, size_t > & varId
const std::vector< int > & atomicFunctionsMaxReverse
IndexOperationNode< Base > & auxIterationIndexOp
const CodeHandlerVector< Base, ScopeIDType > & scope
const std::vector< Node * > & independent
const std::map< size_t, size_t > & atomicFunctionId2Index
const CodeHandlerVector< Base, size_t > & totalUseCount
const std::vector< int > & atomicFunctionsMaxForward
VariableNameGenerator< Base > & nameGen
const ArrayView< CG< Base > > & dependent
const std::vector< std::set< Node * > > & variableDependencies
const std::vector< Node * > & variableOrder