From e02f9fd89b059919baf3a8d8bf8b783470976a27 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Sat, 27 Apr 2024 01:16:21 +0200 Subject: Some work on Vulkan initialization --- deimos/core/base.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'deimos/core/base.h') diff --git a/deimos/core/base.h b/deimos/core/base.h index 5cd3a40..70958a5 100644 --- a/deimos/core/base.h +++ b/deimos/core/base.h @@ -5,7 +5,13 @@ #define deimos_StaticAssert(...) static_assert(__VA_ARGS__, #__VA_ARGS__) -#define deimos_Panic(MSG) do { __builtin_trap(); } while (0) +[[noreturn]] +inline void deimos_Trap() +{ + __builtin_trap(); +} + +#define deimos_Panic(MSG) do { deimos_Trap(); } while (0) #define deimos_NO_COPY(TYPE) \ TYPE(const TYPE&) = delete; \ @@ -78,6 +84,11 @@ constexpr void MemoryCopy(void* dst, const void* src, int64_t size) __builtin_memcpy(dst, src, (size_t)size); } +inline void MemoryZero(void* dst, int64_t size) +{ + __builtin_memset(dst, 0, (size_t)size); +} + template constexpr int64_t ArraySize(const T (&)[N]) { return N; } @@ -117,6 +128,12 @@ public: constexpr T* end() const { return m_begin + m_size; } // NOLINT constexpr int64_t size() const { return m_size; } constexpr bool empty() const { return m_size == 0; } + + constexpr T& operator[](int64_t i) const + { + Expects(i >= 0 && i < m_size); + return m_begin[i]; // NOLINT + } }; template -- cgit