LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
LMCAS::ComputationContext类 参考

#include <computation_context.hpp>

LMCAS::ComputationContext 的协作图:

Public 成员函数

 ComputationContext (ComputationContext &&)=delete
 ComputationContext (const ComputationContext &)=delete
 ComputationContext (ResourceLimits limits={}, CancellationToken cancellation={})
Result< void > add_diagnostic (Diagnostic diagnostic)
const std::shared_ptr< const AssumptionContext > & assumptions () const noexcept
const CancellationToken & cancellation () const noexcept
Result< void > consume_steps (std::size_t amount=1, const std::string &operation={})
const DiagnosticEngine & diagnostic_engine () const noexcept
const std::vector< Diagnostic > & diagnostics () const noexcept
Result< void > enter_recursion (const std::string &operation={})
void leave_recursion () noexcept
const ResourceLimits & limits () const noexcept
ComputationContext & operator= (ComputationContext &&)=delete
ComputationContext & operator= (const ComputationContext &)=delete
std::size_t recursion_depth () const noexcept
Result< void > require_ast_nodes (std::size_t amount, const std::string &operation={}) const
Result< void > require_expansion_terms (std::size_t amount, const std::string &operation={}) const
Result< void > require_input_bytes (std::size_t amount, const std::string &operation={}) const
Result< void > require_integer_bits (std::size_t amount, const std::string &operation={}) const
Result< void > set_assumptions (std::shared_ptr< const AssumptionContext > assumptions, const std::string &operation={})
Result< void > set_diagnostic_consumer (DiagnosticEngine::Consumer consumer, const std::string &operation={})
std::size_t steps_used () const noexcept
const UnitSystem & units () const noexcept
UnitSystem & units () noexcept

Private 成员函数

Result< void > check_access (const std::string &operation) const

Private 属性

std::shared_ptr< const AssumptionContext > assumptions_
CancellationToken cancellation_
DiagnosticEngine diagnostic_engine_
ResourceLimits limits_
const std::thread::id owner_thread_
std::size_t recursion_depth_ = 0
std::size_t steps_used_ = 0
UnitSystem units_

详细描述

在文件 computation_context.hpp 第 99 行定义.

构造及析构函数说明

◆ ComputationContext() [1/3]

LMCAS::ComputationContext::ComputationContext ( ResourceLimits limits = {},
CancellationToken cancellation = {} )
inlineexplicit

在文件 computation_context.hpp 第 101 行定义.

101 {},
102 CancellationToken cancellation = {})
104 owner_thread_(std::this_thread::get_id()),
105 diagnostic_engine_(limits.max_diagnostics) {}
const CancellationToken & cancellation() const noexcept
const ResourceLimits & limits() const noexcept

引用了 limits().

被这些函数引用 ComputationContext(), ComputationContext(), operator=() , 以及 operator=().

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

◆ ComputationContext() [2/3]

LMCAS::ComputationContext::ComputationContext ( const ComputationContext & )
delete

引用了 ComputationContext().

函数调用图:

◆ ComputationContext() [3/3]

LMCAS::ComputationContext::ComputationContext ( ComputationContext && )
delete

引用了 ComputationContext().

函数调用图:

成员函数说明

◆ add_diagnostic()

Result< void > LMCAS::ComputationContext::add_diagnostic ( Diagnostic diagnostic)
inline

在文件 computation_context.hpp 第 187 行定义.

187 {
188 auto access = check_access(diagnostic.operation);
189 if (!access) return access;
190 return diagnostic_engine_.emit(std::move(diagnostic));
191 }
Result< void > check_access(const std::string &operation) const
Result< void > emit(Diagnostic diagnostic)

引用了 check_access(), diagnostic_engine_, LMCAS::DiagnosticEngine::emit() , 以及 LMCAS::Diagnostic::operation.

函数调用图:

◆ assumptions()

const std::shared_ptr< const AssumptionContext > & LMCAS::ComputationContext::assumptions ( ) const
inlinenoexcept

在文件 computation_context.hpp 第 222 行定义.

222 {
223 return assumptions_;
224 }
std::shared_ptr< const AssumptionContext > assumptions_

引用了 assumptions_.

被这些函数引用 LMCAS::anonymous_namespace{inequality_solver_parametric.cpp}::linear_interval(), set_assumptions(), LMCAS::anonymous_namespace{inequality_solver_parametric.cpp}::simplify_coefficients() , 以及 LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::square_relation().

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

◆ cancellation()

const CancellationToken & LMCAS::ComputationContext::cancellation ( ) const
inlinenoexcept

在文件 computation_context.hpp 第 210 行定义.

210{ return cancellation_; }

引用了 cancellation_.

◆ check_access()

Result< void > LMCAS::ComputationContext::check_access ( const std::string & operation) const
inlineprivate

在文件 computation_context.hpp 第 227 行定义.

