3#include <symengine/printers/codegen.h>
27 const std::string& name,
const types::IType& type,
bool use_initializer =
false,
bool use_alignment =
false
43class CPPSymbolicPrinter :
public SymEngine::BaseVisitor<CPPSymbolicPrinter, SymEngine::CodePrinter> {
46 std::string external_prefix_;
49 using SymEngine::CodePrinter::apply;
50 using SymEngine::CodePrinter::bvisit;
51 using SymEngine::CodePrinter::str_;
54 void bvisit(
const SymEngine::Infty& x);
55 void bvisit(
const SymEngine::BooleanAtom& x);
56 void bvisit(
const SymEngine::Symbol& x);
59 void bvisit(
const SymEngine::And& x);
61 void bvisit(
const SymEngine::Not& x);
62 void bvisit(
const SymEngine::Equality& x);
63 void bvisit(
const SymEngine::Unequality& x);
66 void bvisit(
const SymEngine::Min& x);
67 void bvisit(
const SymEngine::Max& x);
68 void bvisit(
const SymEngine::FunctionSymbol& x);
71 std::ostringstream& o,
72 const SymEngine::RCP<const SymEngine::Basic>& a,
73 const SymEngine::RCP<const SymEngine::Basic>& b
77 : function_(function), external_prefix_(external_prefix) {
std::string tasklet(const data_flow::Tasklet &tasklet) override
std::string subset(const types::IType &type, const data_flow::Subset &subset) override
std::string expression(const symbolic::Expression expr) override
std::string access_node(const data_flow::AccessNode &node) override
std::string zero(const types::PrimitiveType prim_type) override
std::string primitive_type(const types::PrimitiveType prim_type) override
std::string declaration(const std::string &name, const types::IType &type, bool use_initializer=false, bool use_alignment=false) override
CPPLanguageExtension(sdfg::Function &function, const std::string &external_prefix="")
Definition cpp_language_extension.h:16
const std::string language() const override
Definition cpp_language_extension.h:20
std::string type_cast(const std::string &name, const types::IType &type) override
void bvisit(const SymEngine::Unequality &x)
void bvisit(const SymEngine::Not &x)
void bvisit(const SymEngine::And &x)
void bvisit(const SymEngine::Symbol &x)
void bvisit(const SymEngine::Min &x)
CPPSymbolicPrinter(sdfg::Function &function, const std::string &external_prefix="")
Definition cpp_language_extension.h:76
void _print_pow(std::ostringstream &o, const SymEngine::RCP< const SymEngine::Basic > &a, const SymEngine::RCP< const SymEngine::Basic > &b) override
void bvisit(const SymEngine::FunctionSymbol &x)
void bvisit(const SymEngine::Or &x)
void bvisit(const SymEngine::BooleanAtom &x)
void bvisit(const SymEngine::Infty &x)
void bvisit(const SymEngine::Max &x)
void bvisit(const SymEngine::Equality &x)
Statement and control-flow syntax shared by the C family (C, C++, CUDA, HIP).
Definition c_style_language_extension.h:9
const std::string & external_prefix() const
Definition language_extension.h:51
Node representing access to a data container in the dataflow graph.
Definition access_node.h:84
Simple computational operation in the dataflow graph.
Definition tasklet.h:348
Abstract base interface for all types in the sdfglib type system.
Definition type.h:625
SymEngine::RCP< const SymEngine::Basic > Expression
Reference-counted pointer to a symbolic expression (SymEngine Basic).
Definition symbolic.h:83
Definition argument_registry.h:10
symbolic::MultiExpression Subset
Type alias for a subset specification (array of symbolic expressions).
Definition memlet.h:103
PrimitiveType
Enumeration of all primitive data types supported by sdfglib.
Definition type.h:35
Symbolic system for integer-based symbol analysis.
Core type system definitions for sdfglib.