cc735b64a206648d124357d6ba9bf9e7ba5af943
[ginac.git] / ginac / flags.h
1 /** @file flags.h
2  *
3  *  Collection of all flags used through the GiNaC framework.
4  *
5  *  GiNaC Copyright (C) 1999 Johannes Gutenberg University Mainz, Germany
6  *
7  *  This program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 2 of the License, or
10  *  (at your option) any later version.
11  *
12  *  This program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with this program; if not, write to the Free Software
19  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  */
21
22 #ifndef __GINAC_FLAGS_H__
23 #define __GINAC_FLAGS_H__
24
25 class expand_options {
26 public:
27     enum { expand_trigonometric      = 0x0001
28          };
29 };
30
31 class status_flags {
32 public:
33     enum { dynallocated              = 0x0001,
34            evaluated                 = 0x0002,
35            expanded                  = 0x0004,
36            hash_calculated           = 0x0008
37          };
38 };
39
40 class info_flags {
41 public:
42     enum { 
43            // answered by class numeric
44            numeric,
45            real,
46            rational,
47            integer,
48            positive,
49            negative,
50            nonnegative,
51            posint,
52            negint,
53            nonnegint,
54            even,
55            odd,
56            prime,
57
58            // answered by class relation
59            relation,
60            relation_equal,
61            relation_not_equal,
62            relation_less,
63            relation_less_or_equal,
64            relation_greater,
65            relation_greater_or_equal,
66
67            // answered by class symbol
68            symbol,
69
70            // answered by class lst
71            list,
72
73            // answered by class exprseq
74            exprseq,
75
76            // answered by classes numeric, symbol, add, mul, power
77            polynomial,
78            integer_polynomial,
79            rational_polynomial,
80            rational_function,
81
82            // answered by class ex
83            normal_form,
84            
85            // answered by class indexed
86            indexed,      // class can carry indices
87            has_indices,  // object has at least one index
88
89            // answered by class idx
90            idx,
91
92            // answered by class coloridx
93            coloridx,
94
95            // answered by class lorentzidx
96            lorentzidx
97     };
98 };
99
100 class return_types {
101 public:
102     enum { commutative, noncommutative, noncommutative_composite};
103 };
104
105 class csrc_types {
106 public:
107         enum {
108                 ctype_float,
109                 ctype_double,
110                 ctype_cl_N
111         };
112 };
113
114 #endif // ndef __GINAC_FLAGS_H__