Patch 2793067: fix trunk with OGRE_THREAD_SUPPORT=1 on non-Windows platforms (don...
[ogre3d.git] / OgreMain / src / OgreException.cpp
blob940c5e401f810d9fc53c0d268d2bab3e42aec47d
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of OGRE
4 (Object-oriented Graphics Rendering Engine)
5 For the latest info, see http://www.ogre3d.org/
7 Copyright (c) 2000-2006 Torus Knot Software Ltd
8 Also see acknowledgements in Readme.html
10 This program is free software; you can redistribute it and/or modify it under
11 the terms of the GNU Lesser General Public License as published by the Free Software
12 Foundation; either version 2 of the License, or (at your option) any later
13 version.
15 This program is distributed in the hope that it will be useful, but WITHOUT
16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
19 You should have received a copy of the GNU Lesser General Public License along with
20 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
22 http://www.gnu.org/copyleft/lesser.txt.
24 You may alternatively use this source under the terms of a specific version of
25 the OGRE Unrestricted License provided you have obtained such a license from
26 Torus Knot Software Ltd.
27 -----------------------------------------------------------------------------
29 #include "OgreStableHeaders.h"
30 #include "OgreException.h"
32 #include "OgreRoot.h"
33 #include "OgreLogManager.h"
35 #ifdef __BORLANDC__
36 #include <stdio.h>
37 #endif
39 namespace Ogre {
41 Exception::Exception(int num, const String& desc, const String& src) :
42 line( 0 ),
43 number( num ),
44 description( desc ),
45 source( src )
47 // Log this error - not any more, allow catchers to do it
48 //LogManager::getSingleton().logMessage(this->getFullDescription());
51 Exception::Exception(int num, const String& desc, const String& src,
52 const char* typ, const char* fil, long lin) :
53 line( lin ),
54 number( num ),
55 typeName(typ),
56 description( desc ),
57 source( src ),
58 file( fil )
60 // Log this error, mask it from debug though since it may be caught and ignored
61 if(LogManager::getSingletonPtr())
63 LogManager::getSingleton().logMessage(
64 this->getFullDescription(),
65 LML_CRITICAL, true);
70 Exception::Exception(const Exception& rhs)
71 : line( rhs.line ),
72 number( rhs.number ),
73 typeName( rhs.typeName ),
74 description( rhs.description ),
75 source( rhs.source ),
76 file( rhs.file )
80 void Exception::operator = ( const Exception& rhs )
82 description = rhs.description;
83 number = rhs.number;
84 source = rhs.source;
85 file = rhs.file;
86 line = rhs.line;
87 typeName = rhs.typeName;
90 const String& Exception::getFullDescription(void) const
92 if (fullDesc.empty())
95 StringUtil::StrStreamType desc;
97 desc << "OGRE EXCEPTION(" << number << ":" << typeName << "): "
98 << description
99 << " in " << source;
101 if( line > 0 )
103 desc << " at " << file << " (line " << line << ")";
106 fullDesc = desc.str();
109 return fullDesc;
112 int Exception::getNumber(void) const throw()
114 return number;