1 #ifndef CPPAD_CG_LANGUAGE_INCLUDED
2 #define CPPAD_CG_LANGUAGE_INCLUDED
31 using ScopeIDType =
typename CodeHandler<Base>::ScopeIDType;
85 const std::set<const Node*>& indexes;
87 const std::set<RandomIndexPattern*>& indexRandomPatterns;
89 const std::vector<IndexPattern*>& loopDependentIndexPatterns;
91 const std::vector<IndexPattern*>& loopIndependentIndexPatterns;
115 const std::vector<Node*>& vo,
118 const std::map<size_t, size_t>& atomicId2Index,
119 const std::map<size_t, std::string>& atomicId2Name,
120 const std::vector<int>& atomicMaxForward,
121 const std::vector<int>& atomicMaxReverse,
123 const std::set<const Node*>& indexes,
124 const std::set<RandomIndexPattern*>& idxRandomPatterns,
125 const std::vector<IndexPattern*>& dependentIndexPatterns,
126 const std::vector<IndexPattern*>& independentIndexPatterns,
144 indexRandomPatterns(idxRandomPatterns),
145 loopDependentIndexPatterns(dependentIndexPatterns),
146 loopIndependentIndexPatterns(independentIndexPatterns),
165 virtual void generateSourceCode(std::ostream& out,
177 size_t totalUseCount,
178 size_t opCount)
const = 0;
180 virtual bool requiresVariableArgument(
enum CGOpCode op,
181 size_t argIndex)
const = 0;
const CodeHandlerVector< Base, ScopeIDType > & scope
const CodeHandlerVector< Base, size_t > & totalUseCount
const std::vector< Node * > & variableOrder
VariableNameGenerator< Base > & nameGen
const std::map< size_t, size_t > & atomicFunctionId2Index
const CodeHandlerVector< Base, size_t > & varId
const std::vector< std::set< Node * > > & variableDependencies
const std::vector< Node * > & independent
IndexOperationNode< Base > & auxIterationIndexOp
const ArrayView< CG< Base > > & dependent
const std::vector< int > & atomicFunctionsMaxForward
const std::map< size_t, std::string > & atomicFunctionId2Name
const std::vector< int > & atomicFunctionsMaxReverse
const bool zeroDependents
virtual bool createsNewVariable(const Node &op, size_t totalUseCount, size_t opCount) const =0
virtual bool requiresVariableDependencies() const =0