feat/universal_pch #1
					 12 changed files with 130 additions and 30 deletions
				
			
		| 
						 | 
					@ -1,2 +1,3 @@
 | 
				
			||||||
add_subdirectory(utilities/preliminary)
 | 
					add_subdirectory(universal_pch)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
add_subdirectory(light)
 | 
					add_subdirectory(light)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,3 @@
 | 
				
			||||||
add_executable(light ${CMAKE_CURRENT_SOURCE_DIR}/src/entrypoint.cpp)
 | 
					add_executable(light ${CMAKE_CURRENT_SOURCE_DIR}/src/entrypoint.cpp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
target_link_libraries(light PRIVATE preliminary)
 | 
					target_link_libraries(light PRIVATE universal_pch errors)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,17 @@
 | 
				
			||||||
auto main() -> lt::i32
 | 
					auto main() -> int32_t
 | 
				
			||||||
 | 
					try
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	std::cout << "Light built and ran fine...";
 | 
						std::cout << "Light built and ran fine...";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					catch (const std::exception &exp)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						std::cout << "\n\nUnhandled std exception: " << exp.what() << std::endl; // NOLINT
 | 
				
			||||||
 | 
						return -1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					catch (...)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						std::cout << "\n\nUnhandled exception" << std::endl; // NOLINT
 | 
				
			||||||
 | 
						return -1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								modules/universal_pch/CMakeLists.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								modules/universal_pch/CMakeLists.txt
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					add_library_module(universal_pch)
 | 
				
			||||||
 | 
					target_precompile_headers(universal_pch INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/src/pch.hpp)
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,55 @@
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <universal_pch/error_handling/types.hpp>
 | 
				
			||||||
 | 
					#include <universal_pch/module_configs.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace lt {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace details {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void throw_if_false(bool condition, std::source_location location)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (!condition)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							throw Error { "Failed runtime assertion", location };
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} // namespace details
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Throws lt::Error if \a condition is false, otherwise returns without side-effects.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @throws lt::Error
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @note Only runs when LIGHT_ENABLE_CHECK is enabled, which is enabled by default on debug builds.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @warn The successful execution of the contract of the using code should NOT depend on the
 | 
				
			||||||
 | 
					 * execution of this function as it may or may NOT be executed--based on project configuration.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					inline void check(bool condition, std::source_location location = std::source_location::current())
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if constexpr (light_enabled_check)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							details::throw_if_false(condition, location);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Throws lt::Error if \a condition is false, otherwise returns without side-effects.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @throws lt::Error
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @note Only runs when LIGHT_ENABLE_ENSURE is enabled, which is enabled by default on debug and
 | 
				
			||||||
 | 
					 * release builds.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @warn The successful execution of the contract of the using code should NOT depend on the
 | 
				
			||||||
 | 
					 * execution of this function as it may or may NOT be executed--based on project configuration.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					inline void ensure(bool condition, std::source_location location = std::source_location::current())
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if constexpr (light_enabled_ensure)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							details::throw_if_false(condition, location);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} // namespace lt
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace lt {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Error: public std::exception
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						Error(std::string_view reason, std::source_location location): m_reason(reason)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							std::ignore = location;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Error(const Error &prev, std::string_view reason, std::source_location location)
 | 
				
			||||||
 | 
						    : m_reason(reason)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							std::ignore = location;
 | 
				
			||||||
 | 
							std::ignore = prev;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						[[nodiscard]] auto what() const noexcept -> const char * override
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							return "Idk fuck all";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
						std::string m_reason;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					template<typename T>
 | 
				
			||||||
 | 
					using Expected = std::expected<T, Error>;
 | 
				
			||||||
 | 
					} // namespace lt
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					namespace lt {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef LIGHT_ENABLE_CHECK
 | 
				
			||||||
 | 
					constexpr bool light_enabled_check = true;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					constexpr bool light_enabled_check = false;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef LIGHT_ENABLE_ENSURE
 | 
				
			||||||
 | 
					constexpr bool light_enabled_ensure = true;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					constexpr bool light_enabled_ensure = false;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					} // namespace lt
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,4 @@
 | 
				
			||||||
#pragma once
 | 
					// NOLINTBEGIN
 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <preliminary/types.hpp>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* utilities */
 | 
					/* utilities */
 | 
				
			||||||
#include <any>
 | 
					#include <any>
 | 
				
			||||||
| 
						 | 
					@ -10,6 +8,8 @@
 | 
				
			||||||
#include <cstdint>
 | 
					#include <cstdint>
 | 
				
			||||||
#include <ctime>
 | 
					#include <ctime>
 | 
				
			||||||
#include <exception>
 | 
					#include <exception>
 | 
				
			||||||
 | 
					#include <expected>
 | 
				
			||||||
 | 
					#include <format>
 | 
				
			||||||
#include <functional>
 | 
					#include <functional>
 | 
				
			||||||
#include <limits>
 | 
					#include <limits>
 | 
				
			||||||
#include <memory>
 | 
					#include <memory>
 | 
				
			||||||
| 
						 | 
					@ -64,3 +64,5 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* filesystem */
 | 
					/* filesystem */
 | 
				
			||||||
#include <filesystem>
 | 
					#include <filesystem>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NOLINTEND
 | 
				
			||||||
							
								
								
									
										7
									
								
								modules/universal_pch/src/pch.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								modules/universal_pch/src/pch.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <universal_pch/std_headers.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* error_handling */
 | 
				
			||||||
 | 
					#include <universal_pch/error_handling/checks.hpp>
 | 
				
			||||||
 | 
					#include <universal_pch/error_handling/types.hpp>
 | 
				
			||||||
| 
						 | 
					@ -1,3 +0,0 @@
 | 
				
			||||||
add_library(preliminary INTERFACE)
 | 
					 | 
				
			||||||
target_precompile_headers(preliminary INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/src/pch.hpp)
 | 
					 | 
				
			||||||
target_include_directories(preliminary INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include/)
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,21 +0,0 @@
 | 
				
			||||||
#pragma once
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <stdint.h>
 | 
					 | 
				
			||||||
#include <vector>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace lt {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
using i8 = int8_t;
 | 
					 | 
				
			||||||
using i16 = int16_t;
 | 
					 | 
				
			||||||
using i32 = int32_t;
 | 
					 | 
				
			||||||
using i64 = int64_t;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
using u8 = uint8_t;
 | 
					 | 
				
			||||||
using u16 = uint16_t;
 | 
					 | 
				
			||||||
using u32 = uint32_t;
 | 
					 | 
				
			||||||
using u64 = uint64_t;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
template<typename T>
 | 
					 | 
				
			||||||
using vec = std::vector<T>;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
} // namespace lt
 | 
					 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue