unicode.h
1 #ifndef SYMENGINE_UNICODE_H
2 #define SYMENGINE_UNICODE_H
3 
4 #include <symengine/printers/strprinter.h>
5 #include <symengine/printers/stringbox.h>
6 
7 namespace SymEngine
8 {
9 
10 class UnicodePrinter : public BaseVisitor<UnicodePrinter>
11 {
12 private:
13  static const std::vector<std::string> names_;
14  static const std::vector<size_t> lengths_;
15 
16 protected:
17  StringBox box_;
18  StringBox print_mul();
19  void _print_pow(const RCP<const Basic> &a, const RCP<const Basic> &b);
20  std::string get_imag_symbol();
21  StringBox parenthesizeLT(const RCP<const Basic> &x,
22  PrecedenceEnum precedenceEnum);
23  StringBox parenthesizeLE(const RCP<const Basic> &x,
24  PrecedenceEnum precedenceEnum);
25 
26 public:
27  void bvisit(const Basic &x);
28  void bvisit(const Symbol &x);
29  void bvisit(const Integer &x);
30  void bvisit(const Rational &x);
31  void bvisit(const Complex &x);
32  void bvisit(const Interval &x);
33  void bvisit(const Complexes &x);
34  void bvisit(const Reals &x);
35  void bvisit(const Rationals &x);
36  void bvisit(const Integers &x);
37  void bvisit(const EmptySet &x);
38  void bvisit(const UniversalSet &x);
39  void bvisit(const Piecewise &x);
40  void bvisit(const FiniteSet &x);
41  void bvisit(const ConditionSet &x);
42  void bvisit(const Union &x);
43  void bvisit(const Complement &x);
44  void bvisit(const ImageSet &x);
45  void bvisit(const Contains &x);
46 
47  void bvisit(const BooleanAtom &x);
48  void bvisit(const And &x);
49  void bvisit(const Or &x);
50  void bvisit(const Xor &x);
51  void bvisit(const Not &x);
52 
53  void bvisit(const Add &x);
54  void bvisit(const Mul &x);
55  void bvisit(const Pow &x);
56  void bvisit(const Infty &x);
57  void bvisit(const NaN &x);
58  void bvisit(const Constant &x);
59  void bvisit(const Abs &x);
60  void bvisit(const Floor &x);
61  void bvisit(const Ceiling &x);
62  void bvisit(const Function &x);
63 
64  void bvisit(const FunctionSymbol &x);
65  void bvisit(const RealDouble &x);
66  void bvisit(const ComplexDouble &x);
67  void bvisit(const Equality &x);
68  void bvisit(const Unequality &x);
69  void bvisit(const LessThan &x);
70  void bvisit(const StrictLessThan &x);
71  StringBox apply(const RCP<const Basic> &b);
72  StringBox apply(const vec_basic &v);
73  StringBox apply(const Basic &b);
74 };
75 
76 } // namespace SymEngine
77 
78 #endif // SYMENGINE_UNICODE_H
The base class for representing addition in symbolic expressions.
Definition: add.h:27
The lowest unit of symbolic representation.
Definition: basic.h:95
Complex Double Class to hold std::complex<double> values.
Complex Class.
Definition: complex.h:33
Integer Class.
Definition: integer.h:19
Rational Class.
Definition: rational.h:16
RealDouble Class to hold double values.
Definition: real_double.h:20
Main namespace for SymEngine package.
Definition: add.cpp:19