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