Diligent Engine  v.2.4.g
Namespaces | Macros | Functions
Errors.hpp File Reference
#include <stdexcept>
#include <string>
#include <iostream>
#include "DebugOutput.h"
#include "FormatString.hpp"

Go to the source code of this file.

Namespaces

 Diligent
 The library uses Direct3D-style math:
 

Macros

#define LOG_ERROR(...)
 
#define LOG_FATAL_ERROR(...)
 
#define LOG_ERROR_ONCE(...)
 
#define LOG_ERROR_AND_THROW(...)
 
#define LOG_FATAL_ERROR_AND_THROW(...)
 
#define LOG_DEBUG_MESSAGE(Severity, ...)
 
#define LOG_FATAL_ERROR_MESSAGE(...)   LOG_DEBUG_MESSAGE(Diligent::DEBUG_MESSAGE_SEVERITY_FATAL_ERROR, ##__VA_ARGS__)
 
#define LOG_ERROR_MESSAGE(...)   LOG_DEBUG_MESSAGE(Diligent::DEBUG_MESSAGE_SEVERITY_ERROR, ##__VA_ARGS__)
 
#define LOG_WARNING_MESSAGE(...)   LOG_DEBUG_MESSAGE(Diligent::DEBUG_MESSAGE_SEVERITY_WARNING, ##__VA_ARGS__)
 
#define LOG_INFO_MESSAGE(...)   LOG_DEBUG_MESSAGE(Diligent::DEBUG_MESSAGE_SEVERITY_INFO, ##__VA_ARGS__)
 
#define LOG_DEBUG_MESSAGE_ONCE(Severity, ...)
 
#define LOG_FATAL_ERROR_MESSAGE_ONCE(...)   LOG_DEBUG_MESSAGE_ONCE(Diligent::DEBUG_MESSAGE_SEVERITY_FATAL_ERROR, ##__VA_ARGS__)
 
#define LOG_ERROR_MESSAGE_ONCE(...)   LOG_DEBUG_MESSAGE_ONCE(Diligent::DEBUG_MESSAGE_SEVERITY_ERROR, ##__VA_ARGS__)
 
#define LOG_WARNING_MESSAGE_ONCE(...)   LOG_DEBUG_MESSAGE_ONCE(Diligent::DEBUG_MESSAGE_SEVERITY_WARNING, ##__VA_ARGS__)
 
#define LOG_INFO_MESSAGE_ONCE(...)   LOG_DEBUG_MESSAGE_ONCE(Diligent::DEBUG_MESSAGE_SEVERITY_INFO, ##__VA_ARGS__)
 
#define CHECK(Expr, Severity, ...)
 
#define CHECK_FATAL_ERR(Expr, ...)   CHECK(Expr, Diligent::DEBUG_MESSAGE_SEVERITY_FATAL_ERROR, ##__VA_ARGS__)
 
#define CHECK_ERR(Expr, ...)   CHECK(Expr, Diligent::DEBUG_MESSAGE_SEVERITY_ERROR, ##__VA_ARGS__)
 
#define CHECK_WARN(Expr, ...)   CHECK(Expr, Diligent::DEBUG_MESSAGE_SEVERITY_WARNING, ##__VA_ARGS__)
 
#define CHECK_INFO(Expr, ...)   CHECK(Expr, Diligent::DEBUG_MESSAGE_SEVERITY_INFO, ##__VA_ARGS__)
 
#define CHECK_THROW(Expr, ...)
 

Functions

template<bool >
void Diligent::ThrowIf (std::string &&)
 
template<>
void Diligent::ThrowIf< true > (std::string &&msg)
 
template<bool bThrowException, typename... ArgsType>
void Diligent::LogError (bool IsFatal, const char *Function, const char *FullFilePath, int Line, const ArgsType &... Args)
 

Macro Definition Documentation

◆ CHECK

#define CHECK (   Expr,
  Severity,
  ... 
)
Value:
do \
{ \
if (!(Expr)) \
{ \
LOG_DEBUG_MESSAGE(Severity, ##__VA_ARGS__); \
} \
} while (false)

◆ CHECK_ERR

#define CHECK_ERR (   Expr,
  ... 
)    CHECK(Expr, Diligent::DEBUG_MESSAGE_SEVERITY_ERROR, ##__VA_ARGS__)

◆ CHECK_FATAL_ERR

#define CHECK_FATAL_ERR (   Expr,
  ... 
)    CHECK(Expr, Diligent::DEBUG_MESSAGE_SEVERITY_FATAL_ERROR, ##__VA_ARGS__)

◆ CHECK_INFO

#define CHECK_INFO (   Expr,
  ... 
)    CHECK(Expr, Diligent::DEBUG_MESSAGE_SEVERITY_INFO, ##__VA_ARGS__)

◆ CHECK_THROW

#define CHECK_THROW (   Expr,
  ... 
)
Value:
do \
{ \
if (!(Expr)) \
{ \
LOG_ERROR_AND_THROW(##__VA_ARGS__); \
} \
} while (false)

◆ CHECK_WARN

#define CHECK_WARN (   Expr,
  ... 
)    CHECK(Expr, Diligent::DEBUG_MESSAGE_SEVERITY_WARNING, ##__VA_ARGS__)

◆ LOG_DEBUG_MESSAGE

#define LOG_DEBUG_MESSAGE (   Severity,
  ... 
)
Value:
do \
{ \
auto _msg = Diligent::FormatString(__VA_ARGS__); \
if (Diligent::DebugMessageCallback != nullptr) Diligent::DebugMessageCallback(Severity, _msg.c_str(), nullptr, nullptr, 0); \
} while (false)