227 {
228 if (std::this_thread::get_id() != owner_thread_) {
231 "ComputationContext cannot be shared across threads",
232 operation);
233 }
236 "computation was cancelled", operation);
237 }
238 return Result<void>::success();
239 }
static Result failure(CasErrc code, std::string message, std::string operation={})
static Result success(T value)

引用了 cancellation_, LMCAS::Cancelled, LMCAS::Result< T >::failure(), LMCAS::InternalInvariant, LMCAS::CancellationToken::is_cancelled(), owner_thread_ , 以及 LMCAS::Result< T >::success().

被这些函数引用 add_diagnostic().

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

◆ consume_steps()

Result< void > LMCAS::ComputationContext::consume_steps ( std::size_t amount = 1,
const std::string & operation = {} )
inline

在文件 computation_context.hpp 第 112 行定义.

113 {}) {
114 auto access = check_access(operation);
115 if (!access) return access;
117 amount > limits_.max_steps - steps_used_) {
119 "computation step budget exhausted", operation);
120 }
121 steps_used_ += amount;
122 return Result<void>::success();
123 }
std::size_t max_steps
Cumulative checked steps.

被这些函数引用 LMCAS::detail::RewriteBudget::append_size(), LMCAS::detail::RewriteBudget::check_step_access(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::collect(), LMCAS::detail::AssumptionFacts::collect_names(), LMCAS::detail::RewriteBudget::commit_step(), LMCAS::anonymous_namespace{differential_geometry.cpp}::exterior_derivative_term(), LMCAS::anonymous_namespace{assumption_context.cpp}::has_visible_proof(), LMCAS::detail::RewriteBudget::measure_shape(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::multiply(), LMCAS::anonymous_namespace{poly_utils.cpp}::normalize_coefficient(), LMCAS::anonymous_namespace{symbolic_gcd.cpp}::polynomial_term_to_expression(), LMCAS::detail::NumericEvaluator::power(), LMCAS::detail::NumericEvaluator::product(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::reduce_radicals(), LMCAS::detail::NumericEvaluator::square_root(), LMCAS::detail::ExactBoundArithmetic::step(), LMCAS::anonymous_namespace{poly_utils.cpp}::trim_checked_coefficients(), LMCAS::multivariate_checked_detail::verify_linear_assignment() , 以及 LMCAS::zc_try_candidate().

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

◆ diagnostic_engine()

const DiagnosticEngine & LMCAS::ComputationContext::diagnostic_engine ( ) const
inlinenoexcept

在文件 computation_context.hpp 第 199 行定义.

199 {
200 return diagnostic_engine_;
201 }

引用了 diagnostic_engine_.

◆ diagnostics()

const std::vector< Diagnostic > & LMCAS::ComputationContext::diagnostics ( ) const
inlinenoexcept

在文件 computation_context.hpp 第 196 行定义.

196 {
198 }
const std::vector< Diagnostic > & diagnostics() const noexcept

引用了 diagnostic_engine_ , 以及 LMCAS::DiagnosticEngine::diagnostics().

函数调用图:

◆ enter_recursion()

Result< void > LMCAS::ComputationContext::enter_recursion ( const std::string & operation = {})
inline

在文件 computation_context.hpp 第 125 行定义.

125 {}) {
126 auto step = consume_steps(1, operation);
127 if (!step) return step;
130 "recursion depth limit exceeded", operation);
131 }
133 return Result<void>::success();
134 }
Result< void > consume_steps(std::size_t amount=1, const std::string &operation={})
std::size_t max_recursion_depth
Simultaneous checked depth.

被这些函数引用 LMCAS::serialization_detail::Recursion::Recursion(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::collect(), LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::convert(), LMCAS::detail::RewriteBudget::enter(), LMCAS::detail::NumericEvaluator::evaluate() , 以及 LMCAS::anonymous_namespace{residual_verification.cpp}::FormalResidual::reduce_radicals().

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

◆ leave_recursion()

void LMCAS::ComputationContext::leave_recursion ( )
inlinenoexcept

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

136 {
138 }

引用了 recursion_depth_.

被这些函数引用 LMCAS::serialization_detail::Recursion::~Recursion() , 以及 LMCAS::detail::RewriteBudget::leave().

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

◆ limits()

const ResourceLimits & LMCAS::ComputationContext::limits ( ) const
inlinenoexcept

在文件 computation_context.hpp 第 193 行定义.

193{ return limits_; }

引用了 limits_.

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

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

◆ operator=() [1/2]

ComputationContext & LMCAS::ComputationContext::operator= ( ComputationContext && )
delete

引用了 ComputationContext().

函数调用图:

◆ operator=() [2/2]

ComputationContext & LMCAS::ComputationContext::operator= ( const ComputationContext & )
delete

引用了 ComputationContext().

函数调用图:

◆ recursion_depth()

std::size_t LMCAS::ComputationContext::recursion_depth ( ) const
inlinenoexcept

在文件 computation_context.hpp 第 195 行定义.

195{ return recursion_depth_; }

引用了 recursion_depth_.

被这些函数引用 LMCAS::detail::RewriteBudget::require_shape().

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

◆ require_ast_nodes()

Result< void > LMCAS::ComputationContext::require_ast_nodes ( std::size_t amount,
const std::string & operation = {} ) const
inline

在文件 computation_context.hpp 第 140 行定义.

141 {}) const {
142 auto access = check_access(operation);
143 if (!access) return access;
144 if (amount > limits_.max_ast_nodes) {
146 "AST node budget exhausted", operation);
147 }
148 return Result<void>::success();
149 }
std::size_t max_ast_nodes
Reference-expanded nodes per AST or output forest.

