/** * 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()); }