00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _TEUCHOS_OBJECT_HPP_
00033 #define _TEUCHOS_OBJECT_HPP_
00034
00039 #include "Teuchos_ConfigDefs.hpp"
00040 #include "Teuchos_DataAccess.hpp"
00041
00050 namespace Teuchos
00051 {
00052
00053 class Object
00054 {
00055 public:
00057
00058
00062 Object(int tracebackModeIn = -1);
00063
00065
00067 Object(const char* label, int tracebackModeIn = -1);
00068
00070
00072 Object(const Object& obj);
00073
00075
00077 virtual ~Object();
00078
00080
00082
00084
00086 virtual void setLabel(const char* label);
00087
00089
00101 static void setTracebackMode(int tracebackModeValue);
00102
00104
00106
00108
00110 virtual char* label() const;
00111
00113 static int getTracebackMode();
00114
00116
00118
00120 virtual void print(ostream& os) const;
00122
00124
00126 virtual int reportError(const string message, int errorCode) const
00127 {
00128
00129
00130
00131 if ( (tracebackMode==1) && (errorCode < 0) )
00132 {
00133 cerr << endl << "Error in Teuchos Object with label: " << label_ << endl
00134 << "Teuchos Error: " << message.c_str() << " Error Code: " << errorCode << endl;
00135 return(errorCode);
00136 }
00137 if ( (tracebackMode==2) && (errorCode != 0 ) )
00138 {
00139 cerr << endl << "Error in Teuchos Object with label: " << label_ << endl
00140 << "Teuchos Error: " << message.c_str() << " Error Code: " << errorCode << endl;
00141 return(errorCode);
00142 }
00143 return(errorCode);
00144 }
00145
00147
00148 static int tracebackMode;
00149
00150 protected:
00151
00152 private:
00153
00154 char* label_;
00155
00156 };
00157
00161 inline ostream& operator<<(ostream& os, const Teuchos::Object& Obj)
00162 {
00163 os << Obj.label() << endl;
00164 Obj.print(os);
00165
00166 return os;
00167 }
00168
00169 }
00170
00171
00172
00173
00174 #endif