|
VLink
2.0.0
A high-performance communication middleware
|
Thin, ABI-stable facade over the ExprTk mathematical expression engine. More...
Go to the source code of this file.
Classes | |
| class | vlink::ExprtkSymbolTable |
Opaque wrapper around exprtk::symbol_table<double>. More... | |
| class | vlink::ExprtkExpression |
Opaque wrapper around exprtk::expression<double> plus its compiler. More... | |
Namespaces | |
| vlink | |
Macros | |
| #define | VLINK_EXPRTK_API_EXPORT __attribute__((visibility("default"))) |
Thin, ABI-stable facade over the ExprTk mathematical expression engine.
ExprTk (thirdparty/exprtk/include/exprtk/exprtk.hpp) is a header-only template library of roughly 46k lines. Every translation unit that includes it instantiates the full parser/optimizer/evaluator for double, which previously caused the same engine to be compiled into nine separate object files (CLI dump, analyzer, perception, the three webviz converters, and so on). The result was severe object-code bloat and long compile times.
This header exposes the small subset of ExprTk that VLink actually uses behind two opaque PIMPL classes. The real ExprTk templates are compiled exactly once, inside the vlink::exprtk_api shared library; consumers include only this header and link vlink::exprtk_api, so ExprTk never enters their translation units again.
std::vector up front).double, which matches every existing VLink call site. Only a single vlink::ExprtkSymbolTable may be registered into a given vlink::ExprtkExpression, but one symbol table may be registered into many expressions to share variable storage. | #define VLINK_EXPRTK_API_EXPORT __attribute__((visibility("default"))) |