24 #ifndef VISIONCPP_INCLUDE_FRAMEWORK_EXPR_TREE_COMPLEX_OPS_COMPLEX_OPS_HPP_
25 #define VISIONCPP_INCLUDE_FRAMEWORK_EXPR_TREE_COMPLEX_OPS_COMPLEX_OPS_HPP_
45 template <
bool SatisfyingConds,
size_t Cols,
size_t Rows,
size_t LeafType,
46 size_t Depth,
size_t CurrentDepth,
typename LHS,
47 typename... ChildType>
48 struct CreatePyramidTupleType;
64 template <
bool SatisfyingConds,
size_t Cols,
size_t Rows,
size_t LeafType,
65 size_t Depth,
size_t Current_Depth,
typename LHS>
66 struct CreatePyramidTuple;
83 template <
size_t Cols,
size_t Rows,
size_t Depth,
size_t Current_Depth,
85 typename CreatePyramidTupleType<
false, Cols, Rows, LHS::Type::LeafType, Depth,
88 template <
typename Pyram
idT,
size_t N>
91 using OutType =
typename PyramidT::OutType;
92 using Type =
typename PyramidT::Type;
93 using LHSExpr =
typename PyramidT::LHSExpr;
94 static constexpr
size_t Level = PyramidT::Level;
95 static constexpr
size_t LeafType = PyramidT::LeafType;
98 static constexpr
size_t RThread = PyramidT::RThread;
99 static constexpr
size_t CThread = PyramidT::CThread;
101 static constexpr
size_t Depth = PyramidT::Depth;
109 rhs.subexpr_execution_reseter =
reset;
112 template <
bool ForcedToExec,
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
115 -> decltype(tools::tuple::get<N>(
rhs.mem)) {
116 if (
rhs.subexpr_execution_reseter) {
117 if (
rhs.first_time) {
118 rhs.template sub_expression_evaluation<ForcedToExec, LC, LR, LCT, LRT>(
120 rhs.subexpr_execution_reseter =
false;
121 rhs.first_time =
false;
122 rhs.node_reseter = N;
124 if (N ==
rhs.node_reseter) {
130 return tools::tuple::get<N>(
rhs.mem);
CreatePyramidTupleType< false, Cols, Rows, LHS::Type::LeafType, Depth, 0, LHS >::Type create_pyramid_memory()
create_pyramid_memory template deduction function for CreatePyramidTuple struct.
This file is used to create a pyramid output memory when the auto generate output memory is selected.
This file contains the construction of the pyramid node where a user can pass general filter2d functo...
This file contains the construction of the pyramid node where a user can pass separable filter2d func...
auto sub_expression_evaluation(const DeviceT &dev) -> decltype(tools::tuple::get< N >(rhs.mem))
bool subexpr_execution_reseter
typename PyramidT::PyramidMem PyramidMem
static constexpr size_t CThread
typename PyramidT::LHSExpr LHSExpr
static constexpr size_t Operation_type
static constexpr bool has_out
typename PyramidT::OutType OutType
static constexpr size_t ND_Category
static constexpr size_t Level
static constexpr bool SubExpressionEvaluationNeeded
PyramidLeafNode(PyramidT &pst)
static constexpr size_t LeafType
static constexpr size_t Depth
static constexpr size_t RThread
typename PyramidT::Type Type