Documentation of CSL
enum.h
Go to the documentation of this file.
1 // This file is part of MARTY.
2 //
3 // MARTY is free software: you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation, either version 3 of the License, or
6 // (at your option) any later version.
7 //
8 // MARTY is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with MARTY. If not, see <https://www.gnu.org/licenses/>.
15 
21 #ifndef ENUM_H_INCLUDED
22 #define ENUM_H_INCLUDED
23 
24 #include <iostream>
25 
26 namespace csl {
27 
31  enum class PrimaryType {
32 
33  Arbitrary=-1,
34  Numerical,
35  Literal,
36  MultiFunction=10,
38  ScalarFunction=20,
40  Vectorial=50,
41  Indicial=60,
42  Field=70,
43  };
44 
47  enum class Type {
48 
49  InheritanceType=-2,
50  NoType=-1,
52  Integer,
53  Float,
54  IntFraction,
55  IntFactorial,
56  Complex,
58  Imaginary,
59  Constant,
60  Variable,
61  Exp,
62  Log,
63  DiracDelta,
64  Abs,
65  Cos,
66  Sin,
67  Tan,
68  Cosh,
69  Sinh,
70  Tanh,
71  ACos,
72  ASin,
73  ATan,
74  ACosh,
75  ASinh,
76  ATanh,
77  Scalar,
78  RealPart,
83  ScalarField,
85  TDerivativeElement, /*<!Abstract specialized in
86  TDerivativeElement */
87 
88  StandardDuo,
89  StandardMult,
90  Pow,
91  Prod,
92  Sum,
93  Polynomial,
94  Derivative,
95  Commutator,
96  Angle,
97  Factorial,
98  Integral,
102  Vector,
103  Matrix,
104  HighDTensor,
105  // Type extensions for further librairies
106  };
107 
114 std::ostream& operator<<(std::ostream& fout, csl::Type type);
115 
121 std::ostream& operator<<(std::ostream& fout, csl::PrimaryType primaryType);
122 
127 enum class ComplexProperty{
128 
132  Complex,
136  Real,
140  Imaginary,
141 };
142 
143 } // End of namespace csl
144 
145 #endif
Namespace for csl library.
Definition: abreviation.h:34
Definition: tensorField.h:264
Type
Enum of the different types of Abstract (i.e. list of all possible specializations).
Definition: enum.h:47
ComplexProperty
Contains all possible complex properties of objects. Real, purely imaginary, or complex.
Definition: enum.h:127
PrimaryType
Stores enumerations of types for Abstract objects.
Definition: enum.h:31
Arbitrary object that can enter mathematical expressions.
Definition: comparison.h:48