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