67 lines
2.1 KiB
C++
67 lines
2.1 KiB
C++
#pragma once
|
|
|
|
#include <algorithm>
|
|
#include <Core/Common/CoreTypes.h>
|
|
#include <Juliet.h>
|
|
|
|
namespace Juliet
|
|
{
|
|
|
|
#if _DEBUG
|
|
#define Assert(expression) \
|
|
do \
|
|
{ \
|
|
if (!(expression)) \
|
|
{ \
|
|
Juliet::JulietAssert("Assertion Failed: " #expression); \
|
|
} \
|
|
} \
|
|
while (0)
|
|
|
|
#else
|
|
#define Assert(Expression)
|
|
#endif
|
|
|
|
extern void JULIET_API JulietAssert(const char* expression);
|
|
|
|
#define ZeroStruct(structInstance) ZeroSize(sizeof(structInstance), &(structInstance))
|
|
#define ZeroArray(array) ZeroSize(sizeof((array)), (array))
|
|
#define ZeroDynArray(Count, Pointer) ZeroSize((Count) * sizeof((Pointer)[0]), Pointer)
|
|
inline void ZeroSize(size_t size, void* ptr)
|
|
{
|
|
auto Byte = (uint8*)ptr;
|
|
while (size--)
|
|
{
|
|
*Byte++ = 0;
|
|
}
|
|
}
|
|
|
|
#define MemCopy memcpy
|
|
|
|
template <typename Type>
|
|
constexpr Type Min(Type lhs, Type rhs)
|
|
{
|
|
return rhs < lhs ? rhs : lhs;
|
|
}
|
|
|
|
template <typename Type>
|
|
constexpr Type Max(Type lhs, Type rhs)
|
|
{
|
|
return lhs < rhs ? rhs : lhs;
|
|
}
|
|
|
|
template <typename Type>
|
|
constexpr Type Clamp(Type val, Type min, Type max)
|
|
{
|
|
if (val < min)
|
|
{
|
|
return min;
|
|
}
|
|
if (val > max)
|
|
{
|
|
return max;
|
|
}
|
|
return val;
|
|
}
|
|
} // namespace Juliet
|