![]() |
Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
00001 /**
00002 * MOAB, a Mesh-Oriented datABase, is a software component for creating,
00003 * storing and accessing finite element mesh data.
00004 *
00005 * Copyright 2004 Sandia Corporation. Under the terms of Contract
00006 * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
00007 * retains certain rights in this software.
00008 *
00009 * This library is free software; you can redistribute it and/or
00010 * modify it under the terms of the GNU Lesser General Public
00011 * License as published by the Free Software Foundation; either
00012 * version 2.1 of the License, or (at your option) any later version.
00013 *
00014 */
00015
00016 /*
00017 *
00018 * File: Error.hpp
00019 *
00020 * Purpose: To keep track of detail information about errors that occur
00021 * in MB.
00022 *
00023 * Date: 9-26-2002
00024 *
00025 * Author: Clinton Stimpson
00026 *
00027 */
00028
00029 #ifndef MOAB_ERROR_HPP
00030 #define MOAB_ERROR_HPP
00031
00032 #ifndef IS_BUILDING_MB
00033 #error "Error.hpp isn't supposed to be included into an application"
00034 #endif
00035
00036 #include
00037 #include
00038 #include
00039
00040 #include "moab/Types.hpp"
00041 #include "moab/Compiler.hpp"
00042
00043 #ifdef WIN32
00044 #define VSNPRINTF _vsnprintf
00045 #else
00046 #define VSNPRINTF vsnprintf
00047 #endif
00048
00049 namespace moab
00050 {
00051
00052 class Error
00053 {
00054 //! string to hold the last error that occurred in MB
00055 std::string mLastError;
00056
00057 public:
00058 Error() {}
00059 ~Error() {}
00060
00061 ErrorCode set_last_error( const std::string& error )
00062 {
00063 mLastError = error;
00064 return MB_SUCCESS;
00065 }
00066
00067 inline ErrorCode set_last_error( const char* fmt, ... ) MB_PRINTF( 1 );
00068
00069 ErrorCode set_last_error( const char* fmt, va_list args )
00070 {
00071 char text[1024];
00072 VSNPRINTF( text, sizeof( text ), fmt, args );
00073 mLastError = text;
00074 return MB_SUCCESS;
00075 }
00076
00077 ErrorCode get_last_error( std::string& error ) const
00078 {
00079 error = mLastError;
00080 return MB_SUCCESS;
00081 }
00082 };
00083
00084 inline ErrorCode Error::set_last_error( const char* fmt, ... )
00085 {
00086 ErrorCode result = MB_FAILURE;
00087 if( fmt )
00088 {
00089 va_list args;
00090 va_start( args, fmt );
00091 result = set_last_error( fmt, args );
00092 va_end( args );
00093 }
00094 return result;
00095 }
00096
00097 } // namespace moab
00098
00099 #endif