OmniSciDB  b24e664e58
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RexVisitorBase< T > Class Template Referenceabstract

#include <RexVisitor.h>

+ Inheritance diagram for RexVisitorBase< T >:

Public Member Functions

virtual T visit (const RexScalar *rex_scalar) const
 
virtual T visitInput (const RexInput *) const =0
 
virtual T visitLiteral (const RexLiteral *) const =0
 
virtual T visitSubQuery (const RexSubQuery *) const =0
 
virtual T visitRef (const RexRef *) const =0
 
virtual T visitOperator (const RexOperator *rex_operator) const =0
 
virtual T visitCase (const RexCase *rex_case) const =0
 

Protected Member Functions

virtual T defaultResult () const =0
 

Detailed Description

template<class T>
class RexVisitorBase< T >

Definition at line 25 of file RexVisitor.h.

Member Function Documentation

template<class T>
virtual T RexVisitorBase< T >::visit ( const RexScalar rex_scalar) const
inlinevirtual

Definition at line 27 of file RexVisitor.h.

Referenced by RelProject::deepCopy(), RelJoin::deepCopy(), RelFilter::deepCopy(), RelCompound::deepCopy(), RelTableFunction::deepCopy(), anonymous_namespace{RelAlgExecutor.cpp}::get_bitwise_equals(), anonymous_namespace{RelAlgExecutor.cpp}::get_join_source_used_inputs(), anonymous_namespace{RelAlgOptimizer.cpp}::get_live_ins(), anonymous_namespace{RelAlgExecutor.cpp}::get_used_inputs(), hoist_filter_cond_to_cross_join(), anonymous_namespace{RelAlgOptimizer.cpp}::propagate_input_renumbering(), anonymous_namespace{RelAlgOptimizer.cpp}::redirect_inputs_of(), anonymous_namespace{RelAlgAbstractInterpreter.cpp}::separate_window_function_expressions(), anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitCompound(), anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitFilter(), anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitJoin(), anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitLeftDeepInnerJoin(), RexVisitor< std::unordered_set< const RexInput * > >::visitOperator(), anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RelAlgPhysicalInputsVisitor::visitProject(), and RexVisitor< std::unordered_set< const RexInput * > >::visitWindowFunctionOperator().

27  {
28  CHECK(rex_scalar);
29  const auto rex_input = dynamic_cast<const RexInput*>(rex_scalar);
30  if (rex_input) {
31  return visitInput(rex_input);
32  }
33  const auto rex_literal = dynamic_cast<const RexLiteral*>(rex_scalar);
34  if (rex_literal) {
35  return visitLiteral(rex_literal);
36  }
37  const auto rex_subquery = dynamic_cast<const RexSubQuery*>(rex_scalar);
38  if (rex_subquery) {
39  return visitSubQuery(rex_subquery);
40  }
41  const auto rex_operator = dynamic_cast<const RexOperator*>(rex_scalar);
42  if (rex_operator) {
43  return visitOperator(rex_operator);
44  }
45  const auto rex_case = dynamic_cast<const RexCase*>(rex_scalar);
46  if (rex_case) {
47  return visitCase(rex_case);
48  }
49  const auto rex_ref = dynamic_cast<const RexRef*>(rex_scalar);
50  if (rex_ref) {
51  return visitRef(rex_ref);
52  }
53  LOG(FATAL) << "No visit path for " << rex_scalar->toString();
54  return defaultResult();
55  }
#define LOG(tag)
Definition: Logger.h:185
virtual T visitRef(const RexRef *) const =0
virtual T visitLiteral(const RexLiteral *) const =0
virtual T visitCase(const RexCase *rex_case) const =0
virtual T defaultResult() const =0
CHECK(cgen_state)
virtual T visitOperator(const RexOperator *rex_operator) const =0
virtual T visitInput(const RexInput *) const =0
virtual T visitSubQuery(const RexSubQuery *) const =0
virtual std::string toString() const =0

+ Here is the caller graph for this function:

template<class T>
virtual T RexVisitorBase< T >::visitInput ( const RexInput ) const
pure virtual

Implemented in anonymous_namespace{RelAlgAbstractInterpreter.cpp}::RexInputBackpropagationVisitor, JoinTargetRebaser, anonymous_namespace{RelAlgOptimizer.cpp}::RexInputRedirector, anonymous_namespace{RelAlgAbstractInterpreter.cpp}::anonymous_namespace{RelAlgAbstractInterpreter.cpp}::CoalesceSecondaryProjectVisitor, anonymous_namespace{RelAlgOptimizer.cpp}::SubConditionReplacer, anonymous_namespace{RelAlgOptimizer.cpp}::RexInputSinker, anonymous_namespace{RelAlgAbstractInterpreter.cpp}::anonymous_namespace{RelAlgAbstractInterpreter.cpp}::RexInputReplacementVisitor, anonymous_namespace{RelAlgOptimizer.cpp}::RexInputRenumberVisitor, anonymous_namespace{RelAlgOptimizer.cpp}::RexInputCollector, anonymous_namespace{RelAlgExecutor.cpp}::RexUsedInputsVisitor, RexInputRenumber< bAllowMissing >, anonymous_namespace{RelLeftDeepInnerJoin.cpp}::RebindRexInputsFromLeftDeepJoin, RexDeepCopyVisitor, RexVisitor< T >, RexVisitor< PhysicalInputSet >, RexVisitor< void * >, RexVisitor< bool >, RexVisitor< std::unordered_set< RexInput > >, RexVisitor< const RexScalar * >, RexVisitor< std::unordered_set< const RexInput * > >, anonymous_namespace{RelAlgAbstractInterpreter.cpp}::RexRebindInputsVisitor, anonymous_namespace{RelAlgOptimizer.cpp}::RexRebindInputsVisitor, anonymous_namespace{QueryPhysicalInputsCollector.cpp}::RexPhysicalInputsVisitor, and anonymous_namespace{RelAlgOptimizer.cpp}::RexProjectInputRedirector.

Referenced by RexVisitorBase< std::unordered_set< const RexInput * > >::visit().

+ Here is the caller graph for this function:


The documentation for this class was generated from the following file: