GiNaC  1.6.2
flags.h
Go to the documentation of this file.
00001 
00005 /*
00006  *  GiNaC Copyright (C) 1999-2011 Johannes Gutenberg University Mainz, Germany
00007  *
00008  *  This program is free software; you can redistribute it and/or modify
00009  *  it under the terms of the GNU General Public License as published by
00010  *  the Free Software Foundation; either version 2 of the License, or
00011  *  (at your option) any later version.
00012  *
00013  *  This program is distributed in the hope that it will be useful,
00014  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  *  GNU General Public License for more details.
00017  *
00018  *  You should have received a copy of the GNU General Public License
00019  *  along with this program; if not, write to the Free Software
00020  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00021  */
00022 
00023 #ifndef GINAC_FLAGS_H
00024 #define GINAC_FLAGS_H
00025 
00026 namespace GiNaC {
00027 
00029 class expand_options {
00030 public:
00031     enum {
00032         expand_indexed = 0x0001,      
00033         expand_function_args = 0x0002, 
00034         expand_rename_idx = 0x0004 
00035     };
00036 };
00037 
00039 class has_options {
00040 public:
00041     enum {
00042         algebraic = 0x0001              
00043     };
00044 };
00045 
00047 class subs_options {
00048 public:
00049     enum {
00050         no_pattern = 0x0001,             
00051         subs_no_pattern = 0x0001, // for backwards compatibility
00052         algebraic = 0x0002,              
00053         subs_algebraic = 0x0002,  // for backwards compatibility
00054         pattern_is_product = 0x0004,     
00055         pattern_is_not_product = 0x0008, 
00056         no_index_renaming = 0x0010,
00057         // To indicate that we want to substitue an index by something that is
00058         // is not an index. Without this flag the index value would be
00059         // substituted in that case.
00060         really_subs_idx = 0x0020
00061     };
00062 };
00063 
00065 class domain {
00066 public:
00067     enum {
00068         complex,
00069         real,
00070         positive
00071     };
00072 };
00073 
00075 class series_options {
00076 public:
00077     enum {
00082         suppress_branchcut = 0x0001
00083     };
00084 };
00085 
00087 class determinant_algo {
00088 public:
00089     enum {
00092         automatic,
00101         gauss,
00113         divfree,
00119         laplace,
00135         bareiss
00136     };
00137 };
00138 
00140 class solve_algo {
00141 public:
00142     enum {
00145         automatic,
00155         gauss,
00167         divfree,
00184         bareiss
00185     };
00186 };
00187 
00190 class status_flags {
00191 public:
00192     enum {
00193         dynallocated    = 0x0001, 
00194         evaluated       = 0x0002, 
00195         expanded        = 0x0004, 
00196         hash_calculated = 0x0008, 
00197         not_shareable   = 0x0010, 
00198         has_indices = 0x0020,
00199         has_no_indices  = 0x0040  // ! (has_indices || has_no_indices) means "don't know"
00200     };
00201 };
00202 
00204 class info_flags {
00205 public:
00206     enum {
00207         // answered by class numeric, add, mul and symbols/constants in particular domains
00208         numeric,
00209         real,
00210         rational,
00211         integer,
00212         crational,
00213         cinteger,
00214         positive,
00215         negative,
00216         nonnegative,
00217         posint,
00218         negint,
00219         nonnegint,
00220         even,
00221         odd,
00222         prime,
00223 
00224         // answered by class relation
00225         relation,
00226         relation_equal,
00227         relation_not_equal,
00228         relation_less,
00229         relation_less_or_equal,
00230         relation_greater,
00231         relation_greater_or_equal,
00232 
00233         // answered by class symbol
00234         symbol,
00235 
00236         // answered by class lst
00237         list,
00238 
00239         // answered by class exprseq
00240         exprseq,
00241 
00242         // answered by classes numeric, symbol, add, mul, power
00243         polynomial,
00244         integer_polynomial,
00245         cinteger_polynomial,
00246         rational_polynomial,
00247         crational_polynomial,
00248         rational_function,
00249         algebraic,
00250 
00251         // answered by class indexed
00252         indexed,      // class can carry indices
00253         has_indices,  // object has at least one index
00254 
00255         // answered by class idx
00256         idx,
00257 
00258         // answered by classes numeric, symbol, add, mul, power
00259         expanded
00260     };
00261 };
00262 
00263 class return_types {
00264 public:
00265     enum {
00266         commutative,
00267         noncommutative,
00268         noncommutative_composite
00269     };
00270 };
00271 
00274 class remember_strategies {
00275 public:
00276     enum {
00277         delete_never,   
00278         delete_lru,     
00279         delete_lfu,     
00280         delete_cyclic   
00281     };
00282 };
00283 
00285 class factor_options {
00286 public:
00287     enum {
00288         polynomial = 0x0000, 
00289         all        = 0x0001  
00290     };
00291 };
00292 
00293 } // namespace GiNaC
00294 
00295 #endif // ndef GINAC_FLAGS_H

This page is part of the GiNaC developer's reference. It was generated automatically by doxygen. For an introduction, see the tutorial.