被这些函数引用 LMCAS::detail::RewriteBudget::require_nodes().

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

◆ require_expansion_terms()

Result< void > LMCAS::ComputationContext::require_expansion_terms ( std::size_t amount,
const std::string & operation = {} ) const
inline

◆ require_input_bytes()

Result< void > LMCAS::ComputationContext::require_input_bytes ( std::size_t amount,
const std::string & operation = {} ) const
inline

在文件 computation_context.hpp 第 175 行定义.

176 {}) const {
177 auto access = check_access(operation);
178 if (!access) return access;
179 if (amount > limits_.max_input_bytes) {
182 "input byte budget exceeded", operation);
183 }
184 return Result<void>::success();
185 }
std::size_t max_input_bytes
One checked input buffer.

◆ require_integer_bits()

Result< void > LMCAS::ComputationContext::require_integer_bits ( std::size_t amount,
const std::string & operation = {} ) const
inline

◆ set_assumptions()

Result< void > LMCAS::ComputationContext::set_assumptions ( std::shared_ptr< const AssumptionContext > assumptions,
const std::string & operation = {} )
inline

在文件 computation_context.hpp 第 214 行定义.

216 {}) {
217 auto access = check_access(operation);
218 if (!access) return access;
219 assumptions_ = std::move(assumptions);
220 return Result<void>::success();
221 }
const std::shared_ptr< const AssumptionContext > & assumptions() const noexcept

引用了 assumptions().

函数调用图:

◆ set_diagnostic_consumer()

Result< void > LMCAS::ComputationContext::set_diagnostic_consumer ( DiagnosticEngine::Consumer consumer,
const std::string & operation = {} )
inline

在文件 computation_context.hpp 第 202 行定义.

204 {}) {
205 auto access = check_access(operation);
206 if (!access) return access;
207 diagnostic_engine_.set_consumer(std::move(consumer));
208 return Result<void>::success();
209 }
void set_consumer(Consumer consumer)

◆ steps_used()

std::size_t LMCAS::ComputationContext::steps_used ( ) const
inlinenoexcept

在文件 computation_context.hpp 第 194 行定义.

194{ return steps_used_; }

引用了 steps_used_.

◆ units() [1/2]

const UnitSystem & LMCAS::ComputationContext::units ( ) const
inlinenoexcept

在文件 computation_context.hpp 第 212 行定义.

引用了 units_.

◆ units() [2/2]

UnitSystem & LMCAS::ComputationContext::units ( )
inlinenoexcept

在文件 computation_context.hpp 第 211 行定义.

211{ return units_; }

引用了 units_.

类成员变量说明

◆ assumptions_

std::shared_ptr<const AssumptionContext> LMCAS::ComputationContext::assumptions_
private

在文件 computation_context.hpp 第 244 行定义.

被这些函数引用 assumptions().

◆ cancellation_

CancellationToken LMCAS::ComputationContext::cancellation_
private

在文件 computation_context.hpp 第 242 行定义.

被这些函数引用 cancellation() , 以及 check_access().

◆ diagnostic_engine_

DiagnosticEngine LMCAS::ComputationContext::diagnostic_engine_
private

在文件 computation_context.hpp 第 247 行定义.

被这些函数引用 add_diagnostic(), diagnostic_engine() , 以及 diagnostics().

◆ limits_

ResourceLimits LMCAS::ComputationContext::limits_
private

在文件 computation_context.hpp 第 241 行定义.

被这些函数引用 limits().

◆ owner_thread_

const std::thread::id LMCAS::ComputationContext::owner_thread_
private

在文件 computation_context.hpp 第 243 行定义.

被这些函数引用 check_access().

◆ recursion_depth_

std::size_t LMCAS::ComputationContext::recursion_depth_ = 0
private

在文件 computation_context.hpp 第 246 行定义.

被这些函数引用 leave_recursion() , 以及 recursion_depth().

◆ steps_used_

std::size_t LMCAS::ComputationContext::steps_used_ = 0
private

在文件 computation_context.hpp 第 245 行定义.

被这些函数引用 steps_used().

◆ units_

UnitSystem LMCAS::ComputationContext::units_
private

在文件 computation_context.hpp 第 248 行定义.

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


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