This commit is contained in:
2023-11-01 20:33:46 -05:00
parent 96291cbd88
commit 0590883c0d
20 changed files with 0 additions and 66 deletions

View File

@ -0,0 +1,9 @@
# Copyright (c) 2022 Dominic Masters
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
target_sources(${DAWN_TARGET_NAME}
PRIVATE
assert.cpp
)

View File

@ -0,0 +1,66 @@
/**
* Copyright (c) 2022 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#include "assert.hpp"
void assertTrue(bool_t x, const char message[]) {
if(x != true) {
std::cout << message << std::endl;
throw message;
abort();
}
assert(x == true);
}
void assertTrue(bool_t x, std::string message) {
assertTrue(x, message.c_str());
}
void assertFalse(bool_t x, const char message[]) {
assertTrue(!x, message);
}
void assertFalse(bool_t x, std::string message) {
assertFalse(x, message.c_str());
}
void assertUnreachable(const char message[]) {
assertTrue(false, message);
}
void assertUnreachable(std::string message) {
assertUnreachable(message.c_str());
}
void assertNotNull(void *pointer, const char message[]) {
assertTrue(pointer != nullptr && pointer != NULL, message);
}
void assertNotNull(void *pointer, std::string message) {
assertNotNull(pointer, message.c_str());
}
void assertNull(void *pointer, const char message[]) {
assertTrue(pointer == NULL || pointer == nullptr, message);
}
void assertNull(void *pointer, std::string message) {
assertNull(pointer, message.c_str());
}
void assertDeprecated(const char message[]) {
assertUnreachable(message);
}
void assertDeprecated(std::string message) {
assertDeprecated(message.c_str());
}

View File

@ -0,0 +1,80 @@
/**
* Copyright (c) 2022 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#pragma once
#include "dawnsharedlibs.hpp"
/**
* Assert a given value to be true.
* @param x Value to assert as true.
* @param message Message to throw against assertion failure.
*/
void assertTrue(bool_t x, const char message[]);
void assertTrue(bool_t x, std::string message);
/**
* Asserts a given statement to be false.
* @param x Value to assert as false.
* @param message Message to throw against assertion failure.
*/
void assertFalse(bool_t x, const char message[]);
void assertFalse(bool_t x, std::string message);
/**
* Asserts that a given line of code is unreachable. Essentially a forced
* assertion failure, good for "edge cases"
* @param message Message to throw against assertion failure.
*/
void assertUnreachable(const char message[]);
void assertUnreachable(std::string message);
/**
* Assert a given pointer to not point to a null pointer.
* @param pointer Pointer to assert is not a null pointer.
* @param message Message to throw against assertion failure.
*/
void assertNotNull(void *pointer, const char message[]);
void assertNotNull(void *pointer, std::string message);
/**
* Asserts a given pointer to be a nullptr.
* @param pointer Pointer to assert is nullptr.
* @param message Message to throw against assertion failure.
*/
void assertNull(void *pointer, const char message[]);
void assertNull(void *pointer, std::string message);
/**
* Asserts a function as being deprecated.
* @param message Message to throw against assertion failure.
*/
void assertDeprecated(const char message[]);
void assertDeprecated(std::string message);
/**
* Asserts that a given map has a key.
*
* @param map Map to check.
* @param key Key to try and assert exists.
* @param message Message to throw against assertion failure.
*/
template<typename K, typename V>
void assertMapHasKey(std::map<K,V> map, K key, const char message[]) {
assertTrue(map.find(key) != map.end(), message);
}
/**
* Asserts that a given map has a key.
*
* @param map Map to check.
* @param key Key to try and assert exists.
* @param message Message to throw against assertion failure.
*/
template<typename K, typename V>
void assertMapHasKey(std::map<K,V> map, K key, std::string message) {
assertMapHasKey(map, key, message.c_str());
}