- rotate_31() and golden_hash_ratio() moved to utils.h
[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 namespace GiNaC {
27
28 class expand_options {
29 public:
30     enum { expand_trigonometric      = 0x0001
31          };
32 };
33
34 class status_flags {
35 public:
36     enum { dynallocated              = 0x0001,
37            evaluated                 = 0x0002,
38            expanded                  = 0x0004,
39            hash_calculated           = 0x0008
40          };
41 };
42
43 class info_flags {
44 public:
45     enum { 
46            // answered by class numeric
47            numeric,
48            real,
49            rational,
50            integer,
51            positive,
52            negative,
53            nonnegative,
54            posint,
55            negint,
56            nonnegint,
57            even,
58            odd,
59            prime,
60
61            // answered by class relation
62            relation,
63            relation_equal,
64            relation_not_equal,
65            relation_less,
66            relation_less_or_equal,
67            relation_greater,
68            relation_greater_or_equal,
69
70            // answered by class symbol
71            symbol,
72
73            // answered by class lst
74            list,
75
76            // answered by class exprseq
77            exprseq,
78
79            // answered by classes numeric, symbol, add, mul, power
80            polynomial,
81            integer_polynomial,
82            rational_polynomial,
83            rational_function,
84
85            // answered by class ex
86            normal_form,
87            
88            // answered by class indexed
89            indexed,      // class can carry indices
90            has_indices,  // object has at least one index
91
92            // answered by class idx
93            idx,
94
95            // answered by class coloridx
96            coloridx,
97
98            // answered by class lorentzidx
99            lorentzidx
100     };
101 };
102
103 class return_types {
104 public:
105     enum { commutative, noncommutative, noncommutative_composite};
106 };
107
108 class csrc_types {
109 public:
110         enum {
111                 ctype_float,
112                 ctype_double,
113                 ctype_cl_N
114         };
115 };
116
117 } // namespace GiNaC
118
119 #endif // ndef __GINAC_FLAGS_H__