00001 /* Copyright (C) 2000, 2001 Stefan Buehler <sbuehler@uni-bremen.de> 00002 Patrick Eriksson <patrick@rss.chalmers.se> 00003 00004 This program is free software; you can redistribute it and/or modify it 00005 under the terms of the GNU General Public License as published by the 00006 Free Software Foundation; either version 2, or (at your option) any 00007 later version. 00008 00009 This program is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 GNU General Public License for more details. 00013 00014 You should have received a copy of the GNU General Public License 00015 along with this program; if not, write to the Free Software 00016 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 00017 USA. */ 00018 00105 #ifndef arts_h 00106 #define arts_h 00107 00108 #include <cstddef> 00109 #include <cstdlib> 00110 00111 using namespace std; 00112 00113 //----------< First of all, include the configuration header >---------- 00114 // This header is generated by the configure script. 00115 #if HAVE_CONFIG_H 00116 #include <config.h> 00117 #endif 00118 // FIXME: Put an else clause here that stops the compilation with an 00119 // error message. 00120 00121 //----------< Standard library header files: >---------- 00122 00123 // Decided that not all standard headers should be included 00124 // everywhere. Now, each header file of ARTS must include the standad 00125 // header files that it needs. Only the most basic ones are included 00126 // here, notably our local sstream implementation. Also cassert. 00127 00128 // #include <iostream> // Standard stream library 00129 // #include <iomanip> 00130 // #include <fstream> 00131 // #include <string> // Standard string library 00132 // #include <vector> 00133 // #include <map> 00134 // #include <stdarg.h> 00135 // #include <math.h> 00136 // #include <cfloat> 00137 // #include <typeinfo> 00138 // #include <stdexcept> 00139 // #include <algorithm> 00140 // #include <ctype.h> 00141 // #include <climits> 00142 00143 //--------------------< Set floating point type >-------------------- 00147 typedef NUMERIC Numeric; 00148 00149 //--------------------< Set integer type >-------------------- 00153 typedef INDEX Index; 00154 00155 //--------------------< Set string type >-------------------- 00158 //typedef string String; 00159 00160 // Declare the existance of class Array: 00161 template<class base> 00162 class Array; 00163 00165 typedef Array<Index> ArrayOfIndex; 00166 00168 typedef Array<Numeric> ArrayOfNumeric; 00169 00170 00171 00172 00173 //--------------------< Set NDEBUG? >-------------------- 00174 /* Define this in order to turn off all debuggin features (TNT range 00175 checking, assertions, ...) */ 00176 #undef NDEBUG 00177 //#define NDEBUG 1 00178 00179 // C Assert macro: 00180 // Could be moved to config.h in the future. This must be included 00181 // *after* the definition of NDEBUG, since NDEBUG changes the 00182 // behaviour of assert (assert does nothing if NDEBUG is set). 00183 #include <cassert> 00184 00185 00186 //-----------< define a quick output for std::vector<> >---------- 00187 /* A quick hack output for std::vector<>. This is only for 00188 debugging purposes. 00189 \return As for all output operator functions, the output stream is 00190 returned. 00191 \param os Output stream 00192 \param v Vector to print 00193 \author SAB */ 00194 // template<class T> 00195 // ostream& operator<<(ostream& os, const std::vector<T>& v) 00196 // { 00197 // for (std::vector<T>::const_iterator i=v.begin(); i<v.end()-1; ++i) 00198 // os << *i << ", "; 00199 // os << *(v.end()-1); 00200 // return os; 00201 // } 00202 00203 00204 00205 //---------------< Global variable declarations >--------------- 00206 // (Definitions of these are in FIXME: where?) 00207 00208 00209 //---------------< Global function declarations: >--------------- 00210 // Documentations are with function definitions. 00211 void define_wsv_group_names(); 00212 void define_species_data(); 00213 void define_lineshape_data(); 00214 void define_lineshape_norm_data(); 00215 00216 // 00217 // Physical constants are now in constants.cc 00218 // 00219 00220 00221 00222 #endif // arts_h 00223 00224 00225