- fixes to the indentation
[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_NAMESPACE_GINAC
27 namespace GiNaC {
28 #endif // ndef NO_NAMESPACE_GINAC
29
30 class expand_options {
31 public:
32         enum {
33                 expand_trigonometric = 0x0001
34         };
35 };
36
37 class series_options {
38 public:
39         enum {
40                 suppress_branchcut = 0x0001
41         };
42 };
43
44 class determinant_algo {
45 public:
46         enum {
47                 automatic,
48                 gauss,
49                 divfree,
50                 laplace,
51                 bareiss
52         };
53 };
54
55 class solve_algo {
56 public:
57         enum {
58                 automatic,
59                 gauss,
60                 divfree,
61                 bareiss
62         };
63 };
64
65 class status_flags {
66 public:
67         enum {
68                 dynallocated    = 0x0001,
69                 evaluated       = 0x0002,
70                 expanded        = 0x0004,
71                 hash_calculated = 0x0008
72         };
73 };
74
75 /** Possible attributes an object can have. */
76 class info_flags {
77 public:
78         enum {
79                 // answered by class numeric
80                 numeric,
81                 real,
82                 rational,
83                 integer,
84                 crational,
85                 cinteger,
86                 positive,
87                 negative,
88                 nonnegative,
89                 posint,
90                 negint,
91                 nonnegint,
92                 even,
93                 odd,
94                 prime,
95
96                 // answered by class relation
97                 relation,
98                 relation_equal,
99                 relation_not_equal,
100                 relation_less,
101                 relation_less_or_equal,
102                 relation_greater,
103                 relation_greater_or_equal,
104
105                 // answered by class symbol
106                 symbol,
107
108                 // answered by class lst
109                 list,
110
111                 // answered by class exprseq
112                 exprseq,
113
114                 // answered by classes numeric, symbol, add, mul, power
115                 polynomial,
116                 integer_polynomial,
117                 cinteger_polynomial,
118                 rational_polynomial,
119                 crational_polynomial,
120                 rational_function,
121                 algebraic,
122
123                 // answered by class indexed
124                 indexed,      // class can carry indices
125                 has_indices,  // object has at least one index
126
127                 // answered by class idx
128                 idx,
129
130                 // answered by class coloridx
131                 coloridx,
132
133                 // answered by class lorentzidx
134                 lorentzidx
135         };
136 };
137
138 class return_types {
139 public:
140         enum {
141                 commutative,
142                 noncommutative,
143                 noncommutative_composite
144         };
145 };
146
147 class csrc_types {
148 public:
149         enum {
150                 ctype_float,
151                 ctype_double,
152                 ctype_cl_N
153         };
154 };
155
156 class remember_strategies {
157 public:
158         enum {
159                 delete_never, // let table grow undefinitely, not recommmended, but currently default
160                 delete_lru,   // least recently used
161                 delete_lfu,   // least frequently used
162                 delete_cyclic // first (oldest) one in list
163         };
164 };
165
166 #ifndef NO_NAMESPACE_GINAC
167 } // namespace GiNaC
168 #endif // ndef NO_NAMESPACE_GINAC
169
170 #endif // ndef __GINAC_FLAGS_H__