MezzanineEngine 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
exception.h
1 // © Copyright 2010 - 2014 BlackTopp Studios Inc.
2 /* This file is part of The Mezzanine Engine.
3 
4  The Mezzanine Engine is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  The Mezzanine Engine is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with The Mezzanine Engine. If not, see <http://www.gnu.org/licenses/>.
16 */
17 /* The original authors have included a copy of the license specified above in the
18  'Docs' folder. See 'gpl.txt'
19 */
20 /* We welcome the use of the Mezzanine engine to anyone, including companies who wish to
21  Build professional software and charge for their product.
22 
23  However there are some practical restrictions, so if your project involves
24  any of the following you should contact us and we will try to work something
25  out:
26  - DRM or Copy Protection of any kind(except Copyrights)
27  - Software Patents You Do Not Wish to Freely License
28  - Any Kind of Linking to Non-GPL licensed Works
29  - Are Currently In Violation of Another Copyright Holder's GPL License
30  - If You want to change our code and not add a few hundred MB of stuff to
31  your distribution
32 
33  These and other limitations could cause serious legal problems if you ignore
34  them, so it is best to simply contact us or the Free Software Foundation, if
35  you have any questions.
36 
37  Joseph Toppi - toppij@gmail.com
38  John Blackwood - makoenergy02@gmail.com
39 */
40 
41 #ifndef _exception_h
42 #define _exception_h
43 
44 #include "datatypes.h"
45 
46 
47 
48 namespace Mezzanine
49 {
50  #ifdef SWIG
51  %nodefaultctor Foo;
52  #endif
53  ///////////////////////////////////////////////////////////////////////////////
54  /// @class Exception
55  /// @headerfile exception.h
56  /// @brief This is the exception thrown by most Mezzanine system that can throw exceptions.
57  /// @details In general they work like std::exception, but construct a string message from a few source with the help of a macro.
58  ///////////////////////////////////////////////////////////////////////////////
59  class MEZZ_LIB Exception : public std::exception
60  {
61  public:
62  /// @enum ExceptionCodes
63  /// @brief This enum provides mapping/naming for all the core exceptions of Mezzanine.
64  /// @details The numbers listed here must be unique to each exception. If an error code does not identify
65  /// the problem exactly it should be considered 'Unknown' for as much as it does specify. For example,
66  /// if there is an error opening a file for reading and writing, and we don't know why it failed, useing
67  /// @ref IO_EXCEPTION would make sense
69  {
70  IO_EXCEPTION = 0x01F00F00, ///< When used a instance of IOException is thrown. Thrown when there was an issue with IO but very little was known about it.
71  IO_FILE_EXCEPTION = 0x01F01F00, ///< When used a instance of FileException is thrown. Thrown when there is an unknown issue with a file.
72  IO_FILE_READ_EXCEPTION = 0x01F01F01, ///< When used a instance of FileReadException is thrown. Thrown when a file could not be read and permissions seem to not be an issue (Filesystem/hardware issue?)
73  IO_FILE_WRITE_EXCEPTION = 0x01F01F02, ///< When used a instance of FileWriteException is thrown. Thrown when a file could not be written and perimssions seem not to be an issue.
74  IO_FILE_NOT_FOUND_EXCEPTION = 0x01F01F03, ///< When used a instance of FileNotFoundException is thrown. Thrown when a file was expected to be there, but was not.
75  IO_FILE_PERMISSION_EXCEPTION = 0x01F01F04, ///< When used a instance of FilePermissionException is thrown. Thrown when permission was denied to a file.
76  IO_DIRECTORY_EXCEPTION = 0x01F02F00, ///< When used a instance of DirectoryException is thrown. Thrown when there is an unknown issue with a file.
77  IO_DIRECTORY_READ_EXCEPTION = 0x01F02F01, ///< When used a instance of DirectoryReadException is thrown. Thrown when a directory could be read and it wasn't a permission issue.
78  IO_DIRECTORY_WRITE_EXCEPTION = 0x01F02F02, ///< When used a instance of DirectoryWriteException is thrown. Thrown when a directory could be written to and it wasn't a permission issue.
79  IO_DIRECTORY_NOT_FOUND_EXCEPTION = 0x01F02F03, ///< When used a instance of DirectoryNotFoundException is thrown. Thrown when a directory was expected to be there, but was not.
80  IO_DIRECTORY_PERMISSION_EXCEPTION = 0x01F02F04, ///< When used a instance of DirectoryPermissionException is thrown. Thrown when permission is denied to a directory.
81  IO_NETWORK_EXCEPTION = 0x01F03F00, ///< When used a instance of NetworkException is thrown. Thrown when something unknown causes network IO to fail.
82  IO_NETWORK_READ_EXCEPTION = 0x01F03F01, ///< When used a instance of NetworkReadException is thrown. Thrown when data could not be read from the network (downloads).
83  IO_NETWORK_WRITE_EXCEPTION = 0x01F03F02, ///< When used a instance of NetworkWriteException is thrown. Thrown when data could not be read from the network (iloads).
84  IO_NETWORK_NOT_FOUND_EXCEPTION = 0x01F03F03, ///< When used a instance of NetworkNotFoundException is thrown. Thrown when no network connection is available.
85  IO_NETWORK_URL_EXCEPTION = 0x01F03F04, ///< When used a instance of NetworkURLException is thrown. Thrown when an address is invalid or could not be found.
86  IO_NETWORK_PERMISSION_EXCEPTION = 0x01F03F05, ///< When used a instance of NetworkPermissionException is thrown. Thrown when permision was denied to a network interface or network resource.
87  IO_WRITE_EXCEPTION = 0x01F08F00, ///< When used a instance of IOWriteException is thrown. Thrown when a write is happening but something has prevented the underlying code from knowing what was writing.
88  IO_READ_EXCEPTION = 0x01F09F00, ///< When used a instance of IOReadException is thrown. Thrown when a read is happening but something has prevented the underlying code from knowing what was reading.
89 
90  II_EXCEPTION = 0x02F00F00, ///< When used a instance of InstanceIdentityException is thrown. Thrown when an unknown error with using an Identifier and it is invalid.
91  II_IDENTITY_INVALID_EXCEPTION = 0x02F01F00, ///< When used a instance of InstanceIdentityInvalidException is thrown. Thrown when the identity string wasn't valid at all.
92  II_IDENTITY_NOT_FOUND_EXCEPTION = 0x02F02F00, ///< When used a instance of InstanceIdentityNotFoundException is thrown. Thrown when the requested identity could not be found.
93  II_DUPLICATE_IDENTITY_EXCEPTION = 0x02F03F00, ///< When used a instance of InstanceIdentityDuplicateException is thrown. Thrown when duplicates of teh same identity string exist.
94 
95  MM_EXCEPTION = 0x03F00F00, ///< When used a instance of MemoryManagementException is thrown. Thrown when an unknown memory management exception occurs.
96  MM_OUT_OF_MEMORY_EXCEPTION = 0x03F01F00, ///< When used a instance of OutOfMemoryException is thrown. Thrown when A memory allocation was attempted and failed.
97  MM_OUT_OF_BOUNDS_EXCEPTION = 0x03F02F00, ///< When used a instance of MemoryOutOfBoundsException is thrown. Thrown when attempted to access something that really should note be accessed.
98 
99  SYNTAX_ERROR_EXCEPTION = 0x04F00F00, ///< When used a instance of SyntaxErrorException is thrown. Thrown when some kind of syntax exception
100  SYNTAX_ERROR_EXCEPTION_XML = 0x04F01F00, ///< When used a instance of SyntaxErrorXMLException is thrown. Thrown when and XML document is being parsed but is invalid
101  SYNTAX_ERROR_EXCEPTION_XPATH = 0x04F02F00, ///< When used a instance of SyntaxErrorXPathException is thrown. Thrown when an XPath query is being parsed but is invalid
102  SYNTAX_ERROR_EXCEPTION_LUA = 0x04F03F00, ///< When used a instance of SyntaxErrorLuaException is thrown. Thrown when lua code in incorrect.
103 
104  SCRIPT_EXCEPTION = 0x05F00F00, ///< When used a instance of ScriptException is thrown. Thrown when an unknown error happens with a script.
105  SCRIPT_EXCEPTION_LUA = 0x05F01F00, ///< When used a instance of ScriptLuaException is thrown. Thrown when an unknown error happens in a Lua script.
106  SCRIPT_EXCEPTION_LUA_YIELD = 0x05F01F01, ///< When used a instance of ScriptLuaYieldException is thrown. Thrown when Lua returns a yield and it should not have.
107  SCRIPT_EXCEPTION_LUA_RUNTIME = 0x05F01F02, ///< When used a instance of ScriptLuaRuntimeException is thrown. Thrown when a Lua script has a runtime error.
108  SCRIPT_EXCEPTION_LUA_ERRERR = 0x05F01F03, ///< When used a instance of ScriptLuaErrErrException is thrown. Thrown when Lua has an error handling an error.
109 
110  PARAMETERS_EXCEPTION = 0x06F01F00, ///< When used a instance of ParametersException is thrown. Thrown when parameters are checked at runtime and found invalid.
111  PARAMETERS_CAST_EXCEPTION = 0x06F01F01, ///< When used a instance of ParametersCastException is thrown. Thrown when a pointer parameter is checked at runtime and cannot be cast as expected.
112  PARAMETERS_RANGE_EXCEPTION = 0x06F01F02, ///< When used a instance of ParametersRangeException is thrown. Thrown when a passed parameter is checked at runtime and not in the expected range.
113 
114  ARITHMETIC_EXCEPTION = 0x00F01F00, ///< When used a instance of ArithmeticException is thrown. Thrown when Math has failed.
115  INVALID_VERSION_EXCEPTION = 0x00F02F00, ///< When used a instance of InvalidVersionException is thrown. Thrown when a version is accessed/parsed/required and it cannot work correctly or is missing.
116  INVALID_STATE_EXCEPTION = 0x00F03F00, ///< When used a instance of InvalidStateException is thrown. Thrown when the available information should have worked but failed for unknown reasons.
117  RENDERINGAPI_EXCEPTION = 0x00F04F00, ///< When used a instance of RenderingAPIException is thrown. Thrown when the graphics card/DirectX/OpenGL fail.
118  RT_ASSERTION_EXCEPTION = 0x00F05F00, ///< When used a instance of RuntimeAssertionException is thrown. Thrown when a rutime assertion could have been thrown.
119  INTERNAL_EXCEPTION = 0x00F06F00, ///< When used a instance of InternalException is thrown. Thrown when an unknown internal error occurred.
120  NOT_IMPLEMENTED_EXCEPTION = 0x00F07F00, ///< When used a instance of NotImplementedException is thrown. Thrown when we just have not coded a thing yet, but we knew what the API should look like.
121  INVALID_ASSIGNMENT = 0x00F08F00 ///< When used a instance of InvalidAssignment is thrown. Then when a complex class is assigned to itself or other invalid assignments occur.
122  };
123 
124  private:
125  /// @internal
126  /// @brief This stores the Error Message
127  const String ErrorMessage;
128  /// @internal
129  /// @brief This stores the exception type as a string.
130  const String ExceptionTypeName;
131  /// @internal
132  /// @brief This stores the function name where the exception originated.
133  const String Function;
134  /// @internal
135  /// @brief This stores the file where the exception originated.
136  const String File;
137  /// @internal
138  /// @brief This stroes the line number where the exception originated.
139  const Whole Line;
140  public:
141  /// @brief Simple Constructor.
142  /// @param TypeName The name of the type of exception being thrown.
143  /// @param Message A basic description of the error.
144  /// @param SrcFunction The name of the function from which this originated.
145  /// @param SrcFile The name of the file from which this originated.
146  /// @param FileLine The line on the named file from which this originated.
147  /// @details Don't call this, use @ref MEZZ_EXCEPTION to throw these, it is much simpler. It also might get better with time.
148  Exception(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine);
149  /// @brief Class destructor.
150  virtual ~Exception() throw();
151 
152  ///////////////////////////////////////////////////////////////////////////////
153  // Error Information
154  /// @brief Gets the exception code for this exception.
155  /// @return Returns the exception code for this exception.
156  virtual Whole GetExceptionCode() const throw() = 0;
157 
158  /// @brief Gets the name of the exception type.
159  /// @return Returns the exception type as a string.
160  ConstString& GetExceptionTypeName() const throw();
161  /// @brief Gets the function of the exception.
162  /// @return Returns a const string reference
163  ConstString& GetFunction() const throw();
164  /// @brief Gets the file of the exception.
165  /// @return Returns the name of the file this exception is being thrown from.
166  ConstString& GetFile() const throw();
167  /// @brief Gets the line number of the exception.
168  /// @return Returns the line in the file this exception is being thrown from.
169  const Whole& GetLine() const throw();
170 
171  /// @brief Constructs the complete message from all the information provided about the exception.
172  /// @return Returns a string with the complete error.
173  String GetCompleteMessage() const throw();
174  /// @brief Retrieves the error message.
175  /// @return This returns a string that is the stored error message.
176  virtual String what() throw();
177  };//Exception
178 
179  ///////////////////////////////////////////////////////////////////////////////
180  /// @struct ExceptionFactory
181  /// @headerfile exception.h
182  /// @brief Template class that serves as the base for exception factories.
183  /// @details Additional exceptions and their factories have to specialize from this template changing the type
184  /// value to the new exception type. This allows our exception macro to find the appropriate factory and be
185  /// extendable with additional exceptions. Attempting to create an unknown exception simply won't compile on
186  /// account of the base exception class being abstract.
187  ///////////////////////////////////////////////////////////////////////////////
188  template <Whole N>
190  {
191  typedef Exception Type;
192  };//ExceptionFactory
193 
194 
195  ///////////////////////////////////////////////////////////////////////////////
196  // Exception code class definitions.
197 
198  ///////////////////////////////////////////////////////////////////////////////
199  // Exception code class definitions.
200  ///////////////////////////////////////////////////////////////////////////////
201  /// @brief Thrown when there was an issue with IO but very little was known about it.
202  ///////////////////
204  {
205  public:
206  /// @brief Thrown when there was an issue with IO but very little was known about it.
207  static const Whole ExceptionCode = Exception::IO_EXCEPTION;
208 
209  /// @brief Class constructor.
210  /// @param TypeName The name of this class.
211  /// @param Message A basic description of the error.
212  /// @param SrcFunction The name of the function from which this originated.
213  /// @param SrcFile The name of the file from which this originated.
214  /// @param FileLine The line on the named file from which this originated.
215  IOException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
216  : Exception("IOException", Message, SrcFunction, SrcFile, FileLine)
217  {}
218 
219  /// @brief Class constructor.
220  /// @param Message A basic description of the error.
221  /// @param SrcFunction The name of the function from which this originated.
222  /// @param SrcFile The name of the file from which this originated.
223  /// @param FileLine The line on the named file from which this originated.
224  IOException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
225  : Exception("IOException", Message, SrcFunction, SrcFile, FileLine)
226  {}
227 
228  /// @brief Class destructor.
229  virtual ~IOException() throw() {}
230 
231  /// @copydoc Exception::GetExceptionCode()
232  virtual Whole GetExceptionCode() const throw()
233  { return IOException::ExceptionCode; }
234  }; //IOException
235 
236  /// @brief A template metaprogramming construct used to ensure that all required IOException can be created at compile time if the compiler is clever.
237  template<>
238  struct MEZZ_LIB ExceptionFactory<IOException::ExceptionCode>
239  { typedef IOException Type; };
240 
241 
242  ///////////////////////////////////////////////////////////////////////////////
243  /// @brief Thrown when there is an unknown issue with a file.
244  ///////////////////
246  {
247  public:
248  /// @brief Thrown when there is an unknown issue with a file.
249  static const Whole ExceptionCode = Exception::IO_FILE_EXCEPTION;
250 
251  /// @brief Class constructor.
252  /// @param TypeName The name of this class.
253  /// @param Message A basic description of the error.
254  /// @param SrcFunction The name of the function from which this originated.
255  /// @param SrcFile The name of the file from which this originated.
256  /// @param FileLine The line on the named file from which this originated.
257  FileException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
258  : IOException("FileException", Message, SrcFunction, SrcFile, FileLine)
259  {}
260 
261  /// @brief Class constructor.
262  /// @param Message A basic description of the error.
263  /// @param SrcFunction The name of the function from which this originated.
264  /// @param SrcFile The name of the file from which this originated.
265  /// @param FileLine The line on the named file from which this originated.
266  FileException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
267  : IOException("FileException", Message, SrcFunction, SrcFile, FileLine)
268  {}
269 
270  /// @brief Class destructor.
271  virtual ~FileException() throw() {}
272 
273  /// @copydoc Exception::GetExceptionCode()
274  virtual Whole GetExceptionCode() const throw()
275  { return FileException::ExceptionCode; }
276  }; //FileException
277 
278  /// @brief A template metaprogramming construct used to ensure that all required FileException can be created at compile time if the compiler is clever.
279  template<>
280  struct MEZZ_LIB ExceptionFactory<FileException::ExceptionCode>
281  { typedef FileException Type; };
282 
283 
284  ///////////////////////////////////////////////////////////////////////////////
285  /// @brief Thrown when a file could not be read and permissions seem to not be an issue (Filesystem/hardware issue?)
286  ///////////////////
288  {
289  public:
290  /// @brief Thrown when a file could not be read and permissions seem to not be an issue (Filesystem/hardware issue?)
291  static const Whole ExceptionCode = Exception::IO_FILE_READ_EXCEPTION;
292 
293  /// @brief Class constructor.
294  /// @param TypeName The name of this class.
295  /// @param Message A basic description of the error.
296  /// @param SrcFunction The name of the function from which this originated.
297  /// @param SrcFile The name of the file from which this originated.
298  /// @param FileLine The line on the named file from which this originated.
299  FileReadException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
300  : FileException("FileReadException", Message, SrcFunction, SrcFile, FileLine)
301  {}
302 
303  /// @brief Class constructor.
304  /// @param Message A basic description of the error.
305  /// @param SrcFunction The name of the function from which this originated.
306  /// @param SrcFile The name of the file from which this originated.
307  /// @param FileLine The line on the named file from which this originated.
308  FileReadException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
309  : FileException("FileReadException", Message, SrcFunction, SrcFile, FileLine)
310  {}
311 
312  /// @brief Class destructor.
313  virtual ~FileReadException() throw() {}
314 
315  /// @copydoc Exception::GetExceptionCode()
316  virtual Whole GetExceptionCode() const throw()
318  }; //FileReadException
319 
320  /// @brief A template metaprogramming construct used to ensure that all required FileReadException can be created at compile time if the compiler is clever.
321  template<>
323  { typedef FileReadException Type; };
324 
325 
326  ///////////////////////////////////////////////////////////////////////////////
327  /// @brief Thrown when a file could not be written and perimssions seem not to be an issue.
328  ///////////////////
330  {
331  public:
332  /// @brief Thrown when a file could not be written and perimssions seem not to be an issue.
333  static const Whole ExceptionCode = Exception::IO_FILE_WRITE_EXCEPTION;
334 
335  /// @brief Class constructor.
336  /// @param TypeName The name of this class.
337  /// @param Message A basic description of the error.
338  /// @param SrcFunction The name of the function from which this originated.
339  /// @param SrcFile The name of the file from which this originated.
340  /// @param FileLine The line on the named file from which this originated.
341  FileWriteException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
342  : FileException("FileWriteException", Message, SrcFunction, SrcFile, FileLine)
343  {}
344 
345  /// @brief Class constructor.
346  /// @param Message A basic description of the error.
347  /// @param SrcFunction The name of the function from which this originated.
348  /// @param SrcFile The name of the file from which this originated.
349  /// @param FileLine The line on the named file from which this originated.
350  FileWriteException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
351  : FileException("FileWriteException", Message, SrcFunction, SrcFile, FileLine)
352  {}
353 
354  /// @brief Class destructor.
355  virtual ~FileWriteException() throw() {}
356 
357  /// @copydoc Exception::GetExceptionCode()
358  virtual Whole GetExceptionCode() const throw()
360  }; //FileWriteException
361 
362  /// @brief A template metaprogramming construct used to ensure that all required FileWriteException can be created at compile time if the compiler is clever.
363  template<>
365  { typedef FileWriteException Type; };
366 
367 
368  ///////////////////////////////////////////////////////////////////////////////
369  /// @brief Thrown when a file was expected to be there, but was not.
370  ///////////////////
372  {
373  public:
374  /// @brief Thrown when a file was expected to be there, but was not.
375  static const Whole ExceptionCode = Exception::IO_FILE_NOT_FOUND_EXCEPTION;
376 
377  /// @brief Class constructor.
378  /// @param TypeName The name of this class.
379  /// @param Message A basic description of the error.
380  /// @param SrcFunction The name of the function from which this originated.
381  /// @param SrcFile The name of the file from which this originated.
382  /// @param FileLine The line on the named file from which this originated.
383  FileNotFoundException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
384  : FileException("FileNotFoundException", Message, SrcFunction, SrcFile, FileLine)
385  {}
386 
387  /// @brief Class constructor.
388  /// @param Message A basic description of the error.
389  /// @param SrcFunction The name of the function from which this originated.
390  /// @param SrcFile The name of the file from which this originated.
391  /// @param FileLine The line on the named file from which this originated.
392  FileNotFoundException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
393  : FileException("FileNotFoundException", Message, SrcFunction, SrcFile, FileLine)
394  {}
395 
396  /// @brief Class destructor.
397  virtual ~FileNotFoundException() throw() {}
398 
399  /// @copydoc Exception::GetExceptionCode()
400  virtual Whole GetExceptionCode() const throw()
402  }; //FileNotFoundException
403 
404  /// @brief A template metaprogramming construct used to ensure that all required FileNotFoundException can be created at compile time if the compiler is clever.
405  template<>
407  { typedef FileNotFoundException Type; };
408 
409 
410  ///////////////////////////////////////////////////////////////////////////////
411  /// @brief Thrown when permission was denied to a file.
412  ///////////////////
414  {
415  public:
416  /// @brief Thrown when permission was denied to a file.
417  static const Whole ExceptionCode = Exception::IO_FILE_PERMISSION_EXCEPTION;
418 
419  /// @brief Class constructor.
420  /// @param TypeName The name of this class.
421  /// @param Message A basic description of the error.
422  /// @param SrcFunction The name of the function from which this originated.
423  /// @param SrcFile The name of the file from which this originated.
424  /// @param FileLine The line on the named file from which this originated.
425  FilePermissionException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
426  : FileException("FilePermissionException", Message, SrcFunction, SrcFile, FileLine)
427  {}
428 
429  /// @brief Class constructor.
430  /// @param Message A basic description of the error.
431  /// @param SrcFunction The name of the function from which this originated.
432  /// @param SrcFile The name of the file from which this originated.
433  /// @param FileLine The line on the named file from which this originated.
434  FilePermissionException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
435  : FileException("FilePermissionException", Message, SrcFunction, SrcFile, FileLine)
436  {}
437 
438  /// @brief Class destructor.
439  virtual ~FilePermissionException() throw() {}
440 
441  /// @copydoc Exception::GetExceptionCode()
442  virtual Whole GetExceptionCode() const throw()
444  }; //FilePermissionException
445 
446  /// @brief A template metaprogramming construct used to ensure that all required FilePermissionException can be created at compile time if the compiler is clever.
447  template<>
449  { typedef FilePermissionException Type; };
450 
451 
452  ///////////////////////////////////////////////////////////////////////////////
453  /// @brief Thrown when there is an unknown issue with a file.
454  ///////////////////
456  {
457  public:
458  /// @brief Thrown when there is an unknown issue with a file.
459  static const Whole ExceptionCode = Exception::IO_DIRECTORY_EXCEPTION;
460 
461  /// @brief Class constructor.
462  /// @param TypeName The name of this class.
463  /// @param Message A basic description of the error.
464  /// @param SrcFunction The name of the function from which this originated.
465  /// @param SrcFile The name of the file from which this originated.
466  /// @param FileLine The line on the named file from which this originated.
467  DirectoryException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
468  : IOException("DirectoryException", Message, SrcFunction, SrcFile, FileLine)
469  {}
470 
471  /// @brief Class constructor.
472  /// @param Message A basic description of the error.
473  /// @param SrcFunction The name of the function from which this originated.
474  /// @param SrcFile The name of the file from which this originated.
475  /// @param FileLine The line on the named file from which this originated.
476  DirectoryException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
477  : IOException("DirectoryException", Message, SrcFunction, SrcFile, FileLine)
478  {}
479 
480  /// @brief Class destructor.
481  virtual ~DirectoryException() throw() {}
482 
483  /// @copydoc Exception::GetExceptionCode()
484  virtual Whole GetExceptionCode() const throw()
486  }; //DirectoryException
487 
488  /// @brief A template metaprogramming construct used to ensure that all required DirectoryException can be created at compile time if the compiler is clever.
489  template<>
491  { typedef DirectoryException Type; };
492 
493 
494  ///////////////////////////////////////////////////////////////////////////////
495  /// @brief Thrown when a directory could be read and it wasn't a permission issue.
496  ///////////////////
498  {
499  public:
500  /// @brief Thrown when a directory could be read and it wasn't a permission issue.
501  static const Whole ExceptionCode = Exception::IO_DIRECTORY_READ_EXCEPTION;
502 
503  /// @brief Class constructor.
504  /// @param TypeName The name of this class.
505  /// @param Message A basic description of the error.
506  /// @param SrcFunction The name of the function from which this originated.
507  /// @param SrcFile The name of the file from which this originated.
508  /// @param FileLine The line on the named file from which this originated.
509  DirectoryReadException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
510  : DirectoryException("DirectoryReadException", Message, SrcFunction, SrcFile, FileLine)
511  {}
512 
513  /// @brief Class constructor.
514  /// @param Message A basic description of the error.
515  /// @param SrcFunction The name of the function from which this originated.
516  /// @param SrcFile The name of the file from which this originated.
517  /// @param FileLine The line on the named file from which this originated.
518  DirectoryReadException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
519  : DirectoryException("DirectoryReadException", Message, SrcFunction, SrcFile, FileLine)
520  {}
521 
522  /// @brief Class destructor.
523  virtual ~DirectoryReadException() throw() {}
524 
525  /// @copydoc Exception::GetExceptionCode()
526  virtual Whole GetExceptionCode() const throw()
528  }; //DirectoryReadException
529 
530  /// @brief A template metaprogramming construct used to ensure that all required DirectoryReadException can be created at compile time if the compiler is clever.
531  template<>
533  { typedef DirectoryReadException Type; };
534 
535 
536  ///////////////////////////////////////////////////////////////////////////////
537  /// @brief Thrown when a directory could be written to and it wasn't a permission issue.
538  ///////////////////
540  {
541  public:
542  /// @brief Thrown when a directory could be written to and it wasn't a permission issue.
543  static const Whole ExceptionCode = Exception::IO_DIRECTORY_WRITE_EXCEPTION;
544 
545  /// @brief Class constructor.
546  /// @param TypeName The name of this class.
547  /// @param Message A basic description of the error.
548  /// @param SrcFunction The name of the function from which this originated.
549  /// @param SrcFile The name of the file from which this originated.
550  /// @param FileLine The line on the named file from which this originated.
551  DirectoryWriteException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
552  : DirectoryException("DirectoryWriteException", Message, SrcFunction, SrcFile, FileLine)
553  {}
554 
555  /// @brief Class constructor.
556  /// @param Message A basic description of the error.
557  /// @param SrcFunction The name of the function from which this originated.
558  /// @param SrcFile The name of the file from which this originated.
559  /// @param FileLine The line on the named file from which this originated.
560  DirectoryWriteException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
561  : DirectoryException("DirectoryWriteException", Message, SrcFunction, SrcFile, FileLine)
562  {}
563 
564  /// @brief Class destructor.
565  virtual ~DirectoryWriteException() throw() {}
566 
567  /// @copydoc Exception::GetExceptionCode()
568  virtual Whole GetExceptionCode() const throw()
570  }; //DirectoryWriteException
571 
572  /// @brief A template metaprogramming construct used to ensure that all required DirectoryWriteException can be created at compile time if the compiler is clever.
573  template<>
575  { typedef DirectoryWriteException Type; };
576 
577 
578  ///////////////////////////////////////////////////////////////////////////////
579  /// @brief Thrown when a directory was expected to be there, but was not.
580  ///////////////////
582  {
583  public:
584  /// @brief Thrown when a directory was expected to be there, but was not.
586 
587  /// @brief Class constructor.
588  /// @param TypeName The name of this class.
589  /// @param Message A basic description of the error.
590  /// @param SrcFunction The name of the function from which this originated.
591  /// @param SrcFile The name of the file from which this originated.
592  /// @param FileLine The line on the named file from which this originated.
593  DirectoryNotFoundException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
594  : DirectoryException("DirectoryNotFoundException", Message, SrcFunction, SrcFile, FileLine)
595  {}
596 
597  /// @brief Class constructor.
598  /// @param Message A basic description of the error.
599  /// @param SrcFunction The name of the function from which this originated.
600  /// @param SrcFile The name of the file from which this originated.
601  /// @param FileLine The line on the named file from which this originated.
602  DirectoryNotFoundException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
603  : DirectoryException("DirectoryNotFoundException", Message, SrcFunction, SrcFile, FileLine)
604  {}
605 
606  /// @brief Class destructor.
607  virtual ~DirectoryNotFoundException() throw() {}
608 
609  /// @copydoc Exception::GetExceptionCode()
610  virtual Whole GetExceptionCode() const throw()
612  }; //DirectoryNotFoundException
613 
614  /// @brief A template metaprogramming construct used to ensure that all required DirectoryNotFoundException can be created at compile time if the compiler is clever.
615  template<>
617  { typedef DirectoryNotFoundException Type; };
618 
619 
620  ///////////////////////////////////////////////////////////////////////////////
621  /// @brief Thrown when permission is denied to a directory.
622  ///////////////////
624  {
625  public:
626  /// @brief Thrown when permission is denied to a directory.
628 
629  /// @brief Class constructor.
630  /// @param TypeName The name of this class.
631  /// @param Message A basic description of the error.
632  /// @param SrcFunction The name of the function from which this originated.
633  /// @param SrcFile The name of the file from which this originated.
634  /// @param FileLine The line on the named file from which this originated.
635  DirectoryPermissionException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
636  : DirectoryException("DirectoryPermissionException", Message, SrcFunction, SrcFile, FileLine)
637  {}
638 
639  /// @brief Class constructor.
640  /// @param Message A basic description of the error.
641  /// @param SrcFunction The name of the function from which this originated.
642  /// @param SrcFile The name of the file from which this originated.
643  /// @param FileLine The line on the named file from which this originated.
644  DirectoryPermissionException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
645  : DirectoryException("DirectoryPermissionException", Message, SrcFunction, SrcFile, FileLine)
646  {}
647 
648  /// @brief Class destructor.
649  virtual ~DirectoryPermissionException() throw() {}
650 
651  /// @copydoc Exception::GetExceptionCode()
652  virtual Whole GetExceptionCode() const throw()
654  }; //DirectoryPermissionException
655 
656  /// @brief A template metaprogramming construct used to ensure that all required DirectoryPermissionException can be created at compile time if the compiler is clever.
657  template<>
659  { typedef DirectoryPermissionException Type; };
660 
661 
662  ///////////////////////////////////////////////////////////////////////////////
663  /// @brief Thrown when something unknown causes network IO to fail.
664  ///////////////////
666  {
667  public:
668  /// @brief Thrown when something unknown causes network IO to fail.
669  static const Whole ExceptionCode = Exception::IO_NETWORK_EXCEPTION;
670 
671  /// @brief Class constructor.
672  /// @param TypeName The name of this class.
673  /// @param Message A basic description of the error.
674  /// @param SrcFunction The name of the function from which this originated.
675  /// @param SrcFile The name of the file from which this originated.
676  /// @param FileLine The line on the named file from which this originated.
677  NetworkException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
678  : IOException("NetworkException", Message, SrcFunction, SrcFile, FileLine)
679  {}
680 
681  /// @brief Class constructor.
682  /// @param Message A basic description of the error.
683  /// @param SrcFunction The name of the function from which this originated.
684  /// @param SrcFile The name of the file from which this originated.
685  /// @param FileLine The line on the named file from which this originated.
686  NetworkException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
687  : IOException("NetworkException", Message, SrcFunction, SrcFile, FileLine)
688  {}
689 
690  /// @brief Class destructor.
691  virtual ~NetworkException() throw() {}
692 
693  /// @copydoc Exception::GetExceptionCode()
694  virtual Whole GetExceptionCode() const throw()
696  }; //NetworkException
697 
698  /// @brief A template metaprogramming construct used to ensure that all required NetworkException can be created at compile time if the compiler is clever.
699  template<>
701  { typedef NetworkException Type; };
702 
703 
704  ///////////////////////////////////////////////////////////////////////////////
705  /// @brief Thrown when data could not be read from the network (downloads).
706  ///////////////////
708  {
709  public:
710  /// @brief Thrown when data could not be read from the network (downloads).
711  static const Whole ExceptionCode = Exception::IO_NETWORK_READ_EXCEPTION;
712 
713  /// @brief Class constructor.
714  /// @param TypeName The name of this class.
715  /// @param Message A basic description of the error.
716  /// @param SrcFunction The name of the function from which this originated.
717  /// @param SrcFile The name of the file from which this originated.
718  /// @param FileLine The line on the named file from which this originated.
719  NetworkReadException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
720  : NetworkException("NetworkReadException", Message, SrcFunction, SrcFile, FileLine)
721  {}
722 
723  /// @brief Class constructor.
724  /// @param Message A basic description of the error.
725  /// @param SrcFunction The name of the function from which this originated.
726  /// @param SrcFile The name of the file from which this originated.
727  /// @param FileLine The line on the named file from which this originated.
728  NetworkReadException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
729  : NetworkException("NetworkReadException", Message, SrcFunction, SrcFile, FileLine)
730  {}
731 
732  /// @brief Class destructor.
733  virtual ~NetworkReadException() throw() {}
734 
735  /// @copydoc Exception::GetExceptionCode()
736  virtual Whole GetExceptionCode() const throw()
738  }; //NetworkReadException
739 
740  /// @brief A template metaprogramming construct used to ensure that all required NetworkReadException can be created at compile time if the compiler is clever.
741  template<>
743  { typedef NetworkReadException Type; };
744 
745 
746  ///////////////////////////////////////////////////////////////////////////////
747  /// @brief Thrown when data could not be read from the network (iloads).
748  ///////////////////
750  {
751  public:
752  /// @brief Thrown when data could not be read from the network (iloads).
753  static const Whole ExceptionCode = Exception::IO_NETWORK_WRITE_EXCEPTION;
754 
755  /// @brief Class constructor.
756  /// @param TypeName The name of this class.
757  /// @param Message A basic description of the error.
758  /// @param SrcFunction The name of the function from which this originated.
759  /// @param SrcFile The name of the file from which this originated.
760  /// @param FileLine The line on the named file from which this originated.
761  NetworkWriteException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
762  : NetworkException("NetworkWriteException", Message, SrcFunction, SrcFile, FileLine)
763  {}
764 
765  /// @brief Class constructor.
766  /// @param Message A basic description of the error.
767  /// @param SrcFunction The name of the function from which this originated.
768  /// @param SrcFile The name of the file from which this originated.
769  /// @param FileLine The line on the named file from which this originated.
770  NetworkWriteException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
771  : NetworkException("NetworkWriteException", Message, SrcFunction, SrcFile, FileLine)
772  {}
773 
774  /// @brief Class destructor.
775  virtual ~NetworkWriteException() throw() {}
776 
777  /// @copydoc Exception::GetExceptionCode()
778  virtual Whole GetExceptionCode() const throw()
780  }; //NetworkWriteException
781 
782  /// @brief A template metaprogramming construct used to ensure that all required NetworkWriteException can be created at compile time if the compiler is clever.
783  template<>
785  { typedef NetworkWriteException Type; };
786 
787 
788  ///////////////////////////////////////////////////////////////////////////////
789  /// @brief Thrown when no network connection is available.
790  ///////////////////
792  {
793  public:
794  /// @brief Thrown when no network connection is available.
795  static const Whole ExceptionCode = Exception::IO_NETWORK_NOT_FOUND_EXCEPTION;
796 
797  /// @brief Class constructor.
798  /// @param TypeName The name of this class.
799  /// @param Message A basic description of the error.
800  /// @param SrcFunction The name of the function from which this originated.
801  /// @param SrcFile The name of the file from which this originated.
802  /// @param FileLine The line on the named file from which this originated.
803  NetworkNotFoundException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
804  : NetworkException("NetworkNotFoundException", Message, SrcFunction, SrcFile, FileLine)
805  {}
806 
807  /// @brief Class constructor.
808  /// @param Message A basic description of the error.
809  /// @param SrcFunction The name of the function from which this originated.
810  /// @param SrcFile The name of the file from which this originated.
811  /// @param FileLine The line on the named file from which this originated.
812  NetworkNotFoundException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
813  : NetworkException("NetworkNotFoundException", Message, SrcFunction, SrcFile, FileLine)
814  {}
815 
816  /// @brief Class destructor.
817  virtual ~NetworkNotFoundException() throw() {}
818 
819  /// @copydoc Exception::GetExceptionCode()
820  virtual Whole GetExceptionCode() const throw()
822  }; //NetworkNotFoundException
823 
824  /// @brief A template metaprogramming construct used to ensure that all required NetworkNotFoundException can be created at compile time if the compiler is clever.
825  template<>
827  { typedef NetworkNotFoundException Type; };
828 
829 
830  ///////////////////////////////////////////////////////////////////////////////
831  /// @brief Thrown when an address is invalid or could not be found.
832  ///////////////////
834  {
835  public:
836  /// @brief Thrown when an address is invalid or could not be found.
837  static const Whole ExceptionCode = Exception::IO_NETWORK_URL_EXCEPTION;
838 
839  /// @brief Class constructor.
840  /// @param TypeName The name of this class.
841  /// @param Message A basic description of the error.
842  /// @param SrcFunction The name of the function from which this originated.
843  /// @param SrcFile The name of the file from which this originated.
844  /// @param FileLine The line on the named file from which this originated.
845  NetworkURLException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
846  : NetworkException("NetworkURLException", Message, SrcFunction, SrcFile, FileLine)
847  {}
848 
849  /// @brief Class constructor.
850  /// @param Message A basic description of the error.
851  /// @param SrcFunction The name of the function from which this originated.
852  /// @param SrcFile The name of the file from which this originated.
853  /// @param FileLine The line on the named file from which this originated.
854  NetworkURLException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
855  : NetworkException("NetworkURLException", Message, SrcFunction, SrcFile, FileLine)
856  {}
857 
858  /// @brief Class destructor.
859  virtual ~NetworkURLException() throw() {}
860 
861  /// @copydoc Exception::GetExceptionCode()
862  virtual Whole GetExceptionCode() const throw()
864  }; //NetworkURLException
865 
866  /// @brief A template metaprogramming construct used to ensure that all required NetworkURLException can be created at compile time if the compiler is clever.
867  template<>
869  { typedef NetworkURLException Type; };
870 
871 
872  ///////////////////////////////////////////////////////////////////////////////
873  /// @brief Thrown when permision was denied to a network interface or network resource.
874  ///////////////////
876  {
877  public:
878  /// @brief Thrown when permision was denied to a network interface or network resource.
879  static const Whole ExceptionCode = Exception::IO_NETWORK_PERMISSION_EXCEPTION;
880 
881  /// @brief Class constructor.
882  /// @param TypeName The name of this class.
883  /// @param Message A basic description of the error.
884  /// @param SrcFunction The name of the function from which this originated.
885  /// @param SrcFile The name of the file from which this originated.
886  /// @param FileLine The line on the named file from which this originated.
887  NetworkPermissionException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
888  : NetworkException("NetworkPermissionException", Message, SrcFunction, SrcFile, FileLine)
889  {}
890 
891  /// @brief Class constructor.
892  /// @param Message A basic description of the error.
893  /// @param SrcFunction The name of the function from which this originated.
894  /// @param SrcFile The name of the file from which this originated.
895  /// @param FileLine The line on the named file from which this originated.
896  NetworkPermissionException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
897  : NetworkException("NetworkPermissionException", Message, SrcFunction, SrcFile, FileLine)
898  {}
899 
900  /// @brief Class destructor.
901  virtual ~NetworkPermissionException() throw() {}
902 
903  /// @copydoc Exception::GetExceptionCode()
904  virtual Whole GetExceptionCode() const throw()
906  }; //NetworkPermissionException
907 
908  /// @brief A template metaprogramming construct used to ensure that all required NetworkPermissionException can be created at compile time if the compiler is clever.
909  template<>
911  { typedef NetworkPermissionException Type; };
912 
913 
914  ///////////////////////////////////////////////////////////////////////////////
915  /// @brief Thrown when a write is happening but something has prevented the underlying code from knowing what was writing.
916  ///////////////////
918  {
919  public:
920  /// @brief Thrown when a write is happening but something has prevented the underlying code from knowing what was writing.
921  static const Whole ExceptionCode = Exception::IO_WRITE_EXCEPTION;
922 
923  /// @brief Class constructor.
924  /// @param TypeName The name of this class.
925  /// @param Message A basic description of the error.
926  /// @param SrcFunction The name of the function from which this originated.
927  /// @param SrcFile The name of the file from which this originated.
928  /// @param FileLine The line on the named file from which this originated.
929  IOWriteException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
930  : IOException("IOWriteException", Message, SrcFunction, SrcFile, FileLine)
931  {}
932 
933  /// @brief Class constructor.
934  /// @param Message A basic description of the error.
935  /// @param SrcFunction The name of the function from which this originated.
936  /// @param SrcFile The name of the file from which this originated.
937  /// @param FileLine The line on the named file from which this originated.
938  IOWriteException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
939  : IOException("IOWriteException", Message, SrcFunction, SrcFile, FileLine)
940  {}
941 
942  /// @brief Class destructor.
943  virtual ~IOWriteException() throw() {}
944 
945  /// @copydoc Exception::GetExceptionCode()
946  virtual Whole GetExceptionCode() const throw()
948  }; //IOWriteException
949 
950  /// @brief A template metaprogramming construct used to ensure that all required IOWriteException can be created at compile time if the compiler is clever.
951  template<>
953  { typedef IOWriteException Type; };
954 
955 
956  ///////////////////////////////////////////////////////////////////////////////
957  /// @brief Thrown when a read is happening but something has prevented the underlying code from knowing what was reading.
958  ///////////////////
960  {
961  public:
962  /// @brief Thrown when a read is happening but something has prevented the underlying code from knowing what was reading.
963  static const Whole ExceptionCode = Exception::IO_READ_EXCEPTION;
964 
965  /// @brief Class constructor.
966  /// @param TypeName The name of this class.
967  /// @param Message A basic description of the error.
968  /// @param SrcFunction The name of the function from which this originated.
969  /// @param SrcFile The name of the file from which this originated.
970  /// @param FileLine The line on the named file from which this originated.
971  IOReadException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
972  : IOException("IOReadException", Message, SrcFunction, SrcFile, FileLine)
973  {}
974 
975  /// @brief Class constructor.
976  /// @param Message A basic description of the error.
977  /// @param SrcFunction The name of the function from which this originated.
978  /// @param SrcFile The name of the file from which this originated.
979  /// @param FileLine The line on the named file from which this originated.
980  IOReadException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
981  : IOException("IOReadException", Message, SrcFunction, SrcFile, FileLine)
982  {}
983 
984  /// @brief Class destructor.
985  virtual ~IOReadException() throw() {}
986 
987  /// @copydoc Exception::GetExceptionCode()
988  virtual Whole GetExceptionCode() const throw()
990  }; //IOReadException
991 
992  /// @brief A template metaprogramming construct used to ensure that all required IOReadException can be created at compile time if the compiler is clever.
993  template<>
995  { typedef IOReadException Type; };
996 
997 
998  ///////////////////////////////////////////////////////////////////////////////
999  /// @brief Thrown when an unknown error with using an Identifier and it is invalid.
1000  ///////////////////
1002  {
1003  public:
1004  /// @brief Thrown when an unknown error with using an Identifier and it is invalid.
1005  static const Whole ExceptionCode = Exception::II_EXCEPTION;
1006 
1007  /// @brief Class constructor.
1008  /// @param TypeName The name of this class.
1009  /// @param Message A basic description of the error.
1010  /// @param SrcFunction The name of the function from which this originated.
1011  /// @param SrcFile The name of the file from which this originated.
1012  /// @param FileLine The line on the named file from which this originated.
1013  InstanceIdentityException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1014  : Exception("InstanceIdentityException", Message, SrcFunction, SrcFile, FileLine)
1015  {}
1016 
1017  /// @brief Class constructor.
1018  /// @param Message A basic description of the error.
1019  /// @param SrcFunction The name of the function from which this originated.
1020  /// @param SrcFile The name of the file from which this originated.
1021  /// @param FileLine The line on the named file from which this originated.
1022  InstanceIdentityException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1023  : Exception("InstanceIdentityException", Message, SrcFunction, SrcFile, FileLine)
1024  {}
1025 
1026  /// @brief Class destructor.
1027  virtual ~InstanceIdentityException() throw() {}
1028 
1029  /// @copydoc Exception::GetExceptionCode()
1030  virtual Whole GetExceptionCode() const throw()
1032  }; //InstanceIdentityException
1033 
1034  /// @brief A template metaprogramming construct used to ensure that all required InstanceIdentityException can be created at compile time if the compiler is clever.
1035  template<>
1037  { typedef InstanceIdentityException Type; };
1038 
1039 
1040  ///////////////////////////////////////////////////////////////////////////////
1041  /// @brief Thrown when the identity string wasn't valid at all.
1042  ///////////////////
1044  {
1045  public:
1046  /// @brief Thrown when the identity string wasn't valid at all.
1047  static const Whole ExceptionCode = Exception::II_IDENTITY_INVALID_EXCEPTION;
1048 
1049  /// @brief Class constructor.
1050  /// @param TypeName The name of this class.
1051  /// @param Message A basic description of the error.
1052  /// @param SrcFunction The name of the function from which this originated.
1053  /// @param SrcFile The name of the file from which this originated.
1054  /// @param FileLine The line on the named file from which this originated.
1055  InstanceIdentityInvalidException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1056  : InstanceIdentityException("InstanceIdentityInvalidException", Message, SrcFunction, SrcFile, FileLine)
1057  {}
1058 
1059  /// @brief Class constructor.
1060  /// @param Message A basic description of the error.
1061  /// @param SrcFunction The name of the function from which this originated.
1062  /// @param SrcFile The name of the file from which this originated.
1063  /// @param FileLine The line on the named file from which this originated.
1064  InstanceIdentityInvalidException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1065  : InstanceIdentityException("InstanceIdentityInvalidException", Message, SrcFunction, SrcFile, FileLine)
1066  {}
1067 
1068  /// @brief Class destructor.
1070 
1071  /// @copydoc Exception::GetExceptionCode()
1072  virtual Whole GetExceptionCode() const throw()
1074  }; //InstanceIdentityInvalidException
1075 
1076  /// @brief A template metaprogramming construct used to ensure that all required InstanceIdentityInvalidException can be created at compile time if the compiler is clever.
1077  template<>
1080 
1081 
1082  ///////////////////////////////////////////////////////////////////////////////
1083  /// @brief Thrown when the requested identity could not be found.
1084  ///////////////////
1086  {
1087  public:
1088  /// @brief Thrown when the requested identity could not be found.
1090 
1091  /// @brief Class constructor.
1092  /// @param TypeName The name of this class.
1093  /// @param Message A basic description of the error.
1094  /// @param SrcFunction The name of the function from which this originated.
1095  /// @param SrcFile The name of the file from which this originated.
1096  /// @param FileLine The line on the named file from which this originated.
1097  InstanceIdentityNotFoundException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1098  : InstanceIdentityException("InstanceIdentityNotFoundException", Message, SrcFunction, SrcFile, FileLine)
1099  {}
1100 
1101  /// @brief Class constructor.
1102  /// @param Message A basic description of the error.
1103  /// @param SrcFunction The name of the function from which this originated.
1104  /// @param SrcFile The name of the file from which this originated.
1105  /// @param FileLine The line on the named file from which this originated.
1106  InstanceIdentityNotFoundException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1107  : InstanceIdentityException("InstanceIdentityNotFoundException", Message, SrcFunction, SrcFile, FileLine)
1108  {}
1109 
1110  /// @brief Class destructor.
1112 
1113  /// @copydoc Exception::GetExceptionCode()
1114  virtual Whole GetExceptionCode() const throw()
1116  }; //InstanceIdentityNotFoundException
1117 
1118  /// @brief A template metaprogramming construct used to ensure that all required InstanceIdentityNotFoundException can be created at compile time if the compiler is clever.
1119  template<>
1122 
1123 
1124  ///////////////////////////////////////////////////////////////////////////////
1125  /// @brief Thrown when duplicates of teh same identity string exist.
1126  ///////////////////
1128  {
1129  public:
1130  /// @brief Thrown when duplicates of teh same identity string exist.
1132 
1133  /// @brief Class constructor.
1134  /// @param TypeName The name of this class.
1135  /// @param Message A basic description of the error.
1136  /// @param SrcFunction The name of the function from which this originated.
1137  /// @param SrcFile The name of the file from which this originated.
1138  /// @param FileLine The line on the named file from which this originated.
1139  InstanceIdentityDuplicateException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1140  : InstanceIdentityException("InstanceIdentityDuplicateException", Message, SrcFunction, SrcFile, FileLine)
1141  {}
1142 
1143  /// @brief Class constructor.
1144  /// @param Message A basic description of the error.
1145  /// @param SrcFunction The name of the function from which this originated.
1146  /// @param SrcFile The name of the file from which this originated.
1147  /// @param FileLine The line on the named file from which this originated.
1148  InstanceIdentityDuplicateException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1149  : InstanceIdentityException("InstanceIdentityDuplicateException", Message, SrcFunction, SrcFile, FileLine)
1150  {}
1151 
1152  /// @brief Class destructor.
1154 
1155  /// @copydoc Exception::GetExceptionCode()
1156  virtual Whole GetExceptionCode() const throw()
1158  }; //InstanceIdentityDuplicateException
1159 
1160  /// @brief A template metaprogramming construct used to ensure that all required InstanceIdentityDuplicateException can be created at compile time if the compiler is clever.
1161  template<>
1164 
1165 
1166  ///////////////////////////////////////////////////////////////////////////////
1167  /// @brief Thrown when an unknown memory management exception occurs.
1168  ///////////////////
1170  {
1171  public:
1172  /// @brief Thrown when an unknown memory management exception occurs.
1173  static const Whole ExceptionCode = Exception::MM_EXCEPTION;
1174 
1175  /// @brief Class constructor.
1176  /// @param TypeName The name of this class.
1177  /// @param Message A basic description of the error.
1178  /// @param SrcFunction The name of the function from which this originated.
1179  /// @param SrcFile The name of the file from which this originated.
1180  /// @param FileLine The line on the named file from which this originated.
1181  MemoryManagementException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1182  : Exception("MemoryManagementException", Message, SrcFunction, SrcFile, FileLine)
1183  {}
1184 
1185  /// @brief Class constructor.
1186  /// @param Message A basic description of the error.
1187  /// @param SrcFunction The name of the function from which this originated.
1188  /// @param SrcFile The name of the file from which this originated.
1189  /// @param FileLine The line on the named file from which this originated.
1190  MemoryManagementException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1191  : Exception("MemoryManagementException", Message, SrcFunction, SrcFile, FileLine)
1192  {}
1193 
1194  /// @brief Class destructor.
1195  virtual ~MemoryManagementException() throw() {}
1196 
1197  /// @copydoc Exception::GetExceptionCode()
1198  virtual Whole GetExceptionCode() const throw()
1200  }; //MemoryManagementException
1201 
1202  /// @brief A template metaprogramming construct used to ensure that all required MemoryManagementException can be created at compile time if the compiler is clever.
1203  template<>
1205  { typedef MemoryManagementException Type; };
1206 
1207 
1208  ///////////////////////////////////////////////////////////////////////////////
1209  /// @brief Thrown when A memory allocation was attempted and failed.
1210  ///////////////////
1212  {
1213  public:
1214  /// @brief Thrown when A memory allocation was attempted and failed.
1215  static const Whole ExceptionCode = Exception::MM_OUT_OF_MEMORY_EXCEPTION;
1216 
1217  /// @brief Class constructor.
1218  /// @param TypeName The name of this class.
1219  /// @param Message A basic description of the error.
1220  /// @param SrcFunction The name of the function from which this originated.
1221  /// @param SrcFile The name of the file from which this originated.
1222  /// @param FileLine The line on the named file from which this originated.
1223  OutOfMemoryException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1224  : MemoryManagementException("OutOfMemoryException", Message, SrcFunction, SrcFile, FileLine)
1225  {}
1226 
1227  /// @brief Class constructor.
1228  /// @param Message A basic description of the error.
1229  /// @param SrcFunction The name of the function from which this originated.
1230  /// @param SrcFile The name of the file from which this originated.
1231  /// @param FileLine The line on the named file from which this originated.
1232  OutOfMemoryException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1233  : MemoryManagementException("OutOfMemoryException", Message, SrcFunction, SrcFile, FileLine)
1234  {}
1235 
1236  /// @brief Class destructor.
1237  virtual ~OutOfMemoryException() throw() {}
1238 
1239  /// @copydoc Exception::GetExceptionCode()
1240  virtual Whole GetExceptionCode() const throw()
1242  }; //OutOfMemoryException
1243 
1244  /// @brief A template metaprogramming construct used to ensure that all required OutOfMemoryException can be created at compile time if the compiler is clever.
1245  template<>
1247  { typedef OutOfMemoryException Type; };
1248 
1249 
1250  ///////////////////////////////////////////////////////////////////////////////
1251  /// @brief Thrown when attempted to access something that really should note be accessed.
1252  ///////////////////
1254  {
1255  public:
1256  /// @brief Thrown when attempted to access something that really should note be accessed.
1257  static const Whole ExceptionCode = Exception::MM_OUT_OF_BOUNDS_EXCEPTION;
1258 
1259  /// @brief Class constructor.
1260  /// @param TypeName The name of this class.
1261  /// @param Message A basic description of the error.
1262  /// @param SrcFunction The name of the function from which this originated.
1263  /// @param SrcFile The name of the file from which this originated.
1264  /// @param FileLine The line on the named file from which this originated.
1265  MemoryOutOfBoundsException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1266  : MemoryManagementException("MemoryOutOfBoundsException", Message, SrcFunction, SrcFile, FileLine)
1267  {}
1268 
1269  /// @brief Class constructor.
1270  /// @param Message A basic description of the error.
1271  /// @param SrcFunction The name of the function from which this originated.
1272  /// @param SrcFile The name of the file from which this originated.
1273  /// @param FileLine The line on the named file from which this originated.
1274  MemoryOutOfBoundsException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1275  : MemoryManagementException("MemoryOutOfBoundsException", Message, SrcFunction, SrcFile, FileLine)
1276  {}
1277 
1278  /// @brief Class destructor.
1279  virtual ~MemoryOutOfBoundsException() throw() {}
1280 
1281  /// @copydoc Exception::GetExceptionCode()
1282  virtual Whole GetExceptionCode() const throw()
1284  }; //MemoryOutOfBoundsException
1285 
1286  /// @brief A template metaprogramming construct used to ensure that all required MemoryOutOfBoundsException can be created at compile time if the compiler is clever.
1287  template<>
1289  { typedef MemoryOutOfBoundsException Type; };
1290 
1291 
1292  ///////////////////////////////////////////////////////////////////////////////
1293  /// @brief Thrown when some kind of syntax exception
1294  ///////////////////
1296  {
1297  public:
1298  /// @brief Thrown when some kind of syntax exception
1299  static const Whole ExceptionCode = Exception::SYNTAX_ERROR_EXCEPTION;
1300 
1301  /// @brief Class constructor.
1302  /// @param TypeName The name of this class.
1303  /// @param Message A basic description of the error.
1304  /// @param SrcFunction The name of the function from which this originated.
1305  /// @param SrcFile The name of the file from which this originated.
1306  /// @param FileLine The line on the named file from which this originated.
1307  SyntaxErrorException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1308  : Exception("SyntaxErrorException", Message, SrcFunction, SrcFile, FileLine)
1309  {}
1310 
1311  /// @brief Class constructor.
1312  /// @param Message A basic description of the error.
1313  /// @param SrcFunction The name of the function from which this originated.
1314  /// @param SrcFile The name of the file from which this originated.
1315  /// @param FileLine The line on the named file from which this originated.
1316  SyntaxErrorException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1317  : Exception("SyntaxErrorException", Message, SrcFunction, SrcFile, FileLine)
1318  {}
1319 
1320  /// @brief Class destructor.
1321  virtual ~SyntaxErrorException() throw() {}
1322 
1323  /// @copydoc Exception::GetExceptionCode()
1324  virtual Whole GetExceptionCode() const throw()
1326  }; //SyntaxErrorException
1327 
1328  /// @brief A template metaprogramming construct used to ensure that all required SyntaxErrorException can be created at compile time if the compiler is clever.
1329  template<>
1331  { typedef SyntaxErrorException Type; };
1332 
1333 
1334  ///////////////////////////////////////////////////////////////////////////////
1335  /// @brief Thrown when and XML document is being parsed but is invalid
1336  ///////////////////
1338  {
1339  public:
1340  /// @brief Thrown when and XML document is being parsed but is invalid
1341  static const Whole ExceptionCode = Exception::SYNTAX_ERROR_EXCEPTION_XML;
1342 
1343  /// @brief Class constructor.
1344  /// @param TypeName The name of this class.
1345  /// @param Message A basic description of the error.
1346  /// @param SrcFunction The name of the function from which this originated.
1347  /// @param SrcFile The name of the file from which this originated.
1348  /// @param FileLine The line on the named file from which this originated.
1349  SyntaxErrorXMLException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1350  : SyntaxErrorException("SyntaxErrorXMLException", Message, SrcFunction, SrcFile, FileLine)
1351  {}
1352 
1353  /// @brief Class constructor.
1354  /// @param Message A basic description of the error.
1355  /// @param SrcFunction The name of the function from which this originated.
1356  /// @param SrcFile The name of the file from which this originated.
1357  /// @param FileLine The line on the named file from which this originated.
1358  SyntaxErrorXMLException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1359  : SyntaxErrorException("SyntaxErrorXMLException", Message, SrcFunction, SrcFile, FileLine)
1360  {}
1361 
1362  /// @brief Class destructor.
1363  virtual ~SyntaxErrorXMLException() throw() {}
1364 
1365  /// @copydoc Exception::GetExceptionCode()
1366  virtual Whole GetExceptionCode() const throw()
1368  }; //SyntaxErrorXMLException
1369 
1370  /// @brief A template metaprogramming construct used to ensure that all required SyntaxErrorXMLException can be created at compile time if the compiler is clever.
1371  template<>
1373  { typedef SyntaxErrorXMLException Type; };
1374 
1375 
1376  ///////////////////////////////////////////////////////////////////////////////
1377  /// @brief Thrown when an XPath query is being parsed but is invalid
1378  ///////////////////
1380  {
1381  public:
1382  /// @brief Thrown when an XPath query is being parsed but is invalid
1383  static const Whole ExceptionCode = Exception::SYNTAX_ERROR_EXCEPTION_XPATH;
1384 
1385  /// @brief Class constructor.
1386  /// @param TypeName The name of this class.
1387  /// @param Message A basic description of the error.
1388  /// @param SrcFunction The name of the function from which this originated.
1389  /// @param SrcFile The name of the file from which this originated.
1390  /// @param FileLine The line on the named file from which this originated.
1391  SyntaxErrorXPathException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1392  : SyntaxErrorException("SyntaxErrorXPathException", Message, SrcFunction, SrcFile, FileLine)
1393  {}
1394 
1395  /// @brief Class constructor.
1396  /// @param Message A basic description of the error.
1397  /// @param SrcFunction The name of the function from which this originated.
1398  /// @param SrcFile The name of the file from which this originated.
1399  /// @param FileLine The line on the named file from which this originated.
1400  SyntaxErrorXPathException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1401  : SyntaxErrorException("SyntaxErrorXPathException", Message, SrcFunction, SrcFile, FileLine)
1402  {}
1403 
1404  /// @brief Class destructor.
1405  virtual ~SyntaxErrorXPathException() throw() {}
1406 
1407  /// @copydoc Exception::GetExceptionCode()
1408  virtual Whole GetExceptionCode() const throw()
1410  }; //SyntaxErrorXPathException
1411 
1412  /// @brief A template metaprogramming construct used to ensure that all required SyntaxErrorXPathException can be created at compile time if the compiler is clever.
1413  template<>
1415  { typedef SyntaxErrorXPathException Type; };
1416 
1417 
1418  ///////////////////////////////////////////////////////////////////////////////
1419  /// @brief Thrown when lua code in incorrect.
1420  ///////////////////
1422  {
1423  public:
1424  /// @brief Thrown when lua code in incorrect.
1425  static const Whole ExceptionCode = Exception::SYNTAX_ERROR_EXCEPTION_LUA;
1426 
1427  /// @brief Class constructor.
1428  /// @param TypeName The name of this class.
1429  /// @param Message A basic description of the error.
1430  /// @param SrcFunction The name of the function from which this originated.
1431  /// @param SrcFile The name of the file from which this originated.
1432  /// @param FileLine The line on the named file from which this originated.
1433  SyntaxErrorLuaException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1434  : SyntaxErrorException("SyntaxErrorLuaException", Message, SrcFunction, SrcFile, FileLine)
1435  {}
1436 
1437  /// @brief Class constructor.
1438  /// @param Message A basic description of the error.
1439  /// @param SrcFunction The name of the function from which this originated.
1440  /// @param SrcFile The name of the file from which this originated.
1441  /// @param FileLine The line on the named file from which this originated.
1442  SyntaxErrorLuaException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1443  : SyntaxErrorException("SyntaxErrorLuaException", Message, SrcFunction, SrcFile, FileLine)
1444  {}
1445 
1446  /// @brief Class destructor.
1447  virtual ~SyntaxErrorLuaException() throw() {}
1448 
1449  /// @copydoc Exception::GetExceptionCode()
1450  virtual Whole GetExceptionCode() const throw()
1452  }; //SyntaxErrorLuaException
1453 
1454  /// @brief A template metaprogramming construct used to ensure that all required SyntaxErrorLuaException can be created at compile time if the compiler is clever.
1455  template<>
1457  { typedef SyntaxErrorLuaException Type; };
1458 
1459 
1460  ///////////////////////////////////////////////////////////////////////////////
1461  /// @brief Thrown when an unknown error happens with a script.
1462  ///////////////////
1464  {
1465  public:
1466  /// @brief Thrown when an unknown error happens with a script.
1467  static const Whole ExceptionCode = Exception::SCRIPT_EXCEPTION;
1468 
1469  /// @brief Class constructor.
1470  /// @param TypeName The name of this class.
1471  /// @param Message A basic description of the error.
1472  /// @param SrcFunction The name of the function from which this originated.
1473  /// @param SrcFile The name of the file from which this originated.
1474  /// @param FileLine The line on the named file from which this originated.
1475  ScriptException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1476  : Exception("ScriptException", Message, SrcFunction, SrcFile, FileLine)
1477  {}
1478 
1479  /// @brief Class constructor.
1480  /// @param Message A basic description of the error.
1481  /// @param SrcFunction The name of the function from which this originated.
1482  /// @param SrcFile The name of the file from which this originated.
1483  /// @param FileLine The line on the named file from which this originated.
1484  ScriptException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1485  : Exception("ScriptException", Message, SrcFunction, SrcFile, FileLine)
1486  {}
1487 
1488  /// @brief Class destructor.
1489  virtual ~ScriptException() throw() {}
1490 
1491  /// @copydoc Exception::GetExceptionCode()
1492  virtual Whole GetExceptionCode() const throw()
1493  { return ScriptException::ExceptionCode; }
1494  }; //ScriptException
1495 
1496  /// @brief A template metaprogramming construct used to ensure that all required ScriptException can be created at compile time if the compiler is clever.
1497  template<>
1499  { typedef ScriptException Type; };
1500 
1501 
1502  ///////////////////////////////////////////////////////////////////////////////
1503  /// @brief Thrown when an unknown error happens in a Lua script.
1504  ///////////////////
1506  {
1507  public:
1508  /// @brief Thrown when an unknown error happens in a Lua script.
1509  static const Whole ExceptionCode = Exception::SCRIPT_EXCEPTION_LUA;
1510 
1511  /// @brief Class constructor.
1512  /// @param TypeName The name of this class.
1513  /// @param Message A basic description of the error.
1514  /// @param SrcFunction The name of the function from which this originated.
1515  /// @param SrcFile The name of the file from which this originated.
1516  /// @param FileLine The line on the named file from which this originated.
1517  ScriptLuaException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1518  : ScriptException("ScriptLuaException", Message, SrcFunction, SrcFile, FileLine)
1519  {}
1520 
1521  /// @brief Class constructor.
1522  /// @param Message A basic description of the error.
1523  /// @param SrcFunction The name of the function from which this originated.
1524  /// @param SrcFile The name of the file from which this originated.
1525  /// @param FileLine The line on the named file from which this originated.
1526  ScriptLuaException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1527  : ScriptException("ScriptLuaException", Message, SrcFunction, SrcFile, FileLine)
1528  {}
1529 
1530  /// @brief Class destructor.
1531  virtual ~ScriptLuaException() throw() {}
1532 
1533  /// @copydoc Exception::GetExceptionCode()
1534  virtual Whole GetExceptionCode() const throw()
1536  }; //ScriptLuaException
1537 
1538  /// @brief A template metaprogramming construct used to ensure that all required ScriptLuaException can be created at compile time if the compiler is clever.
1539  template<>
1541  { typedef ScriptLuaException Type; };
1542 
1543 
1544  ///////////////////////////////////////////////////////////////////////////////
1545  /// @brief Thrown when Lua returns a yield and it should not have.
1546  ///////////////////
1548  {
1549  public:
1550  /// @brief Thrown when Lua returns a yield and it should not have.
1551  static const Whole ExceptionCode = Exception::SCRIPT_EXCEPTION_LUA_YIELD;
1552 
1553  /// @brief Class constructor.
1554  /// @param TypeName The name of this class.
1555  /// @param Message A basic description of the error.
1556  /// @param SrcFunction The name of the function from which this originated.
1557  /// @param SrcFile The name of the file from which this originated.
1558  /// @param FileLine The line on the named file from which this originated.
1559  ScriptLuaYieldException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1560  : ScriptLuaException("ScriptLuaYieldException", Message, SrcFunction, SrcFile, FileLine)
1561  {}
1562 
1563  /// @brief Class constructor.
1564  /// @param Message A basic description of the error.
1565  /// @param SrcFunction The name of the function from which this originated.
1566  /// @param SrcFile The name of the file from which this originated.
1567  /// @param FileLine The line on the named file from which this originated.
1568  ScriptLuaYieldException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1569  : ScriptLuaException("ScriptLuaYieldException", Message, SrcFunction, SrcFile, FileLine)
1570  {}
1571 
1572  /// @brief Class destructor.
1573  virtual ~ScriptLuaYieldException() throw() {}
1574 
1575  /// @copydoc Exception::GetExceptionCode()
1576  virtual Whole GetExceptionCode() const throw()
1578  }; //ScriptLuaYieldException
1579 
1580  /// @brief A template metaprogramming construct used to ensure that all required ScriptLuaYieldException can be created at compile time if the compiler is clever.
1581  template<>
1583  { typedef ScriptLuaYieldException Type; };
1584 
1585 
1586  ///////////////////////////////////////////////////////////////////////////////
1587  /// @brief Thrown when a Lua script has a runtime error.
1588  ///////////////////
1590  {
1591  public:
1592  /// @brief Thrown when a Lua script has a runtime error.
1593  static const Whole ExceptionCode = Exception::SCRIPT_EXCEPTION_LUA_RUNTIME;
1594 
1595  /// @brief Class constructor.
1596  /// @param TypeName The name of this class.
1597  /// @param Message A basic description of the error.
1598  /// @param SrcFunction The name of the function from which this originated.
1599  /// @param SrcFile The name of the file from which this originated.
1600  /// @param FileLine The line on the named file from which this originated.
1601  ScriptLuaRuntimeException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1602  : ScriptLuaException("ScriptLuaRuntimeException", Message, SrcFunction, SrcFile, FileLine)
1603  {}
1604 
1605  /// @brief Class constructor.
1606  /// @param Message A basic description of the error.
1607  /// @param SrcFunction The name of the function from which this originated.
1608  /// @param SrcFile The name of the file from which this originated.
1609  /// @param FileLine The line on the named file from which this originated.
1610  ScriptLuaRuntimeException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1611  : ScriptLuaException("ScriptLuaRuntimeException", Message, SrcFunction, SrcFile, FileLine)
1612  {}
1613 
1614  /// @brief Class destructor.
1615  virtual ~ScriptLuaRuntimeException() throw() {}
1616 
1617  /// @copydoc Exception::GetExceptionCode()
1618  virtual Whole GetExceptionCode() const throw()
1620  }; //ScriptLuaRuntimeException
1621 
1622  /// @brief A template metaprogramming construct used to ensure that all required ScriptLuaRuntimeException can be created at compile time if the compiler is clever.
1623  template<>
1625  { typedef ScriptLuaRuntimeException Type; };
1626 
1627 
1628  ///////////////////////////////////////////////////////////////////////////////
1629  /// @brief Thrown when Lua has an error handling an error.
1630  ///////////////////
1632  {
1633  public:
1634  /// @brief Thrown when Lua has an error handling an error.
1635  static const Whole ExceptionCode = Exception::SCRIPT_EXCEPTION_LUA_ERRERR;
1636 
1637  /// @brief Class constructor.
1638  /// @param TypeName The name of this class.
1639  /// @param Message A basic description of the error.
1640  /// @param SrcFunction The name of the function from which this originated.
1641  /// @param SrcFile The name of the file from which this originated.
1642  /// @param FileLine The line on the named file from which this originated.
1643  ScriptLuaErrErrException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1644  : ScriptLuaException("ScriptLuaErrErrException", Message, SrcFunction, SrcFile, FileLine)
1645  {}
1646 
1647  /// @brief Class constructor.
1648  /// @param Message A basic description of the error.
1649  /// @param SrcFunction The name of the function from which this originated.
1650  /// @param SrcFile The name of the file from which this originated.
1651  /// @param FileLine The line on the named file from which this originated.
1652  ScriptLuaErrErrException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1653  : ScriptLuaException("ScriptLuaErrErrException", Message, SrcFunction, SrcFile, FileLine)
1654  {}
1655 
1656  /// @brief Class destructor.
1657  virtual ~ScriptLuaErrErrException() throw() {}
1658 
1659  /// @copydoc Exception::GetExceptionCode()
1660  virtual Whole GetExceptionCode() const throw()
1662  }; //ScriptLuaErrErrException
1663 
1664  /// @brief A template metaprogramming construct used to ensure that all required ScriptLuaErrErrException can be created at compile time if the compiler is clever.
1665  template<>
1667  { typedef ScriptLuaErrErrException Type; };
1668 
1669 
1670  ///////////////////////////////////////////////////////////////////////////////
1671  /// @brief Thrown when parameters are checked at runtime and found invalid.
1672  ///////////////////
1674  {
1675  public:
1676  /// @brief Thrown when parameters are checked at runtime and found invalid.
1677  static const Whole ExceptionCode = Exception::PARAMETERS_EXCEPTION;
1678 
1679  /// @brief Class constructor.
1680  /// @param TypeName The name of this class.
1681  /// @param Message A basic description of the error.
1682  /// @param SrcFunction The name of the function from which this originated.
1683  /// @param SrcFile The name of the file from which this originated.
1684  /// @param FileLine The line on the named file from which this originated.
1685  ParametersException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1686  : Exception("ParametersException", Message, SrcFunction, SrcFile, FileLine)
1687  {}
1688 
1689  /// @brief Class constructor.
1690  /// @param Message A basic description of the error.
1691  /// @param SrcFunction The name of the function from which this originated.
1692  /// @param SrcFile The name of the file from which this originated.
1693  /// @param FileLine The line on the named file from which this originated.
1694  ParametersException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1695  : Exception("ParametersException", Message, SrcFunction, SrcFile, FileLine)
1696  {}
1697 
1698  /// @brief Class destructor.
1699  virtual ~ParametersException() throw() {}
1700 
1701  /// @copydoc Exception::GetExceptionCode()
1702  virtual Whole GetExceptionCode() const throw()
1704  }; //ParametersException
1705 
1706  /// @brief A template metaprogramming construct used to ensure that all required ParametersException can be created at compile time if the compiler is clever.
1707  template<>
1709  { typedef ParametersException Type; };
1710 
1711 
1712  ///////////////////////////////////////////////////////////////////////////////
1713  /// @brief Thrown when a pointer parameter is checked at runtime and cannot be cast as expected.
1714  ///////////////////
1716  {
1717  public:
1718  /// @brief Thrown when a pointer parameter is checked at runtime and cannot be cast as expected.
1719  static const Whole ExceptionCode = Exception::PARAMETERS_CAST_EXCEPTION;
1720 
1721  /// @brief Class constructor.
1722  /// @param TypeName The name of this class.
1723  /// @param Message A basic description of the error.
1724  /// @param SrcFunction The name of the function from which this originated.
1725  /// @param SrcFile The name of the file from which this originated.
1726  /// @param FileLine The line on the named file from which this originated.
1727  ParametersCastException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1728  : ParametersException("ParametersCastException", Message, SrcFunction, SrcFile, FileLine)
1729  {}
1730 
1731  /// @brief Class constructor.
1732  /// @param Message A basic description of the error.
1733  /// @param SrcFunction The name of the function from which this originated.
1734  /// @param SrcFile The name of the file from which this originated.
1735  /// @param FileLine The line on the named file from which this originated.
1736  ParametersCastException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1737  : ParametersException("ParametersCastException", Message, SrcFunction, SrcFile, FileLine)
1738  {}
1739 
1740  /// @brief Class destructor.
1741  virtual ~ParametersCastException() throw() {}
1742 
1743  /// @copydoc Exception::GetExceptionCode()
1744  virtual Whole GetExceptionCode() const throw()
1746  }; //ParametersCastException
1747 
1748  /// @brief A template metaprogramming construct used to ensure that all required ParametersCastException can be created at compile time if the compiler is clever.
1749  template<>
1751  { typedef ParametersCastException Type; };
1752 
1753 
1754  ///////////////////////////////////////////////////////////////////////////////
1755  /// @brief Thrown when a passed parameter is checked at runtime and not in the expected range.
1756  ///////////////////
1758  {
1759  public:
1760  /// @brief Thrown when a passed parameter is checked at runtime and not in the expected range.
1761  static const Whole ExceptionCode = Exception::PARAMETERS_RANGE_EXCEPTION;
1762 
1763  /// @brief Class constructor.
1764  /// @param TypeName The name of this class.
1765  /// @param Message A basic description of the error.
1766  /// @param SrcFunction The name of the function from which this originated.
1767  /// @param SrcFile The name of the file from which this originated.
1768  /// @param FileLine The line on the named file from which this originated.
1769  ParametersRangeException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1770  : ParametersException("ParametersRangeException", Message, SrcFunction, SrcFile, FileLine)
1771  {}
1772 
1773  /// @brief Class constructor.
1774  /// @param Message A basic description of the error.
1775  /// @param SrcFunction The name of the function from which this originated.
1776  /// @param SrcFile The name of the file from which this originated.
1777  /// @param FileLine The line on the named file from which this originated.
1778  ParametersRangeException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1779  : ParametersException("ParametersRangeException", Message, SrcFunction, SrcFile, FileLine)
1780  {}
1781 
1782  /// @brief Class destructor.
1783  virtual ~ParametersRangeException() throw() {}
1784 
1785  /// @copydoc Exception::GetExceptionCode()
1786  virtual Whole GetExceptionCode() const throw()
1788  }; //ParametersRangeException
1789 
1790  /// @brief A template metaprogramming construct used to ensure that all required ParametersRangeException can be created at compile time if the compiler is clever.
1791  template<>
1793  { typedef ParametersRangeException Type; };
1794 
1795 
1796  ///////////////////////////////////////////////////////////////////////////////
1797  /// @brief Thrown when Math has failed.
1798  ///////////////////
1800  {
1801  public:
1802  /// @brief Thrown when Math has failed.
1803  static const Whole ExceptionCode = Exception::ARITHMETIC_EXCEPTION;
1804 
1805  /// @brief Class constructor.
1806  /// @param TypeName The name of this class.
1807  /// @param Message A basic description of the error.
1808  /// @param SrcFunction The name of the function from which this originated.
1809  /// @param SrcFile The name of the file from which this originated.
1810  /// @param FileLine The line on the named file from which this originated.
1811  ArithmeticException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1812  : Exception("ArithmeticException", Message, SrcFunction, SrcFile, FileLine)
1813  {}
1814 
1815  /// @brief Class constructor.
1816  /// @param Message A basic description of the error.
1817  /// @param SrcFunction The name of the function from which this originated.
1818  /// @param SrcFile The name of the file from which this originated.
1819  /// @param FileLine The line on the named file from which this originated.
1820  ArithmeticException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1821  : Exception("ArithmeticException", Message, SrcFunction, SrcFile, FileLine)
1822  {}
1823 
1824  /// @brief Class destructor.
1825  virtual ~ArithmeticException() throw() {}
1826 
1827  /// @copydoc Exception::GetExceptionCode()
1828  virtual Whole GetExceptionCode() const throw()
1830  }; //ArithmeticException
1831 
1832  /// @brief A template metaprogramming construct used to ensure that all required ArithmeticException can be created at compile time if the compiler is clever.
1833  template<>
1835  { typedef ArithmeticException Type; };
1836 
1837 
1838  ///////////////////////////////////////////////////////////////////////////////
1839  /// @brief Thrown when a version is accessed/parsed/required and it cannot work correctly or is missing.
1840  ///////////////////
1842  {
1843  public:
1844  /// @brief Thrown when a version is accessed/parsed/required and it cannot work correctly or is missing.
1845  static const Whole ExceptionCode = Exception::INVALID_VERSION_EXCEPTION;
1846 
1847  /// @brief Class constructor.
1848  /// @param TypeName The name of this class.
1849  /// @param Message A basic description of the error.
1850  /// @param SrcFunction The name of the function from which this originated.
1851  /// @param SrcFile The name of the file from which this originated.
1852  /// @param FileLine The line on the named file from which this originated.
1853  InvalidVersionException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1854  : Exception("InvalidVersionException", Message, SrcFunction, SrcFile, FileLine)
1855  {}
1856 
1857  /// @brief Class constructor.
1858  /// @param Message A basic description of the error.
1859  /// @param SrcFunction The name of the function from which this originated.
1860  /// @param SrcFile The name of the file from which this originated.
1861  /// @param FileLine The line on the named file from which this originated.
1862  InvalidVersionException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1863  : Exception("InvalidVersionException", Message, SrcFunction, SrcFile, FileLine)
1864  {}
1865 
1866  /// @brief Class destructor.
1867  virtual ~InvalidVersionException() throw() {}
1868 
1869  /// @copydoc Exception::GetExceptionCode()
1870  virtual Whole GetExceptionCode() const throw()
1872  }; //InvalidVersionException
1873 
1874  /// @brief A template metaprogramming construct used to ensure that all required InvalidVersionException can be created at compile time if the compiler is clever.
1875  template<>
1877  { typedef InvalidVersionException Type; };
1878 
1879 
1880  ///////////////////////////////////////////////////////////////////////////////
1881  /// @brief Thrown when the available information should have worked but failed for unknown reasons.
1882  ///////////////////
1884  {
1885  public:
1886  /// @brief Thrown when the available information should have worked but failed for unknown reasons.
1887  static const Whole ExceptionCode = Exception::INVALID_STATE_EXCEPTION;
1888 
1889  /// @brief Class constructor.
1890  /// @param TypeName The name of this class.
1891  /// @param Message A basic description of the error.
1892  /// @param SrcFunction The name of the function from which this originated.
1893  /// @param SrcFile The name of the file from which this originated.
1894  /// @param FileLine The line on the named file from which this originated.
1895  InvalidStateException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1896  : Exception("InvalidStateException", Message, SrcFunction, SrcFile, FileLine)
1897  {}
1898 
1899  /// @brief Class constructor.
1900  /// @param Message A basic description of the error.
1901  /// @param SrcFunction The name of the function from which this originated.
1902  /// @param SrcFile The name of the file from which this originated.
1903  /// @param FileLine The line on the named file from which this originated.
1904  InvalidStateException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1905  : Exception("InvalidStateException", Message, SrcFunction, SrcFile, FileLine)
1906  {}
1907 
1908  /// @brief Class destructor.
1909  virtual ~InvalidStateException() throw() {}
1910 
1911  /// @copydoc Exception::GetExceptionCode()
1912  virtual Whole GetExceptionCode() const throw()
1914  }; //InvalidStateException
1915 
1916  /// @brief A template metaprogramming construct used to ensure that all required InvalidStateException can be created at compile time if the compiler is clever.
1917  template<>
1919  { typedef InvalidStateException Type; };
1920 
1921 
1922  ///////////////////////////////////////////////////////////////////////////////
1923  /// @brief Thrown when the graphics card/DirectX/OpenGL fail.
1924  ///////////////////
1926  {
1927  public:
1928  /// @brief Thrown when the graphics card/DirectX/OpenGL fail.
1929  static const Whole ExceptionCode = Exception::RENDERINGAPI_EXCEPTION;
1930 
1931  /// @brief Class constructor.
1932  /// @param TypeName The name of this class.
1933  /// @param Message A basic description of the error.
1934  /// @param SrcFunction The name of the function from which this originated.
1935  /// @param SrcFile The name of the file from which this originated.
1936  /// @param FileLine The line on the named file from which this originated.
1937  RenderingAPIException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1938  : Exception("RenderingAPIException", Message, SrcFunction, SrcFile, FileLine)
1939  {}
1940 
1941  /// @brief Class constructor.
1942  /// @param Message A basic description of the error.
1943  /// @param SrcFunction The name of the function from which this originated.
1944  /// @param SrcFile The name of the file from which this originated.
1945  /// @param FileLine The line on the named file from which this originated.
1946  RenderingAPIException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1947  : Exception("RenderingAPIException", Message, SrcFunction, SrcFile, FileLine)
1948  {}
1949 
1950  /// @brief Class destructor.
1951  virtual ~RenderingAPIException() throw() {}
1952 
1953  /// @copydoc Exception::GetExceptionCode()
1954  virtual Whole GetExceptionCode() const throw()
1956  }; //RenderingAPIException
1957 
1958  /// @brief A template metaprogramming construct used to ensure that all required RenderingAPIException can be created at compile time if the compiler is clever.
1959  template<>
1961  { typedef RenderingAPIException Type; };
1962 
1963 
1964  ///////////////////////////////////////////////////////////////////////////////
1965  /// @brief Thrown when a rutime assertion could have been thrown.
1966  ///////////////////
1968  {
1969  public:
1970  /// @brief Thrown when a rutime assertion could have been thrown.
1971  static const Whole ExceptionCode = Exception::RT_ASSERTION_EXCEPTION;
1972 
1973  /// @brief Class constructor.
1974  /// @param TypeName The name of this class.
1975  /// @param Message A basic description of the error.
1976  /// @param SrcFunction The name of the function from which this originated.
1977  /// @param SrcFile The name of the file from which this originated.
1978  /// @param FileLine The line on the named file from which this originated.
1979  RuntimeAssertionException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1980  : Exception("RuntimeAssertionException", Message, SrcFunction, SrcFile, FileLine)
1981  {}
1982 
1983  /// @brief Class constructor.
1984  /// @param Message A basic description of the error.
1985  /// @param SrcFunction The name of the function from which this originated.
1986  /// @param SrcFile The name of the file from which this originated.
1987  /// @param FileLine The line on the named file from which this originated.
1988  RuntimeAssertionException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
1989  : Exception("RuntimeAssertionException", Message, SrcFunction, SrcFile, FileLine)
1990  {}
1991 
1992  /// @brief Class destructor.
1993  virtual ~RuntimeAssertionException() throw() {}
1994 
1995  /// @copydoc Exception::GetExceptionCode()
1996  virtual Whole GetExceptionCode() const throw()
1998  }; //RuntimeAssertionException
1999 
2000  /// @brief A template metaprogramming construct used to ensure that all required RuntimeAssertionException can be created at compile time if the compiler is clever.
2001  template<>
2003  { typedef RuntimeAssertionException Type; };
2004 
2005 
2006  ///////////////////////////////////////////////////////////////////////////////
2007  /// @brief Thrown when an unknown internal error occurred.
2008  ///////////////////
2010  {
2011  public:
2012  /// @brief Thrown when an unknown internal error occurred.
2013  static const Whole ExceptionCode = Exception::INTERNAL_EXCEPTION;
2014 
2015  /// @brief Class constructor.
2016  /// @param TypeName The name of this class.
2017  /// @param Message A basic description of the error.
2018  /// @param SrcFunction The name of the function from which this originated.
2019  /// @param SrcFile The name of the file from which this originated.
2020  /// @param FileLine The line on the named file from which this originated.
2021  InternalException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
2022  : Exception("InternalException", Message, SrcFunction, SrcFile, FileLine)
2023  {}
2024 
2025  /// @brief Class constructor.
2026  /// @param Message A basic description of the error.
2027  /// @param SrcFunction The name of the function from which this originated.
2028  /// @param SrcFile The name of the file from which this originated.
2029  /// @param FileLine The line on the named file from which this originated.
2030  InternalException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
2031  : Exception("InternalException", Message, SrcFunction, SrcFile, FileLine)
2032  {}
2033 
2034  /// @brief Class destructor.
2035  virtual ~InternalException() throw() {}
2036 
2037  /// @copydoc Exception::GetExceptionCode()
2038  virtual Whole GetExceptionCode() const throw()
2040  }; //InternalException
2041 
2042  /// @brief A template metaprogramming construct used to ensure that all required InternalException can be created at compile time if the compiler is clever.
2043  template<>
2045  { typedef InternalException Type; };
2046 
2047 
2048  ///////////////////////////////////////////////////////////////////////////////
2049  /// @brief Thrown when we just have not coded a thing yet, but we knew what the API should look like.
2050  ///////////////////
2052  {
2053  public:
2054  /// @brief Thrown when we just have not coded a thing yet, but we knew what the API should look like.
2055  static const Whole ExceptionCode = Exception::NOT_IMPLEMENTED_EXCEPTION;
2056 
2057  /// @brief Class constructor.
2058  /// @param TypeName The name of this class.
2059  /// @param Message A basic description of the error.
2060  /// @param SrcFunction The name of the function from which this originated.
2061  /// @param SrcFile The name of the file from which this originated.
2062  /// @param FileLine The line on the named file from which this originated.
2063  NotImplementedException(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
2064  : Exception("NotImplementedException", Message, SrcFunction, SrcFile, FileLine)
2065  {}
2066 
2067  /// @brief Class constructor.
2068  /// @param Message A basic description of the error.
2069  /// @param SrcFunction The name of the function from which this originated.
2070  /// @param SrcFile The name of the file from which this originated.
2071  /// @param FileLine The line on the named file from which this originated.
2072  NotImplementedException(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
2073  : Exception("NotImplementedException", Message, SrcFunction, SrcFile, FileLine)
2074  {}
2075 
2076  /// @brief Class destructor.
2077  virtual ~NotImplementedException() throw() {}
2078 
2079  /// @copydoc Exception::GetExceptionCode()
2080  virtual Whole GetExceptionCode() const throw()
2082  }; //NotImplementedException
2083 
2084  /// @brief A template metaprogramming construct used to ensure that all required NotImplementedException can be created at compile time if the compiler is clever.
2085  template<>
2087  { typedef NotImplementedException Type; };
2088 
2089 
2090  ///////////////////////////////////////////////////////////////////////////////
2091  /// @brief Then when a complex class is assigned to itself or other invalid assignments occur.
2092  ///////////////////
2094  {
2095  public:
2096  /// @brief Then when a complex class is assigned to itself or other invalid assignments occur.
2097  static const Whole ExceptionCode = Exception::INVALID_ASSIGNMENT;
2098 
2099  /// @brief Class constructor.
2100  /// @param TypeName The name of this class.
2101  /// @param Message A basic description of the error.
2102  /// @param SrcFunction The name of the function from which this originated.
2103  /// @param SrcFile The name of the file from which this originated.
2104  /// @param FileLine The line on the named file from which this originated.
2105  InvalidAssignment(const String& TypeName, const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
2106  : Exception("InvalidAssignment", Message, SrcFunction, SrcFile, FileLine)
2107  {}
2108 
2109  /// @brief Class constructor.
2110  /// @param Message A basic description of the error.
2111  /// @param SrcFunction The name of the function from which this originated.
2112  /// @param SrcFile The name of the file from which this originated.
2113  /// @param FileLine The line on the named file from which this originated.
2114  InvalidAssignment(const String& Message, const String& SrcFunction, const String& SrcFile, const Whole& FileLine)
2115  : Exception("InvalidAssignment", Message, SrcFunction, SrcFile, FileLine)
2116  {}
2117 
2118  /// @brief Class destructor.
2119  virtual ~InvalidAssignment() throw() {}
2120 
2121  /// @copydoc Exception::GetExceptionCode()
2122  virtual Whole GetExceptionCode() const throw()
2124  }; //InvalidAssignment
2125 
2126  /// @brief A template metaprogramming construct used to ensure that all required InvalidAssignment can be created at compile time if the compiler is clever.
2127  template<>
2129  { typedef InvalidAssignment Type; };
2130 
2131 
2132 
2133 
2134 
2135 
2136 
2137  #ifndef MEZZ_EXCEPTION
2138  /// @brief An easy way to throw exception with rich information.
2139  /// @details An important part of troubleshooting errors from the users perspective is being able to
2140  /// tie a specific 'fix' to a specific error message. An important part of ensuring correct exceptional
2141  /// is catching the right exceptions at the right time. It is also important to not allocate more
2142  /// memory or other resources while creating an exception.
2143  /// @n @n
2144  /// This macro makes doing all of these easy. Every exception thrown by this macro with provide the Function name,
2145  /// the file name and the line in the file from which it was thrown. That provides all the information the developer
2146  /// needs to identify the issue. This uses some specific template machinery to generate specifically typed exceptions
2147  /// static instances at compile to insure the behaviors a programmer needs. Since these are allocated when the
2148  /// program is first loaded so there will be no allocations when this is called, and the type is controlled by the
2149  /// error number parameter.
2150  /// @n @n
2151  /// As long as the game developer provides a unique string for each failure, then any messages logged or presented
2152  /// to the game player will uniquely identify that specific problem. This allows the user to perform very specific
2153  /// web searches and potentially allows troubleshooters/technicians to skip length diagnostics steps.
2154  /// @param num A specific code from the @ref Exception::ExceptionCodes enum will control the type of exception produced.
2155  /// @param desc
2156  /// @todo Get the verion of the Mezzanine in here so that this can pin down errors with extreme specificty across time. (aybe Compilaiton date too)
2157  #define MEZZ_EXCEPTION(num, desc) throw Mezzanine::ExceptionFactory<num>::Type(desc, __func__, __FILE__, __LINE__ );
2158  #endif
2159 }//Mezzanine
2160 
2161 
2162 
2163 #endif // \exception_cpp