#ifndef OpenTestSystem_OtxDiagManager_OtxDiagApi_OtxDataTypes_DiagRuntimeException_H
#define OpenTestSystem_OtxDiagManager_OtxDiagApi_OtxDataTypes_DiagRuntimeException_H

#include "ApiDefs.h"
#include "OtxDataTypes/OtxExceptionType.h"
#include <TypeDefs.h>
#include <string>
#include <stdexcept>

namespace OpenTestSystem { namespace OtxDiagManager { namespace OtxDiagApi { namespace OtxDataTypes {
	/// <summary>
	/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComment
	/// </summary>
	class API_EXPORTS DiagRuntimeException : public std::runtime_error
	{
	protected:
		inline DiagRuntimeException() : std::runtime_error("DiagRuntimeException") {}
		inline DiagRuntimeException(const char* message) : std::runtime_error(message){}
	public:
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComfortMethodComment
		/// </summary>
		virtual std::string GetMessage() const = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComfortMethodComment
		/// </summary>
		virtual int32 GetErrorCode() const = 0;
		/// <summary>
		/// @snippetdoc DocSnippets.txt OtxDiagApiDatatypeComfortMethodComment
		/// </summary>
		virtual OtxExceptionTypes GetExceptionType() const = 0;
	};
}}}}
#endif //OpenTestSystem_OtxDiagManager_OtxDiagApi_OtxDataTypes_DiagRuntimeException_H