LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
LMCAS::detail::RewriteBudget::Measurement类 参考final
类 LMCAS::detail::RewriteBudget::Measurement 继承关系图:
LMCAS::detail::RewriteBudget::Measurement 的协作图:

Public 成员函数

 Measurement (RewriteBudget &budget, std::size_t path_depth, std::size_t active_depth)
 SymbolicVisitor ()=default
 SymbolicVisitor (RewriteBudget *budget) noexcept
void visit (const AddNode &node) override
void visit (const ComplexNode &node) override
void visit (const FiniteSetNode &node) override
void visit (const FunctionNode &node) override
void visit (const IntegralNode &node) override
void visit (const IntervalNode &node) override
void visit (const LimitNode &node) override
void visit (const LogicalNode &node) override
void visit (const MatrixNode &node) override
void visit (const MembershipNode &node) override
void visit (const MultiplyNode &node) override
void visit (const PiecewiseNode &node) override
void visit (const PowerNode &node) override
void visit (const ProductNode &node) override
void visit (const QuantifierNode &node) override
void visit (const QuantityNode &node) override
void visit (const RelationalNode &node) override
void visit (const RootOfNode &) override
void visit (const SetBuilderNode &node) override
void visit (const SummationNode &node) override
void visit (const TransformNode &node) override
void visit (const UninterpretedFunctionNode &node) override
void visit (const VariableNode &) override
void visit (const NumberNode &number) override

Public 属性

Shape shape {1, 1}

Protected 成员函数

RewriteBudget * rewrite_budget () const noexcept
void visit_child (const SymbolicNodePtr &child) override
template<class Range>
void visit_children (const Range &children)

Protected 属性

int current_depth = 0

静态 Protected 属性

static constexpr int MAX_DEPTH = 200

Private 成员函数

void require_bits (const BigInt &integer)

Private 属性

const std::size_t active_depth_
RewriteBudget & budget_
const std::size_t path_depth_
RewriteBudget * rewrite_budget_ = nullptr

详细描述

在文件 rewrite_budget.cpp 第 29 行定义.

构造及析构函数说明

◆ Measurement()

LMCAS::detail::RewriteBudget::Measurement::Measurement ( RewriteBudget & budget,
std::size_t path_depth,
std::size_t active_depth )
inline

在文件 rewrite_budget.cpp 第 32 行定义.

引用了 LMCAS::detail::RewriteBudget::RewriteBudget(), active_depth_, LMCAS::detail::budget, budget_ , 以及 path_depth_.

函数调用图:

成员函数说明

◆ require_bits()

void LMCAS::detail::RewriteBudget::Measurement::require_bits ( const BigInt & integer)
inlineprivate

在文件 rewrite_budget.cpp 第 58 行定义.

58 {
60 integer.bit_length(), budget_.operation_);
61 if (!checked) { throw checked.error(); }
62 }
Result< void > require_integer_bits(std::size_t amount, const std::string &operation={}) const
ExprResult integer(Integer)=delete

引用了 budget_, LMCAS::detail::RewriteBudget::context_, LMCAS::integer, LMCAS::detail::RewriteBudget::operation_ , 以及 LMCAS::ComputationContext::require_integer_bits().

被这些函数引用 visit().

函数调用图:
这是这个函数的调用关系图:

◆ rewrite_budget()

RewriteBudget * LMCAS::detail::SymbolicVisitor::rewrite_budget ( ) const
inlineprotectednoexceptinherited

在文件 base.hpp 第 220 行定义.

220{ return rewrite_budget_; }

引用了 rewrite_budget_.

