25 #ifndef VISIONCPP_INCLUDE_FRAMEWORK_EXPR_TREE_POINT_OPS_RESIZABLE_BINARY_HPP_
26 #define VISIONCPP_INCLUDE_FRAMEWORK_EXPR_TREE_POINT_OPS_RESIZABLE_BINARY_HPP_
38 template <
typename LHSExpr,
typename RHSExpr>
55 template <
bool Conds,
size_t LhsOP,
size_t RhsOP>
59 template <
size_t RhsOP>
61 static constexpr
size_t Operation_type = RhsOP;
65 template <
size_t LhsOP>
67 static constexpr
size_t Operation_type = LhsOP;
71 template <
size_t OPType>
72 struct OpTP<true, OPType, OPType> {
73 static constexpr
size_t Operation_type = OPType;
88 template <
typename BI_OP,
typename LHS,
typename RHS,
size_t Cols,
size_t Rows,
89 size_t LfType,
size_t LVL>
99 static constexpr
size_t Level = LVL;
111 RHS::SubExpressionEvaluationNeeded;
116 template <
typename TmpLHS,
typename TmpRHS>
150 template <
bool ForcedToExec,
size_t LC,
size_t LR,
size_t LCT,
size_t LRT,
160 return execute_expr<Binary_Conds, ForcedToExec, ExprExchange<LHS, RHS>, LC,
162 lhs.template sub_expression_evaluation<Binary_Conds, LC, LR, LCT, LRT>(
164 rhs.template sub_expression_evaluation<Binary_Conds, LC, LR, LCT, LRT>(
172 template <
typename OP,
size_t Cols,
size_t Rows,
size_t LeafType,
typename LHS,
176 LHS, RHS, Cols, Rows, LeafType,
181 LHS, RHS, Cols, Rows, LeafType,
183 RHS>::Type::Level>(lhs, rhs);
190 template <
typename OP,
typename LHS,
typename RHS>
204 RHS>::Type::Level>(lhs, rhs);
static constexpr size_t Binary
constexpr static size_t PointOP
auto execute_expr(NestedExpr nestedExpr, const DeviceT &dev) -> decltype(internal::IfExprExecNeeded< Conds, ParentConds, internal::expr_category::Unary, Expr, DeviceT >::template execute_expr< LC, LR, LCT, LRT >(nestedExpr, dev))
template deduction for IfExprExecNeeded when the expression category is unary
auto point_operation(LHS lhs, RHS rhs) -> RBiOP< internal::PixelBinaryOp< OP, typename LHS::OutType, typename RHS::OutType >, LHS, RHS, Cols, Rows, LeafType, 1+internal::tools::StaticIf<(LHS::Level > RHS::Level), LHS, RHS >::Type::Level >
template deduction for the RBiOP struct where user determines the Column, Row, and memory_type of the...
static constexpr size_t Const
auto point_operation(LHS lhs, RHS rhs) -> internal::RBiOP< internal::PixelBinaryOp< OP, typename LHS::OutType, typename RHS::OutType >, LHS, RHS, internal::InheritTypeBinary< LHS, RHS >::Type::Cols, internal::InheritTypeBinary< LHS, RHS >::Type::Rows, internal::InheritTypeBinary< LHS, RHS >::Type::LeafType, 1+internal::tools::StaticIf<(LHS::Level > RHS::Level), LHS, RHS >::Type::Level >
template deduction for RBiOP struct where the Column, Row, and memory_type of the output has been aut...
This struct is used to extract the output type of the binary operation from both input.
typename LHSExpr::Type LHSTypeDetector
typename RHSExpr::Type RHSTypeDetector
typename tools::StaticIf< LHSTypeDetector::LeafType !=memory_type::Const, LHSTypeDetector, RHSTypeDetector >::Type Type
This struct is used to determine the operation type for binary operation based on the operation type ...
OutputMemory is used to deduce the output type of each node in the expression tree by using certain p...
This class is used to encapsulate the binary point operation functor and the types of each operand in...
The definition is in RBiOP file.
static constexpr size_t CThread
static constexpr bool SubExpressionEvaluationNeeded
static constexpr size_t Level
static constexpr size_t RThread
static constexpr size_t ND_Category
typename BI_OP::OutType OutType
bool subexpr_execution_reseter
static constexpr size_t Operation_type
auto sub_expression_evaluation(const DeviceT &dev) -> decltype(execute_expr< Binary_Conds, ForcedToExec, ExprExchange< LHS, RHS >, LC, LR, LCT, LRT >(lhs.template sub_expression_evaluation< Binary_Conds, LC, LR, LRT, LCT >(dev), rhs.template sub_expression_evaluation< Binary_Conds, LC, LR, LRT, LCT >(dev), dev))
sub_expression_evaluation
static constexpr bool has_out
RBiOP(LHS lhsArg, RHS rhsArg)
static constexpr size_t LeafType
static constexpr bool Binary_Conds
typename visioncpp::internal::OutputMemory< OutType, LfType, Cols, Rows, LVL >::Type Type