#ifndef around namespace GiNaC { }
[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 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            positive,
54            negative,
55            nonnegative,
56            posint,
57            negint,
58            nonnegint,
59            even,
60            odd,
61            prime,
62
63            // answered by class relation
64            relation,
65            relation_equal,
66            relation_not_equal,
67            relation_less,
68            relation_less_or_equal,
69            relation_greater,
70            relation_greater_or_equal,
71
72            // answered by class symbol
73            symbol,
74
75            // answered by class lst
76            list,
77
78            // answered by class exprseq
79            exprseq,
80
81            // answered by classes numeric, symbol, add, mul, power
82            polynomial,
83            integer_polynomial,
84            rational_polynomial,
85            rational_function,
86
87            // answered by class ex
88            normal_form,
89            
90            // answered by class indexed
91            indexed,      // class can carry indices
92            has_indices,  // object has at least one index
93
94            // answered by class idx
95            idx,
96
97            // answered by class coloridx
98            coloridx,
99
100            // answered by class lorentzidx
101            lorentzidx
102     };
103 };
104
105 class return_types {
106 public:
107     enum { commutative, noncommutative, noncommutative_composite};
108 };
109
110 class csrc_types {
111 public:
112         enum {
113                 ctype_float,
114                 ctype_double,
115                 ctype_cl_N
116         };
117 };
118
119 #ifndef NO_GINAC_NAMESPACE
120 } // namespace GiNaC
121 #endif // ndef NO_GINAC_NAMESPACE
122
123 #endif // ndef __GINAC_FLAGS_H__