被这些函数引用 LMCAS::ExpandVisitor::append_child(), LMCAS::DifferentiationVisitor::append_result(), LMCAS::ExpandVisitor::check_child_count(), LMCAS::NormalizationVisitor::collect_expanded_product(), LMCAS::NormalizationVisitor::collect_product(), LMCAS::NormalizationVisitor::collect_sum(), LMCAS::DifferentiationVisitor::differentiate_atan2(), LMCAS::NormalizationVisitor::distribute_power(), LMCAS::NormalizationVisitor::distribute_product(), LMCAS::NormalizationVisitor::expand_complex_product(), LMCAS::NormalizationVisitor::expand_product(), LMCAS::NormalizationVisitor::extract_term_coefficient(), LMCAS::NormalizationVisitor::finish_squared_norm(), LMCAS::NormalizationVisitor::fuse_matrix_product(), LMCAS::NormalizationVisitor::matrix_product_element(), LMCAS::NormalizationVisitor::merge_complex_terms(), LMCAS::NormalizationVisitor::normalize_bound_body(), LMCAS::NormalizationVisitor::normalize_function_parity(), LMCAS::NormalizationVisitor::normalize_logarithm(), LMCAS::NormalizationVisitor::normalize_matrix_product(), LMCAS::NormalizationVisitor::normalize_matrix_sum(), LMCAS::NormalizationVisitor::normalize_natural_logarithm(), LMCAS::NormalizationVisitor::normalize_nested_imaginary_power(), LMCAS::NormalizationVisitor::normalize_nested_power(), LMCAS::NormalizationVisitor::normalize_power_identity(), LMCAS::NormalizationVisitor::normalize_unary_function(), LMCAS::anonymous_namespace{expression_analysis.cpp}::FreeSubstitution::rewrite_scoped(), LMCAS::NormalizationVisitor::scale_matrix(), LMCAS::DifferentiationVisitor::set_result(), LMCAS::ExpandVisitor::set_result(), LMCAS::ExpandVisitor::set_result(), LMCAS::NormalizationVisitor::set_result(), LMCAS::NormalizationVisitor::simplify_assumed_absolute(), LMCAS::NormalizationVisitor::simplify_assumed_square_root(), LMCAS::NormalizationVisitor::try_normalize_squared_norm(), LMCAS::groebner_detail::PolyBuilder::use_numeric_function(), LMCAS::detail::SymbolicRewriter::visit(), LMCAS::detail::SymbolicRewriter::visit(), LMCAS::DifferentiationVisitor::visit(), LMCAS::DifferentiationVisitor::visit(), LMCAS::DifferentiationVisitor::visit(), LMCAS::DifferentiationVisitor::visit(), LMCAS::DifferentiationVisitor::visit(), LMCAS::DifferentiationVisitor::visit(), LMCAS::DifferentiationVisitor::visit(), LMCAS::ExpandVisitor::visit(), LMCAS::ExpandVisitor::visit(), LMCAS::ExpandVisitor::visit(), LMCAS::ExpandVisitor::visit(), LMCAS::ExpandVisitor::visit(), LMCAS::groebner_detail::PolyBuilder::visit(), LMCAS::groebner_detail::PolyBuilder::visit(), LMCAS::groebner_detail::PolyBuilder::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit(), LMCAS::NormalizationVisitor::visit() , 以及 LMCAS::NormalizationVisitor::visit().

这是这个函数的调用关系图:

◆ SymbolicVisitor() [1/2]

◆ SymbolicVisitor() [2/2]

LMCAS::detail::SymbolicVisitor::SymbolicVisitor ( RewriteBudget * budget)
inlineexplicitnoexceptinherited

在文件 base.hpp 第 226 行定义.

