SDEngine
Game Engine
Loading...
Searching...
No Matches
base.hpp File Reference
#include <meta>
#include <ostream>
#include <string_view>
#include <type_traits>
+ Include dependency graph for base.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  sdIsBitmaskEnum< T >
 
struct  BitmaskResult< T >
 
struct  BitmaskStreamer< T >
 
struct  sd::SourceLocation
 

Namespaces

namespace  sd
 

Concepts

concept  BitmaskEnum
 

Macros

#define ASSERT_ALWAYS(x)
 
#define ASSERT(x)   (void)(x)
 
#define INVALID_PATH   ASSERT(!"Invalid Path!")
 
#define NOT_IMPLEMENTED   ASSERT(!"Not Implemented!")
 
#define NO_OP   ((void)0)
 
#define BITMASK_ENUM(Type)
 

Functions

template<BitmaskEnum T>
FORCE_INLINE constexpr BitmaskResult< T > operator& (T lhs, T rhs)
 
template<BitmaskEnum T>
FORCE_INLINE constexpr BitmaskResult< T > operator| (T lhs, T rhs)
 
template<BitmaskEnum T>
FORCE_INLINE constexpr BitmaskResult< T > operator~ (T rhs)
 
template<BitmaskEnum T>
FORCE_INLINE constexpr T & operator|= (T &lhs, T rhs)
 
template<BitmaskEnum T>
FORCE_INLINE constexpr T & operator&= (T &lhs, T rhs)
 
template<typename T >
requires std::is_enum_v<T> && (!sdIsBitmaskEnum<T>::value)
FORCE_INLINE constexpr std::string_view enum_to_string (T value) noexcept
 
template<typename T >
requires BitmaskEnum<T>
FORCE_INLINE constexpr BitmaskStreamer< T > enum_to_string (T value) noexcept
 

Macro Definition Documentation

◆ ASSERT

#define ASSERT (   x)    (void)(x)

◆ ASSERT_ALWAYS

#define ASSERT_ALWAYS (   x)
Value:
do { \
if (!(x)) { \
TRAP(); \
} \
} while (0)
consteval U64 type_id_of()
Definition type_id.hpp:6

◆ BITMASK_ENUM

#define BITMASK_ENUM (   Type)
Value:
static_assert(std::is_enum_v<Type>, "BITMASK_ENUM can only be used on enum types"); \
template<> \
struct sdIsBitmaskEnum<Type> : std::true_type {};
Definition base.hpp:39

◆ INVALID_PATH

#define INVALID_PATH   ASSERT(!"Invalid Path!")

◆ NO_OP

#define NO_OP   ((void)0)

◆ NOT_IMPLEMENTED

#define NOT_IMPLEMENTED   ASSERT(!"Not Implemented!")

Function Documentation

◆ enum_to_string() [1/2]

template<typename T >
requires std::is_enum_v<T> && (!sdIsBitmaskEnum<T>::value)
FORCE_INLINE constexpr std::string_view enum_to_string ( value)
constexprnoexcept

◆ enum_to_string() [2/2]

template<typename T >
requires BitmaskEnum<T>
FORCE_INLINE constexpr BitmaskStreamer< T > enum_to_string ( value)
constexprnoexcept

◆ operator&()

template<BitmaskEnum T>
FORCE_INLINE constexpr BitmaskResult< T > operator& ( lhs,
rhs 
)
constexpr

◆ operator&=()

template<BitmaskEnum T>
FORCE_INLINE constexpr T & operator&= ( T &  lhs,
rhs 
)
constexpr

◆ operator|()

template<BitmaskEnum T>
FORCE_INLINE constexpr BitmaskResult< T > operator| ( lhs,
rhs 
)
constexpr

◆ operator|=()

template<BitmaskEnum T>
FORCE_INLINE constexpr T & operator|= ( T &  lhs,
rhs 
)
constexpr

◆ operator~()

template<BitmaskEnum T>
FORCE_INLINE constexpr BitmaskResult< T > operator~ ( rhs)
constexpr