◆ LOG_DEBUG_MESSAGE_ONCE

#define LOG_DEBUG_MESSAGE_ONCE (   Severity,
  ... 
)
Value:
do \
{ \
static bool IsFirstTime = true; \
if (IsFirstTime) \
{ \
LOG_DEBUG_MESSAGE(Severity, ##__VA_ARGS__); \
IsFirstTime = false; \
} \
} while (false)

◆ LOG_ERROR

#define LOG_ERROR (   ...)
Value:
do \
{ \
Diligent::LogError<false>(/*IsFatal=*/false, __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); \
} while (false)

◆ LOG_ERROR_AND_THROW

#define LOG_ERROR_AND_THROW (   ...)
Value:
do \
{ \
Diligent::LogError<true>(/*IsFatal=*/false, __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); \
} while (false)

◆ LOG_ERROR_MESSAGE

#define LOG_ERROR_MESSAGE (   ...)    LOG_DEBUG_MESSAGE(Diligent::DEBUG_MESSAGE_SEVERITY_ERROR, ##__VA_ARGS__)

◆ LOG_ERROR_MESSAGE_ONCE

#define LOG_ERROR_MESSAGE_ONCE (   ...)    LOG_DEBUG_MESSAGE_ONCE(Diligent::DEBUG_MESSAGE_SEVERITY_ERROR, ##__VA_ARGS__)

◆ LOG_ERROR_ONCE

#define LOG_ERROR_ONCE (   ...)
Value:
do \
{ \
static bool IsFirstTime = true; \
if (IsFirstTime) \
{ \
LOG_ERROR(##__VA_ARGS__); \
IsFirstTime = false; \
} \
} while (false)

◆ LOG_FATAL_ERROR

#define LOG_FATAL_ERROR (   ...)
Value:
do \
{ \
Diligent::LogError<false>(/*IsFatal=*/true, __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); \
} while (false)

◆ LOG_FATAL_ERROR_AND_THROW

#define LOG_FATAL_ERROR_AND_THROW (   ...)
Value:
do \
{ \
Diligent::LogError<true>(/*IsFatal=*/true, __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); \
} while (false)

◆ LOG_FATAL_ERROR_MESSAGE

#define LOG_FATAL_ERROR_MESSAGE (   ...)    LOG_DEBUG_MESSAGE(Diligent::DEBUG_MESSAGE_SEVERITY_FATAL_ERROR, ##__VA_ARGS__)

◆ LOG_FATAL_ERROR_MESSAGE_ONCE

#define LOG_FATAL_ERROR_MESSAGE_ONCE (   ...)    LOG_DEBUG_MESSAGE_ONCE(Diligent::DEBUG_MESSAGE_SEVERITY_FATAL_ERROR, ##__VA_ARGS__)

◆ LOG_INFO_MESSAGE

#define LOG_INFO_MESSAGE (   ...)    LOG_DEBUG_MESSAGE(Diligent::DEBUG_MESSAGE_SEVERITY_INFO, ##__VA_ARGS__)

◆ LOG_INFO_MESSAGE_ONCE

#define LOG_INFO_MESSAGE_ONCE (   ...)    LOG_DEBUG_MESSAGE_ONCE(Diligent::DEBUG_MESSAGE_SEVERITY_INFO, ##__VA_ARGS__)

◆ LOG_WARNING_MESSAGE

#define LOG_WARNING_MESSAGE (   ...)    LOG_DEBUG_MESSAGE(Diligent::DEBUG_MESSAGE_SEVERITY_WARNING, ##__VA_ARGS__)

◆ LOG_WARNING_MESSAGE_ONCE

#define LOG_WARNING_MESSAGE_ONCE (   ...)    LOG_DEBUG_MESSAGE_ONCE(Diligent::DEBUG_MESSAGE_SEVERITY_WARNING, ##__VA_ARGS__)
Diligent::DebugMessageCallback
DebugMessageCallbackType DebugMessageCallback
Definition: AndroidDebug.cpp:60
Diligent::FormatString
std::string FormatString(const RestArgsType &... Args)
Definition: FormatString.hpp:55
Diligent
The library uses Direct3D-style math:
Definition: AdvancedMath.hpp:37