◆ visit() [1/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const AddNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 64 行定义.

64{ visit_children(node.operands()); }
void visit_children(const Range &children)
const SymbolicNodePtr & node(const ::LMCAS::SymbolicExpr &expression) noexcept

引用了 LMCAS::detail::node() , 以及 visit_children().

函数调用图:

◆ visit() [2/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const ComplexNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 132 行定义.

132 {
133 visit_child(node.real());
134 visit_child(node.imag());
135 }
virtual void visit_child(const SymbolicNodePtr &child)

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [3/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const FiniteSetNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 122 行定义.

122{ visit_children(node.elements()); }

引用了 LMCAS::detail::node() , 以及 visit_children().

函数调用图:

◆ visit() [4/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const FunctionNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 70 行定义.

70{ visit_children(node.arguments()); }

引用了 LMCAS::detail::node() , 以及 visit_children().

函数调用图:

◆ visit() [5/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const IntegralNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

在文件 traversal.hpp 第 136 行定义.

136 {
137 visit_child(node.lower());
138 visit_child(node.upper());
139 visit_child(node.body());
140 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [6/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const IntervalNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 123 行定义.

123 {
124 visit_child(node.lower());
125 visit_child(node.upper());
126 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [7/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const LimitNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

在文件 traversal.hpp 第 141 行定义.

141 {
142 visit_child(node.point());
143 visit_child(node.body());
144 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [8/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const LogicalNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 89 行定义.

89 {
90 visit_child(node.left());
91 visit_child(node.right());
92 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [9/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const MatrixNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 74 行定义.

74 {
75 if (const auto* dense = std::get_if<MatrixNode::DenseStorage>(&node.storage())) {
76 visit_children(*dense);
77 return;
78 }
79 for (const auto& [index, value] :
80 std::get<MatrixNode::SparseStorage>(node.storage())) {
81 (void)index;
83 }
84 }
const std::string const ExprPtr & value

引用了 LMCAS::detail::node(), LMCAS::value, visit_child() , 以及 visit_children().

函数调用图:

◆ visit() [10/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const MembershipNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 127 行定义.

127 {
128 visit_child(node.element());
129 visit_child(node.set());
130 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [11/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const MultiplyNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 65 行定义.

65{ visit_children(node.operands()); }

引用了 LMCAS::detail::node() , 以及 visit_children().

函数调用图:

◆ visit() [12/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const PiecewiseNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 93 行定义.

93 {
94 for (const auto& branch : node.branches()) {
95 visit_child(branch.expression);
96 visit_child(branch.condition);
97 }
98 visit_child(node.default_expr());
99 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [13/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const PowerNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 66 行定义.

66 {
67 visit_child(node.base());
68 visit_child(node.exponent());
69 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [14/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const ProductNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 105 行定义.

105 {
106 visit_child(node.lower_bound());
107 visit_child(node.upper_bound());
108 visit_child(node.body());
109 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [15/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const QuantifierNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 114 行定义.

114 {
115 visit_child(node.domain());
116 visit_child(node.predicate());
117 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [16/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const QuantityNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 131 行定义.

131{ visit_child(node.value()); }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [17/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const RelationalNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 85 行定义.

85 {
86 visit_child(node.left());
87 visit_child(node.right());
88 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [18/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const RootOfNode & )
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

在文件 traversal.hpp 第 145 行定义.

145{}

◆ visit() [19/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const SetBuilderNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 118 行定义.

118 {
119 visit_child(node.domain());
120 visit_child(node.predicate());
121 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [20/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const SummationNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 100 行定义.

100 {
101 visit_child(node.lower_bound());
102 visit_child(node.upper_bound());
103 visit_child(node.body());
104 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [21/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const TransformNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

被 LMCAS::solver_detail::anonymous_namespace{solver_imaginary.cpp}::ContainsImaginaryVisitor 重载.

在文件 traversal.hpp 第 110 行定义.

110 {
111 visit_child(node.target());
112 visit_child(node.body());
113 }

引用了 LMCAS::detail::node() , 以及 visit_child().

函数调用图:

◆ visit() [22/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const UninterpretedFunctionNode & node)
inlineoverridevirtualinherited

实现了 LMCAS::detail::SymbolicVisitor.

在文件 traversal.hpp 第 71 行定义.

71 {
72 visit_children(node.arguments());
73 }

引用了 LMCAS::detail::node() , 以及 visit_children().

函数调用图:

◆ visit() [23/24]

void LMCAS::detail::RecursiveSymbolicVisitor::visit ( const VariableNode & )
inlineoverridevirtualinherited

◆ visit() [24/24]

void LMCAS::detail::RewriteBudget::Measurement::visit ( const NumberNode & number)
inlineoverridevirtual

重载 LMCAS::detail::RecursiveSymbolicVisitor .

在文件 rewrite_budget.cpp 第 37 行定义.

37 {
38 if (const auto* integer = std::get_if<BigInt>(&number.value())) {
40 } else {
41 const auto& rational = std::get<Rational>(number.value());
42 require_bits(rational.get_numerator());
43 require_bits(rational.get_denominator());
44 }
45 }
ExprResult rational(const Rational &value)

引用了 LMCAS::integer, LMCAS::rational(), require_bits() , 以及 LMCAS::NumberNode::value().

函数调用图:

◆ visit_child()

void LMCAS::detail::RewriteBudget::Measurement::visit_child ( const SymbolicNodePtr & child)
inlineoverrideprotectedvirtual

重载 LMCAS::detail::RecursiveSymbolicVisitor .

在文件 rewrite_budget.cpp 第 48 行定义.

48 {
49 const auto measured = budget_.measure_shape(child, path_depth_ + 1, active_depth_);
50 shape.nodes = budget_.append_size(shape.nodes, measured.nodes);
51 if (measured.height == std::numeric_limits<std::size_t>::max()) {
53 }
54 shape.height = std::max(shape.height, measured.height + 1);
55 }
std::size_t append_size(std::size_t current, std::size_t child)
Shape measure_shape(const std::shared_ptr< const SymbolicNode > &node, std::size_t path_depth, std::size_t active_depth)

引用了 active_depth_, LMCAS::detail::RewriteBudget::append_size(), budget_, LMCAS::detail::RewriteBudget::Shape::height, LMCAS::detail::RewriteBudget::measure_shape(), LMCAS::detail::RewriteBudget::Shape::nodes, LMCAS::detail::RewriteBudget::operation_, path_depth_, LMCAS::ResourceLimit , 以及 shape.

函数调用图:

◆ visit_children()

template<class Range>
void LMCAS::detail::RecursiveSymbolicVisitor::visit_children ( const Range & children)
inlineprotectedinherited

在文件 traversal.hpp 第 56 行定义.

56 {
57 for (const auto& child : children) visit_child(child);
58 }

引用了 visit_child().

被这些函数引用 visit(), visit(), visit(), visit(), visit(), visit(), LMCAS::anonymous_namespace{complex_analysis.cpp}::FunctionDependencyFinder::visit_binder(), LMCAS::anonymous_namespace{expression_analysis.cpp}::FreeVariableCollector::visit_binder(), LMCAS::anonymous_namespace{expression_analysis.cpp}::FreeVariableFinder::visit_binder(), LMCAS::anonymous_namespace{complex_analysis.cpp}::FunctionDependencyFinder::visit_function() , 以及 LMCAS::anonymous_namespace{complex_analysis.cpp}::FunctionOfExplicitComplexFinder::visit_function().

函数调用图:
这是这个函数的调用关系图:

类成员变量说明

◆ active_depth_

const std::size_t LMCAS::detail::RewriteBudget::Measurement::active_depth_
private

在文件 rewrite_budget.cpp 第 66 行定义.

被这些函数引用 Measurement() , 以及 visit_child().

◆ budget_

RewriteBudget& LMCAS::detail::RewriteBudget::Measurement::budget_
private

在文件 rewrite_budget.cpp 第 64 行定义.

被这些函数引用 Measurement(), require_bits() , 以及 visit_child().

◆ current_depth

int LMCAS::detail::SymbolicVisitor::current_depth = 0
protectedinherited

◆ MAX_DEPTH

int LMCAS::detail::SymbolicVisitor::MAX_DEPTH = 200
staticconstexprprotectedinherited

在文件 base.hpp 第 219 行定义.

被这些函数引用 LMCAS::detail::SymbolicVisitor::DepthGuard::DepthGuard().

◆ path_depth_

const std::size_t LMCAS::detail::RewriteBudget::Measurement::path_depth_
private

在文件 rewrite_budget.cpp 第 65 行定义.

被这些函数引用 Measurement() , 以及 visit_child().

◆ rewrite_budget_

RewriteBudget* LMCAS::detail::SymbolicVisitor::rewrite_budget_ = nullptr
privateinherited

◆ shape

Shape LMCAS::detail::RewriteBudget::Measurement::shape {1, 1}

在文件 rewrite_budget.cpp 第 35 行定义.

被这些函数引用 LMCAS::detail::RewriteBudget::measure_shape() , 以及 visit_child().


该类的文档由以下文件生成: