Loading...
Searching...
No Matches
codegen.h
1#ifndef SYMENGINE_CODEGEN_H
2#define SYMENGINE_CODEGEN_H
3
4#include <symengine/visitor.h>
5#include <symengine/printers/strprinter.h>
6#include <symengine/symengine_exception.h>
7
8namespace SymEngine
9{
10
11class CodePrinter : public BaseVisitor<CodePrinter, StrPrinter>
12{
13public:
14 using StrPrinter::apply;
15 using StrPrinter::bvisit;
16 using StrPrinter::str_;
17 void bvisit(const Basic &x);
18 void bvisit(const Complex &x);
19 void bvisit(const Interval &x);
20 void bvisit(const Contains &x);
21 void bvisit(const Piecewise &x);
22 void bvisit(const Rational &x);
23 void bvisit(const EmptySet &x);
24 void bvisit(const FiniteSet &x);
25 void bvisit(const Reals &x);
26 void bvisit(const Rationals &x);
27 void bvisit(const Integers &x);
28 void bvisit(const UniversalSet &x);
29 void bvisit(const Abs &x);
30 void bvisit(const Ceiling &x);
31 void bvisit(const Truncate &x);
32 void bvisit(const Max &x);
33 void bvisit(const Min &x);
34 void bvisit(const Constant &x);
35 void bvisit(const NaN &x);
36 void bvisit(const Equality &x);
37 void bvisit(const Unequality &x);
38 void bvisit(const LessThan &x);
39 void bvisit(const StrictLessThan &x);
40 void bvisit(const UnivariateSeries &x);
41 void bvisit(const Derivative &x);
42 void bvisit(const Subs &x);
43 void bvisit(const GaloisField &x);
44};
45
46class C89CodePrinter : public BaseVisitor<C89CodePrinter, CodePrinter>
47{
48public:
49 using CodePrinter::apply;
50 using CodePrinter::bvisit;
51 using CodePrinter::str_;
52 void bvisit(const Infty &x);
53 void _print_pow(std::ostringstream &o, const RCP<const Basic> &a,
54 const RCP<const Basic> &b) override;
55};
56
57class C99CodePrinter : public BaseVisitor<C99CodePrinter, C89CodePrinter>
58{
59public:
60 using C89CodePrinter::apply;
61 using C89CodePrinter::bvisit;
62 using C89CodePrinter::str_;
63 void bvisit(const Infty &x);
64 void _print_pow(std::ostringstream &o, const RCP<const Basic> &a,
65 const RCP<const Basic> &b) override;
66 void bvisit(const Gamma &x);
67 void bvisit(const LogGamma &x);
68};
69
70class JSCodePrinter : public BaseVisitor<JSCodePrinter, CodePrinter>
71{
72public:
73 using CodePrinter::apply;
74 using CodePrinter::bvisit;
75 using CodePrinter::str_;
76 void bvisit(const Constant &x);
77 void _print_pow(std::ostringstream &o, const RCP<const Basic> &a,
78 const RCP<const Basic> &b) override;
79 void bvisit(const Abs &x);
80 void bvisit(const Sin &x);
81 void bvisit(const Cos &x);
82 void bvisit(const Max &x);
83 void bvisit(const Min &x);
84};
85} // namespace SymEngine
86
87#endif // SYMENGINE_CODEGEN_H
The lowest unit of symbolic representation.
Definition: basic.h:97
Complex Class.
Definition: complex.h:33
Rational Class.
Definition: rational.h:16
UnivariateSeries Class.
Main namespace for SymEngine package.
Definition: add.cpp:19