- More Documentation

- Updated Copyright
This commit is contained in:
2026-01-06 19:48:28 -05:00
parent 93b58ea197
commit 450f725cab
273 changed files with 963 additions and 963 deletions

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@@ -91,6 +91,7 @@ fennec_add_sources(
include/fennec/core/system.h include/fennec/core/system.h
# SCENE ================================================================================================================ # SCENE ================================================================================================================
include/fennec/scene/scene.h source/scene/scene.cpp include/fennec/scene/scene.h source/scene/scene.cpp
include/fennec/scene/component.h include/fennec/scene/component.h
@@ -100,6 +101,7 @@ fennec_add_sources(
# RENDERERS ============================================================================================================ # RENDERERS ============================================================================================================
include/fennec/renderers/interface/forward.h include/fennec/renderers/interface/forward.h
@@ -107,6 +109,7 @@ fennec_add_sources(
include/fennec/renderers/interface/gfxsurface.h include/fennec/renderers/interface/gfxsurface.h
# CONTAINERS =========================================================================================================== # CONTAINERS ===========================================================================================================
include/fennec/containers/containers.h include/fennec/containers/containers.h
@@ -135,6 +138,7 @@ fennec_add_sources(
include/fennec/containers/detail/_tuple.h include/fennec/containers/detail/_tuple.h
# lang ================================================================================================================= # lang =================================================================================================================
include/fennec/lang/lang.h include/fennec/lang/lang.h
include/fennec/lang/metaprogramming.h include/fennec/lang/metaprogramming.h
@@ -191,6 +195,7 @@ fennec_add_sources(
include/fennec/rtti/detail/_type_name.h include/fennec/rtti/detail/_type_name.h
# MEMORY =============================================================================================================== # MEMORY ===============================================================================================================
include/fennec/memory/new.h source/memory/new.cpp include/fennec/memory/new.h source/memory/new.cpp
@@ -203,10 +208,13 @@ fennec_add_sources(
include/fennec/memory/detail/_ptr_traits.h include/fennec/memory/detail/_ptr_traits.h
# DEBUG ================================================================================================================ # DEBUG ================================================================================================================
source/debug/assert_impl.cpp source/debug/assert_impl.cpp
# MATH ================================================================================================================= # MATH =================================================================================================================
include/fennec/math/math.h include/fennec/math/math.h
@@ -287,14 +295,16 @@ fennec_add_sources(
include/fennec/interpret/tokenizer.h include/fennec/interpret/tokenizer.h
# PLATFORM =============================================================================================================
# PLATFORM =============================================================================================================
include/fennec/platform/interface/fwd.h include/fennec/platform/interface/fwd.h
include/fennec/platform/interface/display_server.h include/fennec/platform/interface/display_server.h
include/fennec/platform/interface/platform.h source/platform/interface/platform.cpp include/fennec/platform/interface/platform.h source/platform/interface/platform.cpp
include/fennec/platform/interface/window.h source/platform/interface/window.cpp include/fennec/platform/interface/window.h source/platform/interface/window.cpp
include/fennec/platform/window_manager.h source/platform/window_manager.cpp include/fennec/platform/window_manager.h source/platform/window_manager.cpp
# GRAPHICS ============================================================================================================= # GRAPHICS =============================================================================================================
) )
@@ -304,7 +314,6 @@ add_subdirectory(test)
add_library(fennec STATIC add_library(fennec STATIC
${FENNEC_SOURCES} ${FENNEC_SOURCES}
) )
add_dependencies(fennec metaprogramming fennec-dependencies) add_dependencies(fennec metaprogramming fennec-dependencies)
@@ -353,7 +362,7 @@ if(DOXYGEN_FOUND)
# Target for building docs # Target for building docs
add_custom_target(fennecdocs ALL add_custom_target(fennecdocs ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_CONFIG_OUT} COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_CONFIG_OUT}
WORKING_DIRECTORY ${FENNEC_SOURCE_DIR} WORKING_DIRECTORY ${FENNEC_SOURCE_DIR}/include/
COMMAND ${CMAKE_COMMAND} -E copy ${FENNEC_SOURCE_DIR}/logo/raster.png COMMAND ${CMAKE_COMMAND} -E copy ${FENNEC_SOURCE_DIR}/logo/raster.png
${DOXY_OUTPUT_DIR}/logo/raster.png ${DOXY_OUTPUT_DIR}/logo/raster.png
COMMENT "Generating Doxygen Documentation" COMMENT "Generating Doxygen Documentation"

View File

@@ -133,19 +133,19 @@ is also a viable IDE but involves some extra setup.
<a id="dependencies"></a> <a id="dependencies"></a>
### Dependencies ### Dependencies
| Dependency | Notes | | Dependency | Notes |
|-----------------------------------|----------------------------------------------------------------------------------------------------------| |------------------------------|----------------------------------------------------------------------------------------------------------|
| C/C++ Compiler | GCC/G++ is the compiler that fennec is designed around, however, Clang, MSVC, and MinGW may also be used | | C/C++ Compiler | GCC/G++ is the compiler that fennec is designed around, however, Clang, MSVC, and MinGW may also be used |
| CMake | The build manager used by the engine | | CMake | The build manager used by the engine |
| Volk <sup>[__*__](#opt)</sup> | The Vulkan loader Volk, includes necessary headers for Vulkan. | | Volk<sup>[*](#opt)</sup> | The Vulkan loader Volk, includes necessary headers for Vulkan. |
| A build system | Any build system will work, however, `build.sh` uses Ninja by default. | | A build system | Any build system will work, however, `build.sh` uses Ninja by default. |
| A memory debugger | Any memory debugger will work, however, `test.sh` uses Valgrind by default. | | A memory debugger | Any memory debugger will work, however, `test.sh` uses Valgrind by default. |
| Doxygen <sup>[__*__](#opt)</sup> | Doxygen is required for building the documentation for fennec. | | Doxygen<sup>[*](#opt)</sup> | Doxygen is required for building the documentation for fennec. |
| Graphviz <sup>[__*__](#opt)</sup> | Graphviz is a required dependency for Doxygen | | Graphviz<sup>[*](#opt)</sup> | Graphviz is a required dependency for Doxygen |
<a id="opt"></a> <a id="opt"></a>
<sup>[__*__](#opt)</sup> Optional Dependency <sup>[*](#opt)</sup> Optional Dependency
<br> <br>
@@ -162,6 +162,7 @@ build scripts to use another build manager, see the [CMake documentation for ava
using specific toolchains for specific platforms that necessitate this. The primary examples would be Android and iOS. using specific toolchains for specific platforms that necessitate this. The primary examples would be Android and iOS.
If you wish to build for Windows *and* Linux, your options are WSL or Dual Boot. I recommend Dual Boot over WSL. If you wish to build for Windows *and* Linux, your options are WSL or Dual Boot. I recommend Dual Boot over WSL.
<a id="git"></a>
#### Git #### Git
Install git dependencies with the following command: Install git dependencies with the following command:

View File

@@ -1,6 +1,6 @@
## ===================================================================================================================== ## =====================================================================================================================
## fennec, a free and open source game engine ## fennec, a free and open source game engine
## Copyright © 2025 Medusa Slockbower ## Copyright © 2025 - 2026 Medusa Slockbower
## ##
## This program is free software: you can redistribute it and/or modify ## This program is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by ## it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -943,7 +943,7 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched. # Note: If this tag is empty the current directory is searched.
INPUT = "@PROJECT_SOURCE_DIR@/include" \ INPUT = "@PROJECT_SOURCE_DIR@/include/" \
"@PROJECT_SOURCE_DIR@/README.md" "@PROJECT_SOURCE_DIR@/README.md"
# This tag can be used to specify the character encoding of the source files # This tag can be used to specify the character encoding of the source files
@@ -1050,7 +1050,8 @@ RECURSIVE = YES
EXCLUDE = "@PROJECT_SOURCE_DIR@/include/fennec/platform/linux/wayland/lib" \ EXCLUDE = "@PROJECT_SOURCE_DIR@/include/fennec/platform/linux/wayland/lib" \
"@PROJECT_SOURCE_DIR@/include/fennec/platform/linux/wayland/libdecor" \ "@PROJECT_SOURCE_DIR@/include/fennec/platform/linux/wayland/libdecor" \
"@PROJECT_SOURCE_DIR@/include/fennec/platform/linux/xkb/lib" "@PROJECT_SOURCE_DIR@/include/fennec/platform/linux/xkb/lib" \
"@PROJECT_SOURCE_DIR@/include/fennec/platform/opengl/glad"
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded # directories that are symbolic links (a Unix file system feature) are excluded
@@ -2403,7 +2404,7 @@ MACRO_EXPANSION = YES
# The default value is: NO. # The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
EXPAND_ONLY_PREDEF = YES EXPAND_ONLY_PREDEF = NO
# If the SEARCH_INCLUDES tag is set to YES, the include files in the # If the SEARCH_INCLUDES tag is set to YES, the include files in the
# INCLUDE_PATH will be searched if a #include is found. # INCLUDE_PATH will be searched if a #include is found.
@@ -2418,7 +2419,7 @@ SEARCH_INCLUDES = YES
# RECURSIVE has no effect here. # RECURSIVE has no effect here.
# This tag requires that the tag SEARCH_INCLUDES is set to YES. # This tag requires that the tag SEARCH_INCLUDES is set to YES.
INCLUDE_PATH = INCLUDE_PATH = "@PROJECT_SOURCE_DIR@/include"
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the # patterns (like *.h and *.hpp) to filter out the header-files in the

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
# ====================================================================================================================== # ======================================================================================================================
# fennec, a free and open source game engine # fennec, a free and open source game engine
# Copyright © 2025 Medusa Slockbower # Copyright © 2025 - 2026 Medusa Slockbower
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file array.h /// \file fennec/containers/array.h
/// \brief A header containing the definition for a static/stack allocated array /// \brief A header containing the definition for a static/stack allocated array
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -148,28 +148,28 @@ public:
/// ///
/// \brief Access the first element /// \brief Access the first element
/// \returns A reference to the element at `elements[0]` /// \returns A reference to the element at \f$elements[0]\f$
constexpr value_t& front() { constexpr value_t& front() {
return data[0]; return data[0];
} }
/// ///
/// \brief Const Access the first element /// \brief Const Access the first element
/// \returns A const-qualified reference to the element at `elements[0]` /// \returns A const-qualified reference to the element at \f$elements[0]\f$
constexpr const value_t& front() const { constexpr const value_t& front() const {
return data[0]; return data[0];
} }
/// ///
/// \brief Access the first element /// \brief Access the first element
/// \returns A reference to the element at `elements[ElemV - 1]` /// \returns A reference to the element at \f$elements[ElemV - 1]\f$
constexpr value_t& back() { constexpr value_t& back() {
return data[ElemV - 1]; return data[ElemV - 1];
} }
/// ///
/// \brief Const Access the first element /// \brief Const Access the first element
/// \returns A const-qualified reference to the element at `elements[ElemV - 1]` /// \returns A const-qualified reference to the element at \f$elements[ElemV - 1]\f$
constexpr const value_t& back() const { constexpr const value_t& back() const {
return data[ElemV - 1]; return data[ElemV - 1];
} }
@@ -206,14 +206,14 @@ public:
/// @{ /// @{
/// ///
/// \brief C++ Iterator Specification `begin()` /// \brief C++ Iterator Specification \f$begin()\f$
/// \returns A pointer to the first element of the array /// \returns A pointer to the first element of the array
constexpr value_t* begin() { constexpr value_t* begin() {
return data; return data;
} }
/// ///
/// \brief C++ Iterator Specification `end()` /// \brief C++ Iterator Specification \f$end()\f$
/// \returns A pointer to one after the end of the array /// \returns A pointer to one after the end of the array
constexpr value_t* end() { constexpr value_t* end() {
return data + ElemV; return data + ElemV;
@@ -222,14 +222,14 @@ public:
/// ///
/// \brief Const C++ Iterator Specification `begin()` /// \brief Const C++ Iterator Specification \f$begin()\f$
/// \returns A const-qualified pointer to the first element of the array /// \returns A const-qualified pointer to the first element of the array
constexpr const value_t* begin() const { constexpr const value_t* begin() const {
return data; return data;
} }
/// ///
/// \brief Const C++ Iterator Specification `end()` /// \brief Const C++ Iterator Specification \f$end()\f$
/// \returns A const-qualified pointer to one after the end of the array /// \returns A const-qualified pointer to one after the end of the array
constexpr const value_t* end() const { constexpr const value_t* end() const {
return data + ElemV; return data + ElemV;

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,21 +17,20 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file bintree.h /// \file fennec/containers/bintree.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
#ifndef FENNEC_CONTAINERS_BINTREE_H #ifndef FENNEC_CONTAINERS_BINTREE_H
#define FENNEC_CONTAINERS_BINTREE_H #define FENNEC_CONTAINERS_BINTREE_H
#include <fennec/containers/dynarray.h>
#include <fennec/containers/list.h> #include <fennec/containers/list.h>
#include <fennec/containers/optional.h> #include <fennec/containers/optional.h>
#include <fennec/containers/traversal.h> #include <fennec/containers/traversal.h>
@@ -158,6 +157,9 @@ public:
// Properties ========================================================================================================== // Properties ==========================================================================================================
public: public:
/// \name Properties
/// @{
/// ///
/// \returns The number of elements in the tree /// \returns The number of elements in the tree
constexpr size_t size() const { constexpr size_t size() const {
@@ -192,6 +194,8 @@ public:
return _root; return _root;
} }
/// @}
// Navigation ========================================================================================================== // Navigation ==========================================================================================================
@@ -244,13 +248,13 @@ public:
/// ///
/// \details \f$O(1)\f$ /// \details \f$O(1)\f$
/// \param i The node id /// \param i The node id
/// \returns \f$true\f$ if \f$i\f$ is the right node of `parent(i)`, \f$false\f$ otherwise /// \returns \f$true\f$ if \f$i\f$ is the right node of \f$parent(i)\f$, \f$false\f$ otherwise
constexpr bool direction(size_t i) const { constexpr bool direction(size_t i) const {
return i == npos ? false : i == right(_parent(i)); return i == npos ? false : i == right(_parent(i));
} }
/// ///
/// \brief \f$O(1)\f$ /// \details \f$O(1)\f$
/// \param i The id of the node /// \param i The id of the node
/// \returns The id of the sibling of \f$i\f$ /// \returns The id of the sibling of \f$i\f$
constexpr size_t sibling(size_t i) const { constexpr size_t sibling(size_t i) const {
@@ -279,7 +283,7 @@ public:
} }
/// ///
/// \brief \f$O(\log n)\f$ /// \details \f$O(\log n)\f$
/// \param i The node id /// \param i The node id
/// \returns The id of the left-most node of \f$i\f$ /// \returns The id of the left-most node of \f$i\f$
constexpr size_t left_most(size_t i) const { constexpr size_t left_most(size_t i) const {
@@ -293,7 +297,7 @@ public:
} }
/// ///
/// \brief \f$O(\log n)\f$ /// \details \f$O(\log n)\f$
/// \param i The node id /// \param i The node id
/// \returns The id of the right-most node of \f$i\f$ /// \returns The id of the right-most node of \f$i\f$
constexpr size_t right_most(size_t i) const { constexpr size_t right_most(size_t i) const {
@@ -341,7 +345,6 @@ public:
/// @{ /// @{
/// ///
/// \brief Move Left Insertion, constructs a new node as the left child of \f$p\f$
/// \details If the left node of \f$p\f$ already exists, the move assignment operator is used instead /// \details If the left node of \f$p\f$ already exists, the move assignment operator is used instead
/// \param p The parent node /// \param p The parent node
/// \param val The object to move into the new node /// \param val The object to move into the new node
@@ -351,7 +354,6 @@ public:
} }
/// ///
/// \brief Copy Left Insertion, constructs a new node as the left child of \f$p\f$
/// \details If the left node of \f$p\f$ already exists, the copy assignment operator is used instead /// \details If the left node of \f$p\f$ already exists, the copy assignment operator is used instead
/// \param p The parent node /// \param p The parent node
/// \param val The object to copy to the new node /// \param val The object to copy to the new node
@@ -361,7 +363,7 @@ public:
} }
/// ///
/// \brief Emplace Left Insertion, constructs a new node as the left child of \f$p\f$ /// \brief Left Insertion, constructs a new node as the left child of \f$p\f$
/// \details If the left node of \f$p\f$ already exists, the move assignment operator is used instead /// \details If the left node of \f$p\f$ already exists, the move assignment operator is used instead
/// \param p The parent node /// \param p The parent node
/// \param args The arguments to construct the new node with /// \param args The arguments to construct the new node with
@@ -372,7 +374,6 @@ public:
} }
/// ///
/// \brief Move Right Insertion, constructs a new node as the right child of \f$p\f$
/// \details If the right node of \f$p\f$ already exists, the move assignment operator is used instead /// \details If the right node of \f$p\f$ already exists, the move assignment operator is used instead
/// \param p The parent node /// \param p The parent node
/// \param val The object to move into the new node /// \param val The object to move into the new node
@@ -382,7 +383,6 @@ public:
} }
/// ///
/// \brief Copy Right Insertion, constructs a new node as the right child of \f$p\f$
/// \details If the right node of \f$p\f$ already exists, the copy assignment operator is used instead /// \details If the right node of \f$p\f$ already exists, the copy assignment operator is used instead
/// \param p The parent node /// \param p The parent node
/// \param val The object to copy to the new node /// \param val The object to copy to the new node
@@ -392,7 +392,7 @@ public:
} }
/// ///
/// \brief Emplace Right Insertion, constructs a new node as the right child of \f$p\f$ /// \brief Right Insertion, constructs a new node as the right child of \f$p\f$
/// \details If the right node of \f$p\f$ already exists, the move assignment operator is used instead /// \details If the right node of \f$p\f$ already exists, the move assignment operator is used instead
/// \param p The parent node /// \param p The parent node
/// \param args The arguments to construct the new node with /// \param args The arguments to construct the new node with
@@ -408,7 +408,7 @@ public:
/// \brief Perform a Tree Rotation at \f$i\f$ in the specified direction /// \brief Perform a Tree Rotation at \f$i\f$ in the specified direction
/// \param sub The root node for the rotation /// \param sub The root node for the rotation
/// \param dir The direction to rotate, \f$true\f$ for right, \f$false\f$ for left /// \param dir The direction to rotate, \f$true\f$ for right, \f$false\f$ for left
/// \returns the new root /// \returns the new root node
constexpr size_t rotate(size_t sub, bool dir) { constexpr size_t rotate(size_t sub, bool dir) {
if (sub == npos) { if (sub == npos) {
return npos; return npos;
@@ -434,37 +434,35 @@ public:
} }
/// ///
/// \brief Move Insertion, bool d, constructs a new node as the child of \f$p\f$
/// \details If the child of \f$p\f$ already exists, the move assignment operator is used instead /// \details If the child of \f$p\f$ already exists, the move assignment operator is used instead
/// \param p The parent node /// \param parent The parent node
/// \param d The direction to insert /// \param side The side to insert on
/// \param val The object to move into the new node /// \param val The object to move into the new node
/// \returns The id of the new node /// \returns The id of the new node
constexpr size_t insert(size_t p, bool d, value_t&& val) { constexpr size_t insert(size_t parent, bool side, value_t&& val) {
return this->_insert(p, d, fennec::forward<value_t>(val)); return this->_insert(parent, side, fennec::forward<value_t>(val));
} }
/// ///
/// \brief Copy Insertion, bool d, constructs a new node as the child of \f$p\f$
/// \details If the child of \f$p\f$ already exists, the copy assignment operator is used instead /// \details If the child of \f$p\f$ already exists, the copy assignment operator is used instead
/// \param p The parent node /// \param parent The parent node
/// \param d The direction to insert /// \param side The side to insert on
/// \param val The object to copy to the new node /// \param val The object to copy to the new node
/// \returns The id of the new node /// \returns The id of the new node
constexpr size_t insert(size_t p, bool d, const value_t& val) { constexpr size_t insert(size_t parent, bool side, const value_t& val) {
return this->_insert(p, d, val); return this->_insert(parent, side, val);
} }
/// ///
/// \brief Emplace Insertion, constructs a new node as the child of \f$p\f$ /// \brief Insertion, constructs a new node as the child of \f$p\f$
/// \details If the child of \f$p\f$ already exists, the move assignment operator is used instead /// \details If the child of \f$p\f$ already exists, the move assignment operator is used instead
/// \param p The parent node /// \param parent The parent node
/// \param d The direction to insert /// \param side The side to insert on
/// \param args The arguments to construct the new node with /// \param args The arguments to construct the new node with
/// \returns The id of the new node /// \returns The id of the new node
template<typename...ArgsT> template<typename...ArgsT>
constexpr size_t emplace(size_t p, bool d, ArgsT&&...args) { constexpr size_t emplace(size_t parent, bool side, ArgsT&&...args) {
return this->_insert(p, d, fennec::forward<ArgsT>(args)...); return this->_insert(parent, side, fennec::forward<ArgsT>(args)...);
} }
/// ///
@@ -499,15 +497,18 @@ public:
// Traversal =========================================================================================================== // Traversal ===========================================================================================================
/// \name Traversal
/// @{
/// ///
/// \brief Traverse the tree using a specified order and visiting functor /// \brief Traverse the tree using a specified order and visiting functor
/// ///
/// \details /// \details
/// The visitor should accept a reference to a value of type \f$TypeT\f$ and a `size_t` which contains the node's id. /// The visitor should accept a reference to a value of type \f$TypeT\f$ and a \f$size_t\f$ which contains the node's id.
/// The visitor should return one of the following values in the `fennec::traversal_control_` enum /// The visitor should return one of the following values in the `fennec::traversal_control_` enum
/// ///
/// \tparam OrderT The order with which to traverse the tree. /// \tparam OrderT The order with which to traverse the tree.
/// \tparam VisitorT The visitor, should fulfill the signature `uint8_t visit(TypeT&, size_t)` /// \tparam VisitorT The visitor, should fulfill the signature \f$uint8_t visit(TypeT&, size_t)\f$
/// \param visit The visiting object /// \param visit The visiting object
/// \param i The node to start at /// \param i The node to start at
template<typename OrderT, typename VisitorT> template<typename OrderT, typename VisitorT>
@@ -743,11 +744,15 @@ public:
} }
}; };
/// @}
// Iterator ============================================================================================================ // Iterator ============================================================================================================
/// \name Iteration
/// @{
/// ///
/// \brief C++ Iterator Specification `iterator` /// \brief C++ Iterator Specification \f$iterator\f$
/// \details Performs pre-order traversal /// \details Performs pre-order traversal
class iterator { class iterator {
@@ -837,7 +842,7 @@ public:
/// ///
/// \brief C++ Iterator Specification `iterator` /// \brief C++ Iterator Specification \f$iterator\f$
/// \details Performs pre-order traversal /// \details Performs pre-order traversal
class const_iterator { class const_iterator {
@@ -918,7 +923,7 @@ public:
} }
/// ///
/// \brief C++ Iterator Specification `begin()` /// \brief C++ Iterator Specification \f$begin()\f$
/// \returns an iterator at the first element in pre-order traversal /// \returns an iterator at the first element in pre-order traversal
const_iterator begin() const { const_iterator begin() const {
return iterator(this, _root); return iterator(this, _root);
@@ -931,12 +936,14 @@ public:
} }
/// ///
/// \brief C++ Iterator Specification `begin()` /// \brief C++ Iterator Specification \f$end()\f$
/// \returns an iterator at the first element in pre-order traversal /// \returns an iterator at the first element in pre-order traversal
const_iterator end() const { const_iterator end() const {
return iterator(this, _root, nullid); return iterator(this, _root, nullid);
} }
/// @}
// Fields ============================================================================================================== // Fields ==============================================================================================================
private: private:
table_t _table; table_t _table;

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file bitfield.h /// \file fennec/containers/bitfield.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file containers.h /// \file fennec/containers/containers.h
/// \brief fennec containers library main header /// \brief fennec containers library main header
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -40,7 +40,7 @@
/// ///
/// \code #include <fennec/containers/containers.h> \endcode /// \code #include <fennec/containers/containers.h> \endcode
/// ///
/// \section Data Structure Properties /// \section fennec_containers_container_section_properties Container Properties
/// ///
/// | Property | Meaning | /// | Property | Meaning |
/// |:-----------:|:----------------------------------------------------------------------------------------------:| /// |:-----------:|:----------------------------------------------------------------------------------------------:|
@@ -57,7 +57,7 @@
/// | deletion | The runtime of erasing an element in the data structure, in big-O notation. | /// | deletion | The runtime of erasing an element in the data structure, in big-O notation. |
/// ///
/// ///
/// \section fennec_containers_cppstdlib C++ Standard Template Library /// \section fennec_containers_section_cppstdlib C++ Standard Template Library
/// ///
/// | Symbol | Implemented | Passed | /// | Symbol | Implemented | Passed |
/// |:----------------------------------------------------------------------------|:-----------:|:------:| /// |:----------------------------------------------------------------------------|:-----------:|:------:|
@@ -81,7 +81,7 @@
/// | \ref fennec::variant "fennec::variant" | 🚧 | 🚧 | /// | \ref fennec::variant "fennec::variant" | 🚧 | 🚧 |
/// ///
/// ///
/// \section fennec_containers_fennec fennec /// \section fennec_containers_section_fennec fennec
/// ///
/// | Symbol | Implemented | Passed | /// | Symbol | Implemented | Passed |
/// |:-------------------------|:-----------:|:------:| /// |:-------------------------|:-----------:|:------:|
@@ -90,7 +90,7 @@
/// | \ref fennec::rdtree | ✅ | ✅ | /// | \ref fennec::rdtree | ✅ | ✅ |
/// ///
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
#include <fennec/containers/traversal.h> #include <fennec/containers/traversal.h>

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file deque.h /// \file fennec/containers/deque.h
/// \brief A header containing the definition for a double-ended queue /// \brief A header containing the definition for a double-ended queue
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file dynarray.h /// \file fennec/containers/dynarray.h
/// \brief A header containing the definition for a dynamically allocated array /// \brief A header containing the definition for a dynamically allocated array
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -200,7 +200,7 @@ public:
} }
/// ///
/// \brief Conversion Constructor, copies elements of conv as this `value_t` /// \brief Conversion Constructor, copies elements of conv as this \f$value_t\f$
/// \tparam OTypeT The other value type /// \tparam OTypeT The other value type
/// \tparam OAlloc The other allocator type /// \tparam OAlloc The other allocator type
/// \param conv The dynarray to convert /// \param conv The dynarray to convert
@@ -584,7 +584,7 @@ public:
constexpr TypeT* begin() { return _alloc.data(); } constexpr TypeT* begin() { return _alloc.data(); }
/// ///
/// \brief C++ Iterator Specification `begin()` /// \brief C++ Iterator Specification \f$begin()\f$
/// \returns A const qualified pointer to the first element in the dynarray /// \returns A const qualified pointer to the first element in the dynarray
constexpr const TypeT* begin() const { return _alloc; } constexpr const TypeT* begin() const { return _alloc; }
@@ -594,7 +594,7 @@ public:
constexpr TypeT* end() { return begin() + _size; } constexpr TypeT* end() { return begin() + _size; }
/// ///
/// \brief C++ Iterator Specification `end()` /// \brief C++ Iterator Specification \f$end()\f$
/// \return A const qualified pointer to the address after the last element in the dynarray /// \return A const qualified pointer to the address after the last element in the dynarray
constexpr const TypeT* end() const { return begin() + _size; } constexpr const TypeT* end() const { return begin() + _size; }

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file generic.h /// \file fennec/containers/generic.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -227,7 +227,7 @@ public:
/// ///
/// \brief cast value /// \brief cast value
/// ///
/// \details equivalent to `reinterpret_cast` /// \details equivalent to \f$reinterpret_cast\f$
/// \tparam T The type to cast to /// \tparam T The type to cast to
/// \returns The contents of generic after having cast to \f$T\f$ /// \returns The contents of generic after having cast to \f$T\f$
template<typename T, typename U = remove_cvref_t<T>> template<typename T, typename U = remove_cvref_t<T>>
@@ -236,7 +236,7 @@ public:
} }
/// ///
/// \details equivalent to `reinterpret_cast` /// \details equivalent to \f$reinterpret_cast\f$
/// \tparam T The type to cast to /// \tparam T The type to cast to
/// \returns The contents of generic after having cast to \f$T\f$ /// \returns The contents of generic after having cast to \f$T\f$
template<typename T, typename U = remove_cvref_t<T>> template<typename T, typename U = remove_cvref_t<T>>

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file graph.h /// \file fennec/containers/graph.h
/// \brief A header containing the definition for a graph of vertices connected by edges /// \brief A header containing the definition for a graph of vertices connected by edges
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -80,10 +80,10 @@ namespace fennec
/// produce a connected graph. We will call this "disjointed" /// produce a connected graph. We will call this "disjointed"
/// ///
/// A directed graph is semi-connected if there is a directed path p for \f$u\f$ &rarr; \f$v\f$ *or* \f$v\f$ &rarr; \f$u\f$ for every /// A directed graph is semi-connected if there is a directed path p for \f$u\f$ &rarr; \f$v\f$ *or* \f$v\f$ &rarr; \f$u\f$ for every
/// pair of vertices `u, v`. We will call this "unilateral" /// pair of vertices \f$[u, v]\f$. We will call this "unilateral"
/// ///
/// A directed graph is strongly-connected if there is a directed path p for \f$u\f$ &rarr; \f$v\f$ *and* \f$v\f$ &rarr; \f$u\f$ for every pair /// A directed graph is strongly-connected if there is a directed path p for \f$u\f$ &rarr; \f$v\f$ *and* \f$v\f$ &rarr; \f$u\f$ for every pair
/// of vertices `u, v`. We will call this "connected" /// of vertices \f$[u, v]\f$. We will call this "connected"
/// ///
/// \tparam VertexT The type associated with each vertex /// \tparam VertexT The type associated with each vertex
/// \tparam EdgeT The type associated with each edge /// \tparam EdgeT The type associated with each edge
@@ -256,9 +256,9 @@ public:
} }
/// ///
/// \brief Getter for a list of vertices \f$x\f$ that \f$vertex\f$ has an edge to `x...` /// \brief Getter for a list of vertices \f$x\f$ that \f$vertex\f$ has an edge to \f$x...\f$
/// \param vertex The id of the vertex /// \param vertex The id of the vertex
/// \returns A list containing all vertices \f$x\f$ with edges from \f$vertex\f$ to `x...` /// \returns A list containing all vertices \f$x\f$ with edges from \f$vertex\f$ to \f$x...\f$
list<size_t> outgoing(size_t vertex) { list<size_t> outgoing(size_t vertex) {
list<size_t> res; list<size_t> res;
if (is_empty() || vertex >= _edge_map.size()) { if (is_empty() || vertex >= _edge_map.size()) {
@@ -271,9 +271,9 @@ public:
} }
/// ///
/// \brief Getter for a list of vertices \f$x\f$ that \f$vertex\f$ has an edge from `x...` /// \brief Getter for a list of vertices \f$x\f$ that \f$vertex\f$ has an edge from \f$x...\f$
/// \param vertex The id of the vertex /// \param vertex The id of the vertex
/// \returns A list containing all vertices \f$x\f$ with edges from `x...` to \f$vertex\f$ /// \returns A list containing all vertices \f$x\f$ with edges from \f$x...\f$ to \f$vertex\f$
list<size_t> incoming(size_t vertex) { list<size_t> incoming(size_t vertex) {
list<size_t> res; list<size_t> res;
if (is_empty() || vertex >= _edge_map.size()) { if (is_empty() || vertex >= _edge_map.size()) {
@@ -288,7 +288,7 @@ public:
} }
/// ///
/// \brief Getter for a list of vertices \f$x\f$ that \f$vertex\f$ has an edge to and from `x...` /// \brief Getter for a list of vertices \f$x\f$ that \f$vertex\f$ has an edge to and from \f$x...\f$
/// \param vertex The id of the vertex /// \param vertex The id of the vertex
/// \returns A list containing all vertices \f$x\f$ that have symmetric edges with \f$vertex\f$ /// \returns A list containing all vertices \f$x\f$ that have symmetric edges with \f$vertex\f$
list<size_t> symmetric(size_t vertex) { list<size_t> symmetric(size_t vertex) {
@@ -305,7 +305,7 @@ public:
} }
/// ///
/// \brief Getter for a list of vertices \f$x\f$ that \f$vertex\f$ has an edge to and from `x...` and share the same value /// \brief Getter for a list of vertices \f$x\f$ that \f$vertex\f$ has an edge to and from \f$x...\f$ and share the same value
/// \details /// \details
/// "Joined" edges may also be referred to as "undirected." A joined, or undirected, edge may be /// "Joined" edges may also be referred to as "undirected." A joined, or undirected, edge may be
/// turned into a directed edge by changing the weight object associated with the edge, or by /// turned into a directed edge by changing the weight object associated with the edge, or by
@@ -476,7 +476,7 @@ public:
} }
/// ///
/// \brief Break *all* edges to and from \f$n\f$ /// \brief Break *all* edges connected to \f$n\f$
/// \param n The vertex id /// \param n The vertex id
void cut(size_t n) { void cut(size_t n) {
for (const auto it : outgoing(n)) { for (const auto it : outgoing(n)) {

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file initializer_list.h /// \file fennec/containers/initializer_list.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file list.h /// \file fennec/containers/list.h
/// \brief A header containing the definition for a linked list of values /// \brief A header containing the definition for a linked list of values
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -449,7 +449,7 @@ public:
} }
/// ///
/// \brief C++ Iterator Specification `end()` /// \brief C++ Iterator Specification \f$end()\f$
/// \returns A const iterator for the first element in the list /// \returns A const iterator for the first element in the list
constexpr const_iterator begin() const { constexpr const_iterator begin() const {
return const_iterator(this, _root); return const_iterator(this, _root);
@@ -462,7 +462,7 @@ public:
} }
/// ///
/// \brief Const C++ Iterator Specification `end()` /// \brief Const C++ Iterator Specification \f$end()\f$
/// \returns A const iterator for the end of the list /// \returns A const iterator for the end of the list
constexpr const_iterator end() const { constexpr const_iterator end() const {
return const_iterator(this, npos); return const_iterator(this, npos);
@@ -471,7 +471,7 @@ public:
/// @} /// @}
/// ///
/// \brief C++ Iterator Specification `iterator` /// \brief C++ Iterator Specification \f$iterator\f$
class iterator { class iterator {
public: public:
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file map.h /// \file fennec/containers/map.h
/// \brief A header containing the definition for a mapping of keys to values /// \brief A header containing the definition for a mapping of keys to values
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -97,7 +97,7 @@ public:
/// \brief key hash helper /// \brief key hash helper
struct key_hash : hash_t { struct key_hash : hash_t {
/// ///
/// \brief C++ 11 Hash Specification `operator()` /// \brief C++ 11 Hash Specification \f$operator()\f$
/// \param p the pair to hash /// \param p the pair to hash
/// \returns the hash of the key /// \returns the hash of the key
constexpr size_t operator()(const elem_t& p) const { constexpr size_t operator()(const elem_t& p) const {
@@ -109,7 +109,7 @@ public:
/// \brief key comparison helper /// \brief key comparison helper
struct key_equals : equality<KeyT> { struct key_equals : equality<KeyT> {
/// ///
/// \brief C++ 11 Compare Specification `operator()` /// \brief C++ 11 Compare Specification \f$operator()\f$
/// \param a the first pair /// \param a the first pair
/// \param b the second pair /// \param b the second pair
/// \returns \f$true\f$ if the keys are equal, \f$false\f$ otherwise /// \returns \f$true\f$ if the keys are equal, \f$false\f$ otherwise
@@ -276,7 +276,7 @@ public:
/// @{ /// @{
/// ///
/// \brief C++ Iterator Specification `begin()` /// \brief C++ Iterator Specification \f$begin()\f$
/// \returns an iterator at the start of the map /// \returns an iterator at the start of the map
constexpr iterator begin() { constexpr iterator begin() {
return _set.begin(); return _set.begin();
@@ -284,7 +284,7 @@ public:
/// ///
/// \brief C++ Iterator Specification `end()` /// \brief C++ Iterator Specification \f$end()\f$
/// \returns an iterator at the end of the map /// \returns an iterator at the end of the map
constexpr iterator end() { constexpr iterator end() {
return _set.end(); return _set.end();

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file object_pool.h /// \file fennec/containers/object_pool.h
/// \brief A header containing the definition for a pool of objects associated by ids /// \brief A header containing the definition for a pool of objects associated by ids
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -183,7 +183,7 @@ public:
/// ///
/// \brief Emplacement, constructs a new object using `args...` /// \brief Emplacement, constructs a new object using \f$args...\f$
/// \param args The arguments to construct the new object with /// \param args The arguments to construct the new object with
/// \returns An integer corresponding to the id of the node /// \returns An integer corresponding to the id of the node
template<typename...ArgsT> template<typename...ArgsT>
@@ -222,7 +222,7 @@ public:
} }
/// ///
/// \brief C++ Iterator Specification `begin()` /// \brief C++ Iterator Specification \f$begin()\f$
/// \returns an iterator at the start of the object pool /// \returns an iterator at the start of the object pool
const_iterator begin() const { const_iterator begin() const {
return const_iterator(this, 0); return const_iterator(this, 0);
@@ -235,14 +235,14 @@ public:
} }
/// ///
/// \brief C++ Iterator Specification `end()` /// \brief C++ Iterator Specification \f$end()\f$
/// \returns an iterator at the start of the end of the object pool /// \returns an iterator at the start of the end of the object pool
const_iterator end() const { const_iterator end() const {
return const_iterator(this, _size); return const_iterator(this, _size);
} }
/// ///
/// \brief C++ Iterator Specification `iterator` /// \brief C++ Iterator Specification \f$iterator\f$
class iterator { class iterator {
public: public:
/// ///
@@ -340,7 +340,7 @@ public:
}; };
/// ///
/// \brief C++ Iterator Specification `const_iterator` /// \brief C++ Iterator Specification \f$const_iterator\f$
class const_iterator { class const_iterator {
public: public:
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file optional.h /// \file fennec/containers/optional.h
/// \brief A header containing the definition for a container with an optionally present variable /// \brief A header containing the definition for a container with an optionally present variable
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -39,15 +39,15 @@
namespace fennec namespace fennec
{ {
/// ///
/// \brief struct to represent a \f$null\f$ `optional` /// \brief struct to represent a \f$null\f$ `fennec::optional`
struct nullopt_t {}; struct nullopt_t {};
/// ///
/// \brief value representing a \f$null\f$ `optional` /// \brief value representing a \f$null\f$ `fennec::optional`
constexpr nullopt_t nullopt_v = {}; constexpr nullopt_t nullopt_v = {};
/// ///
/// \brief alias for representing a \f$null\f$ `optional` /// \brief alias for representing a \f$null\f$ `fennec::optional`
#define nullopt nullopt_v #define nullopt nullopt_v
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file pair.h /// \file fennec/containers/pair.h
/// \brief A header containing the definition for a container holding a pair of values /// \brief A header containing the definition for a container holding a pair of values
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -208,13 +208,13 @@ struct pair {
}; };
/// ///
/// \brief C++ 11 Hash Specification for `pair<TypeT0, TypeT1>` /// \brief C++ 11 Hash Specification for `fennec::pair<TypeT0, TypeT1>`
/// \tparam TypeT0 The first type of the pair /// \tparam TypeT0 The first type of the pair
/// \tparam TypeT1 The second type of the pair /// \tparam TypeT1 The second type of the pair
template<typename TypeT0, typename TypeT1> template<typename TypeT0, typename TypeT1>
struct hash<pair<TypeT0, TypeT1>> : hash<TypeT0>, hash<TypeT1> { struct hash<pair<TypeT0, TypeT1>> : hash<TypeT0>, hash<TypeT1> {
/// ///
/// \brief C++ 11 Hash Specification `operator()` /// \brief C++ 11 Hash Specification \f$operator()\f$
/// \param p The pair to hash /// \param p The pair to hash
/// \returns a pairing of the hashes of both elements of \f$p\f$ using `fennec::pair_hash` /// \returns a pairing of the hashes of both elements of \f$p\f$ using `fennec::pair_hash`
constexpr size_t operator()(const pair<TypeT0, TypeT1>& p) const { constexpr size_t operator()(const pair<TypeT0, TypeT1>& p) const {

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file priority_queue.h /// \file fennec/containers/priority_queue.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file rdtree.h /// \file fennec/containers/rdtree.h
/// \brief A header containing the definition for a tree with a root and directed edges /// \brief A header containing the definition for a tree with a root and directed edges
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -447,11 +447,11 @@ public:
/// \brief Traverse the tree using a specified order and visiting functor /// \brief Traverse the tree using a specified order and visiting functor
/// ///
/// \details /// \details
/// The visitor should accept a reference to a value of type \f$TypeT\f$ and a `size_t` which contains the node's id. /// The visitor should accept a reference to a value of type \f$TypeT\f$ and a \f$size_t\f$ which contains the node's id.
/// The visitor should return one of the following values in the `fennec::traversal_control_` enum /// The visitor should return one of the following values in the `fennec::traversal_control_` enum
/// ///
/// \tparam OrderT The order with which to traverse the tree. /// \tparam OrderT The order with which to traverse the tree.
/// \tparam VisitorT The visitor, should fulfill the signature `uint8_t visit(TypeT&, size_t)` /// \tparam VisitorT The visitor, should fulfill the signature \f$uint8_t visit(TypeT&, size_t)\f$
/// \param visit The visiting object /// \param visit The visiting object
/// \param i The node to start at /// \param i The node to start at
template<typename OrderT, typename VisitorT> template<typename OrderT, typename VisitorT>

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file sequence.h /// \file fennec/containers/sequence.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -241,7 +241,7 @@ public:
/// @{ /// @{
/// ///
/// \brief Value Find Function, finds the iterator position for \f$val\f$, otherwise returns `end()` /// \brief Value Find Function, finds the iterator position for \f$val\f$, otherwise returns \f$end()\f$
/// \param val The value to find /// \param val The value to find
/// \returns An iterator at the value /// \returns An iterator at the value
constexpr iterator find(const value_t& val) { constexpr iterator find(const value_t& val) {
@@ -351,7 +351,7 @@ public:
} }
/// ///
/// \brief C++ Iterator Specification `begin()` /// \brief C++ Iterator Specification \f$begin()\f$
/// \returns An iterator at the smallest element in the sequence /// \returns An iterator at the smallest element in the sequence
constexpr const_iterator begin() const { constexpr const_iterator begin() const {
return sequence::const_iterator(this, _root); return sequence::const_iterator(this, _root);
@@ -364,14 +364,14 @@ public:
} }
/// ///
/// \brief Const C++ Iterator Specification `end()` /// \brief Const C++ Iterator Specification \f$end()\f$
/// \returns An iterator after the largest element in the sequence /// \returns An iterator after the largest element in the sequence
constexpr const_iterator end() const { constexpr const_iterator end() const {
return sequence::const_iterator(this, _root, nullptr); return sequence::const_iterator(this, _root, nullptr);
} }
/// ///
/// \brief C++ Iterator Specification `iterator` /// \brief C++ Iterator Specification \f$iterator\f$
class iterator { class iterator {
private: private:
sequence* _seq; sequence* _seq;
@@ -470,7 +470,7 @@ public:
}; };
/// ///
/// \brief C++ Iterator Specification `iterator` /// \brief C++ Iterator Specification \f$iterator\f$
class const_iterator { class const_iterator {
private: private:
const sequence* _seq; const sequence* _seq;

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file set.h /// \file fennec/containers/set.h
/// \brief A header containing the definition for a set of unique values /// \brief A header containing the definition for a set of unique values
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -362,7 +362,7 @@ public:
/// @{ /// @{
/// ///
/// \brief C++ Iterator Specification `begin()` /// \brief C++ Iterator Specification \f$begin()\f$
/// \returns An iterator for all elements of the set in no particular order /// \returns An iterator for all elements of the set in no particular order
constexpr iterator begin() const { constexpr iterator begin() const {
iterator it(this, 0); iterator it(this, 0);
@@ -373,7 +373,7 @@ public:
} }
/// ///
/// \brief C++ Iterator Specification `end()` /// \brief C++ Iterator Specification \f$end()\f$
/// \returns An iterator representing the end of the set /// \returns An iterator representing the end of the set
constexpr iterator end() const { constexpr iterator end() const {
return iterator(this, npos); return iterator(this, npos);
@@ -382,7 +382,7 @@ public:
/// @} /// @}
/// ///
/// \brief C++ Iterator Specification `iterator` /// \brief C++ Iterator Specification \f$iterator\f$
class iterator { class iterator {
public: public:
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file traversal.h /// \file fennec/containers/traversal.h
/// \brief a header containing constants and utilities related to traversal /// \brief a header containing constants and utilities related to traversal
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file tuple.h /// \file fennec/containers/tuple.h
/// \brief A header containing the definition for a container with multiple values of differing types /// \brief A header containing the definition for a container with multiple values of differing types
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file variant.h /// \file fennec/containers/variant.h
/// \brief Contains the definition for a structure that holds a single value from multiple types /// \brief Contains the definition for a structure that holds a single value from multiple types
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -40,7 +40,7 @@ namespace fennec
{ {
/// ///
/// \brief A structure that represents a union between `TypesT...` /// \brief A structure that represents a union between \f$TypesT...\f$
/// \details /// \details
/// | Property | Value | /// | Property | Value |
/// |:-----------:|:-----------:| /// |:-----------:|:-----------:|
@@ -80,7 +80,7 @@ struct variant {
// Constructors ======================================================================================================== // Constructors ========================================================================================================
/// ///
/// \brief Default Constructor, constructs the first type in `TypesT...` that is default constructible /// \brief Default Constructor, constructs the first type in \f$TypesT...\f$ that is default constructible
variant() variant()
: _bytes {} : _bytes {}
, _type(nulltype) { , _type(nulltype) {
@@ -89,7 +89,7 @@ struct variant {
} }
/// ///
/// \brief Conversion Constructor, constructs the type in `TypesT...` that is identical to \f$T\f$ /// \brief Conversion Constructor, constructs the type in \f$TypesT...\f$ that is identical to \f$T\f$
/// or the first that is constructible with \f$T\f$ /// or the first that is constructible with \f$T\f$
/// \tparam T The type of the value /// \tparam T The type of the value
/// \param t The value to forward /// \param t The value to forward
@@ -104,7 +104,7 @@ struct variant {
} }
/// ///
/// \brief Emplace Constructor, constructs the first type in `TypesT...` that is constructible with `ArgsT...` /// \brief Emplace Constructor, constructs a type \f$T\f$ that is in \f$TypesT...\f$ that is constructible with \f$ArgsT...\f$
/// \tparam ArgsT The arguments of the constructor /// \tparam ArgsT The arguments of the constructor
/// \param args The argument values /// \param args The argument values
template<typename T, typename...ArgsT> template<typename T, typename...ArgsT>
@@ -169,7 +169,7 @@ struct variant {
template<typename T> template<typename T>
variant& operator=(T&& t) { variant& operator=(T&& t) {
// First, check if \f$T\f$ is in `TypesT...` // First, check if T is in TypesT...
if constexpr((contains_element_v<T, TypesT> or ...)) { if constexpr((contains_element_v<T, TypesT> or ...)) {
using type_t = remove_reference_t<T>; using type_t = remove_reference_t<T>;
if (_type == find_element_v<type_t, TypesT...>) { if (_type == find_element_v<type_t, TypesT...>) {

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file engine.h /// \file fennec/core/engine.h
/// \brief fennec::engine definition /// \brief fennec::engine definition
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -49,7 +49,7 @@
/// 2. \ref fennec_memory "Memory Management Library" /// 2. \ref fennec_memory "Memory Management Library"
/// 2. \ref fennec_containers "Containers Library" /// 2. \ref fennec_containers "Containers Library"
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -63,7 +63,7 @@
/// | \subpage fennec_containers | Implementation of common data structures, those that are specified in the C++ STD Library, and custom data structures that fennec uses. | /// | \subpage fennec_containers | Implementation of common data structures, those that are specified in the C++ STD Library, and custom data structures that fennec uses. |
/// ///
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
#ifndef FENNEC_CORE_ENGINE_H #ifndef FENNEC_CORE_ENGINE_H

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -40,10 +40,8 @@ public:
/// \param event the event to handle /// \param event the event to handle
virtual void handle_event(event* event) = 0; virtual void handle_event(event* event) = 0;
#ifndef FENNEC_DOXYGEN
FENNEC_RTTI_CLASS_ENABLE() { FENNEC_RTTI_CLASS_ENABLE() {
} }
#endif
}; };
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file logger.h /// \file fennec/core/logger.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file version.h /// \file fennec/core/version.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -45,13 +45,13 @@ namespace fennec
/// <tr><td style="vertical-align: top">\f$write\f$ /// <tr><td style="vertical-align: top">\f$write\f$
/// <td style="vertical-align: top">Opens file as write-only, writing to end /// <td style="vertical-align: top">Opens file as write-only, writing to end
/// ///
/// <tr><td style="vertical-align: top">`read | write` /// <tr><td style="vertical-align: top">\f$read | write\f$
/// <td style="vertical-align: top">Opens file as read-write, reading from start /// <td style="vertical-align: top">Opens file as read-write, reading from start
/// ///
/// <tr><td style="vertical-align: top">`write | trunc` /// <tr><td style="vertical-align: top">\f$write | trunc\f$
/// <td style="vertical-align: top">Opens file as write-only, destroying contents /// <td style="vertical-align: top">Opens file as write-only, destroying contents
/// ///
/// <tr><td style="vertical-align: top">`read | write | trunc` /// <tr><td style="vertical-align: top">\f$read | write | trunc\f$
/// <td style="vertical-align: top">Opens file as read-write, destroying contents /// <td style="vertical-align: top">Opens file as read-write, destroying contents
/// </table> /// </table>
enum fmode_ : uint8_t enum fmode_ : uint8_t

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -281,21 +281,21 @@ public:
// Iterator ============================================================================================================ // Iterator ============================================================================================================
/// ///
/// \brief C++ Iterator Specification `begin()` /// \brief C++ Iterator Specification \f$begin()\f$
/// \returns an iterator at the first filename in the path /// \returns an iterator at the first filename in the path
iterator begin() const { iterator begin() const {
return iterator(this, 0); return iterator(this, 0);
} }
/// ///
/// \brief C++ Iterator Specification `end()` /// \brief C++ Iterator Specification \f$end()\f$
/// \returns an iterator to the end of the path /// \returns an iterator to the end of the path
iterator end() const { iterator end() const {
return iterator(this, _str.size()); return iterator(this, _str.size());
} }
/// ///
/// \brief C++ Iterator Specification `iterator` /// \brief C++ Iterator Specification \f$iterator\f$
class iterator { class iterator {
public: public:
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file charconv.h /// \file fennec/format/charconv.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -16,18 +16,6 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
// ===================================================================================================================== // =====================================================================================================================
///
/// \file _format.h
/// \brief
///
///
/// \details
/// \author Medusa Slockbower
///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
///
///
#ifndef FENNEC_FORMAT_DETAIL_FORMAT_H #ifndef FENNEC_FORMAT_DETAIL_FORMAT_H
#define FENNEC_FORMAT_DETAIL_FORMAT_H #define FENNEC_FORMAT_DETAIL_FORMAT_H

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file format.h /// \file fennec/format/format.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file format_arg.h /// \file fennec/format/format_arg.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file formatter.h /// \file fennec/format/formatter.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file tokenizer.h /// \file fennec/interpret/tokenizer.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file assert.h /// \file fennec/lang/assert.h
/// \brief \ref fennec_lang_assert /// \brief \ref fennec_lang_assert
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file bits.h /// \file fennec/lang/bits.h
/// \brief \ref fennec_lang_bit_manipulation /// \brief \ref fennec_lang_bit_manipulation
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -161,7 +161,7 @@ struct inequality<T0, T1> {
// less ================================================================================================================ // less ================================================================================================================
/// ///
/// \brief Struct to test if a value of type `T0` is less than a value of type `T1` /// \brief Struct to test if a value of type \f$T0\f$ is less than a value of type \f$T1\f$
/// \tparam T0 The first type /// \tparam T0 The first type
/// \tparam T1 The second type /// \tparam T1 The second type
template<typename T0, typename T1 = T0> requires has_less_v<T0, T1> template<typename T0, typename T1 = T0> requires has_less_v<T0, T1>
@@ -180,7 +180,7 @@ struct less {
// less_equal ========================================================================================================== // less_equal ==========================================================================================================
/// ///
/// \brief Struct to test if a value of type `T0` is less than or equal to a value of type `T1` /// \brief Struct to test if a value of type \f$T0\f$ is less than or equal to a value of type \f$T1\f$
/// \tparam T0 The first type /// \tparam T0 The first type
/// \tparam T1 The second type /// \tparam T1 The second type
template<typename T0, typename T1 = T0> requires has_less_equals_v<T0, T1> template<typename T0, typename T1 = T0> requires has_less_equals_v<T0, T1>
@@ -199,7 +199,7 @@ struct less_equals {
// greater ============================================================================================================= // greater =============================================================================================================
/// ///
/// \brief Struct to test if a value of type `T0` is greater than a value of type `T1` /// \brief Struct to test if a value of type \f$T0\f$ is greater than a value of type \f$T1\f$
/// \tparam T0 The first type /// \tparam T0 The first type
/// \tparam T1 The second type /// \tparam T1 The second type
template<typename T0, typename T1 = T0> requires has_greater_v<T0, T1> template<typename T0, typename T1 = T0> requires has_greater_v<T0, T1>
@@ -218,7 +218,7 @@ struct greater {
// less_equal ========================================================================================================== // less_equal ==========================================================================================================
/// ///
/// \brief Struct to test if a value of type `T0` is greater than or equal to a value of type `T1` /// \brief Struct to test if a value of type \f$T0\f$ is greater than or equal to a value of type \f$T1\f$
/// \tparam T0 The first type /// \tparam T0 The first type
/// \tparam T1 The second type /// \tparam T1 The second type
template<typename T0, typename T1 = T0> requires has_greater_equals_v<T0, T1> template<typename T0, typename T1 = T0> requires has_greater_equals_v<T0, T1>

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file conditional_types.h /// \file fennec/lang/conditional_types.h
/// \brief \ref fennec_lang_conditional_types /// \brief \ref fennec_lang_conditional_types
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -75,7 +75,7 @@ namespace fennec
/// \brief select between two types based on a condition /// \brief select between two types based on a condition
/// ///
/// \details Selects between \p TrueT and \p FalseT based on the boolean value \p b. /// \details Selects between \p TrueT and \p FalseT based on the boolean value \p b.
/// The chosen type is stored in `conditional::type`. /// The chosen type is stored in `fennec::conditional::type`.
/// \tparam B the value of the condition /// \tparam B the value of the condition
/// \tparam TrueT type to use when \f$B == true\f$ /// \tparam TrueT type to use when \f$B == true\f$
/// \tparam FalseT type to use when \f$B == false\f$ /// \tparam FalseT type to use when \f$B == false\f$
@@ -84,7 +84,7 @@ struct conditional;
/// ///
/// \brief Shorthand for ```typename conditional<ConditionV, TrueT, FalseT>::type``` /// \brief Shorthand for `typename fennec::conditional<ConditionV, TrueT, FalseT>::type`
template<bool B, typename TrueT, typename FalseT> template<bool B, typename TrueT, typename FalseT>
using conditional_t using conditional_t
= typename conditional<B, TrueT, FalseT>::type; = typename conditional<B, TrueT, FalseT>::type;
@@ -103,13 +103,13 @@ struct conditional<false, T, F> : type_identity<F>{};
// fennec::detect ====================================================================================================== // fennec::detect ======================================================================================================
/// ///
/// \brief Detect whether `DetectT<ArgsT...>` is a valid type /// \brief Detect whether \f$DetectT<ArgsT...>\f$ is a valid type
/// ///
/// \details Selects `DetectT<ArgsT...>` if it exists, otherwise selects \f$DefaultT\f$ The chosen type is stored in `detect::type` and /// \details Selects \f$DetectT<ArgsT...>\f$ if it exists, otherwise selects \f$DefaultT\f$ The chosen type is stored in `fennec::detect::type` and
/// a boolean value is stored in `detect::is_detected` representing whether `DetectT<ArgsT...>` is found. /// a boolean value is stored in `fennec::detect::is_detected` representing whether \f$DetectT<ArgsT...>\f$ is found.
/// \tparam DefaultT Default type /// \tparam DefaultT Default type
/// \tparam DetectT Type to detect /// \tparam DetectT Type to detect
/// \tparam ArgsT Any template arguments for `DetectT<ArgsT>` /// \tparam ArgsT Any template arguments for \f$DetectT<ArgsT>\f$
template<typename DefaultT, template<typename...> typename DetectT, typename...ArgsT> template<typename DefaultT, template<typename...> typename DetectT, typename...ArgsT>
struct detect struct detect
{ {
@@ -118,7 +118,7 @@ struct detect
}; };
/// ///
/// \brief Shorthand for ```typename detect<DefaultT, DetectT, ArgsT...>::type``` /// \brief Shorthand for `typename fennec::detect<DefaultT, DetectT, ArgsT...>::type`
template<typename DefaultT, template<typename...> typename DetectT, typename...ArgsT> template<typename DefaultT, template<typename...> typename DetectT, typename...ArgsT>
using detect_t = typename detect<DefaultT, DetectT, ArgsT...>::type; using detect_t = typename detect<DefaultT, DetectT, ArgsT...>::type;
@@ -154,7 +154,7 @@ template<bool B, typename T = void>
struct enable_if {}; struct enable_if {};
/// ///
/// \brief Shorthand for ```typename enable_if<B, T>::type``` /// \brief Shorthand for `typename fennec::enable_if<B, T>::type`
template<bool B, typename T = void> template<bool B, typename T = void>
using enable_if_t = typename enable_if<B, T>::type; using enable_if_t = typename enable_if<B, T>::type;

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file constants.h /// \file fennec/lang/constants.h
/// \brief \ref fennec_lang_constants /// \brief \ref fennec_lang_constants
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file declval.h /// \file fennec/lang/declval.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -16,18 +16,6 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
// ===================================================================================================================== // =====================================================================================================================
///
/// \file _declval.h
/// \brief
///
///
/// \details
/// \author Medusa Slockbower
///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
///
///
#ifndef FENNEC_LANG_DETAIL_DECLVAL_H #ifndef FENNEC_LANG_DETAIL_DECLVAL_H
#define FENNEC_LANG_DETAIL_DECLVAL_H #define FENNEC_LANG_DETAIL_DECLVAL_H

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -16,18 +16,6 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
// ===================================================================================================================== // =====================================================================================================================
///
/// \file _function.h
/// \brief
///
///
/// \details
/// \author Medusa Slockbower
///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
///
///
#ifndef FENNEC_LANG_DETAIL_FUNCTION_H #ifndef FENNEC_LANG_DETAIL_FUNCTION_H
#define FENNEC_LANG_DETAIL_FUNCTION_H #define FENNEC_LANG_DETAIL_FUNCTION_H

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,13 +17,13 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file float.h /// \file fennec/lang/float.h
/// \brief metaprogramming floating point type info /// \brief metaprogramming floating point type info
/// ///
/// ///
/// \details this file is automatically generated for the current build environment /// \details this file is automatically generated for the current build environment
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file function.h /// \file fennec/lang/function.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,13 +17,13 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file integer.h /// \file fennec/lang/integer.h
/// \brief metaprogramming integer type info /// \brief metaprogramming integer type info
/// ///
/// ///
/// \details this file is automatically generated for the current build environment /// \details this file is automatically generated for the current build environment
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,10 +17,10 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file intrinsics.h /// \file fennec/lang/intrinsics.h
/// \brief \ref fennec_lang_intrinsics /// \brief \ref fennec_lang_intrinsics
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -40,59 +40,59 @@
/// <tr><th style="vertical-align: top">Syntax /// <tr><th style="vertical-align: top">Syntax
/// <th style="vertical-align: top">Description /// <th style="vertical-align: top">Description
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_BIT_CAST` <br> /// \f$FENNEC_HAS_BUILTIN_BIT_CAST\f$ <br>
/// `Y FENNEC_BUILTIN_BIT_CAST(X)` /// \f$Y FENNEC_BUILTIN_BIT_CAST(X)\f$
/// <td width="50%" style="vertical-align: top"> /// <td width="50%" style="vertical-align: top">
/// An intrinsic for doing a bitwise cast without using `reinterpret_cast`. /// An intrinsic for doing a bitwise cast without using \f$reinterpret_cast\f$.
/// ///
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_ADDRESSOF` <br> /// \f$FENNEC_HAS_BUILTIN_ADDRESSOF\f$ <br>
/// `Y FENNEC_BUILTIN_ADDRESSOF(X)` /// \f$Y FENNEC_BUILTIN_ADDRESSOF(X)\f$
/// <td width="50%" style="vertical-align: top"> /// <td width="50%" style="vertical-align: top">
/// Obtains the true address of an object in circumstances where `operator&` is overloaded. /// Obtains the true address of an object in circumstances where \f$operator&\f$ is overloaded.
/// ///
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_IS_CONVERTIBLE` <br> /// \f$FENNEC_HAS_BUILTIN_IS_CONVERTIBLE\f$ <br>
/// `B FENNEC_BUILTIN_IS_CONVERTIBLE(X, Y)` /// \f$B FENNEC_BUILTIN_IS_CONVERTIBLE(X, Y)\f$
/// <td width="50%" style="vertical-align: top"> /// <td width="50%" style="vertical-align: top">
/// Checks if type \f$X\f$ can be converted to type \f$Y\f$. /// Checks if type \f$X\f$ can be converted to type \f$Y\f$.
/// ///
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_IS_EMPTY` <br> /// \f$FENNEC_HAS_BUILTIN_IS_EMPTY\f$ <br>
/// `B FENNEC_BUILTIN_IS_EMPTY(X)` /// \f$B FENNEC_BUILTIN_IS_EMPTY(X)\f$
/// <td width="50%" style="vertical-align: top"> /// <td width="50%" style="vertical-align: top">
/// Checks if type \f$X\f$ stores no data. /// Checks if type \f$X\f$ stores no data.
/// ///
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_IS_POLYMORPHIC` <br> /// \f$FENNEC_HAS_BUILTIN_IS_POLYMORPHIC\f$ <br>
/// `B FENNEC_BUILTIN_IS_POLYMORPHIC(X)` /// \f$B FENNEC_BUILTIN_IS_POLYMORPHIC(X)\f$
/// <td width="50%" style="vertical-align: top"> /// <td width="50%" style="vertical-align: top">
/// Checks if type \f$X\f$ is polymorphic, this is for classes only thus checks only for subtyping /// Checks if type \f$X\f$ is polymorphic, this is for classes only thus checks only for subtyping
/// ///
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_IS_FINAL` <br> /// \f$FENNEC_HAS_BUILTIN_IS_FINAL\f$ <br>
/// `B FENNEC_BUILTIN_IS_FINAL(X)` /// \f$B FENNEC_BUILTIN_IS_FINAL(X)\f$
/// <td width="50%" style="vertical-align: top"> /// <td width="50%" style="vertical-align: top">
/// Checks if type \f$X\f$ is final, meaning a function or class cannot be derived from. /// Checks if type \f$X\f$ is final, meaning a function or class cannot be derived from.
/// ///
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_IS_ABSTRACT` <br> /// \f$FENNEC_HAS_BUILTIN_IS_ABSTRACT\f$ <br>
/// `B FENNEC_BUILTIN_IS_ABSTRACT(X)` /// \f$B FENNEC_BUILTIN_IS_ABSTRACT(X)\f$
/// <td width="50%" style="vertical-align: top"> /// <td width="50%" style="vertical-align: top">
/// Opposite of `FENNEC_BUILTIN_IS_FINAL`, checks if abstract, meaning \f$X\f$ has at least one pure virtual function. /// Opposite of \f$FENNEC_BUILTIN_IS_FINAL\f$, checks if abstract, meaning \f$X\f$ has at least one pure virtual function.
/// ///
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_IS_STANDARD_LAYOUT` <br> /// \f$FENNEC_HAS_BUILTIN_IS_STANDARD_LAYOUT\f$ <br>
/// `B FENNEC_BUILTIN_IS_STANDARD_LAYOUT(X)` /// \f$B FENNEC_BUILTIN_IS_STANDARD_LAYOUT(X)\f$
/// <td width="50%" style="vertical-align: top"> /// <td width="50%" style="vertical-align: top">
/// Checks if \f$X\f$ has a standard layout, here is [full criteria](https://www.cppreference.com/w/cpp/language/classes.html#Standard-layout_class) /// Checks if \f$X\f$ has a standard layout, here is [full criteria](https://www.cppreference.com/w/cpp/language/classes.html#Standard-layout_class)
/// for this trait /// for this trait
/// ///
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_IS_CONSTRUCTIBLE` <br> /// \f$FENNEC_HAS_BUILTIN_IS_CONSTRUCTIBLE\f$ <br>
/// `B FENNEC_BUILTIN_IS_CONSTRUCTIBLE(X, ...)` /// \f$B FENNEC_BUILTIN_IS_CONSTRUCTIBLE(X, ...)\f$
/// <td width="50%" style="vertical-align: top"> /// <td width="50%" style="vertical-align: top">
/// Checks if type \f$X\f$ is constructible with args `...`, such that `X::X(...)` exists. /// Checks if type \f$X\f$ is constructible with args \f$...\f$, such that \f$X::X(...)\f$ exists.
/// ///
/// </table> /// </table>
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file lang.h /// \file fennec/lang/lang.h
/// \brief \ref fennec_lang /// \brief \ref fennec_lang
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file limits.h /// \file fennec/lang/limits.h
/// \brief \ref fennec_lang_limits /// \brief \ref fennec_lang_limits
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file metaprogramming.h /// \file fennec/lang/metaprogramming.h
/// \brief \ref fennec_lang /// \brief \ref fennec_lang
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file metasequences.h /// \file fennec/lang/metasequences.h
/// \brief \ref fennec_lang_metasequences /// \brief \ref fennec_lang_metasequences
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -116,7 +116,7 @@ template<typename ValueT, ValueT...Values> struct metasequence
/// \brief metaprogramming integral metasequence /// \brief metaprogramming integral metasequence
/// ///
/// \details A `fennec::metasequence` specialized integer types. /// \details A `fennec::metasequence` specialized integer types.
/// \tparam IntT type of the values, must satisfy ```fennec::is_integral<T>``` /// \tparam IntT type of the values, must satisfy `fennec::is_integral<T>`
/// \tparam Values sequence values /// \tparam Values sequence values
template<typename IntT, IntT...Values> requires(is_integral_v<IntT>) template<typename IntT, IntT...Values> requires(is_integral_v<IntT>)
struct integer_metasequence : metasequence<IntT, Values...> struct integer_metasequence : metasequence<IntT, Values...>
@@ -141,12 +141,12 @@ struct integer_metasequence : metasequence<IntT, Values...>
/// \brief generate a fennec::integer_metasequence \f$\left[\,0\,\ldots\,N\,\right)\f$ /// \brief generate a fennec::integer_metasequence \f$\left[\,0\,\ldots\,N\,\right)\f$
/// ///
/// \details /// \details
/// \tparam IntT type of the values, must satisfy ```fennec::is_integral<T>``` /// \tparam IntT type of the values, must satisfy `fennec::is_integral<T>`
/// \tparam N size of the metasequence to generate /// \tparam N size of the metasequence to generate
template<typename IntT, size_t N> struct make_integer_metasequence; template<typename IntT, size_t N> struct make_integer_metasequence;
/// ///
/// \brief shorthand for ```typename make_integer_sequence<T, N>::type``` /// \brief shorthand for `typename fennec::make_integer_sequence<T, N>::type`
template<typename IntT, size_t N> using make_integer_metasequence_t = typename make_integer_metasequence<IntT, N>::type; template<typename IntT, size_t N> using make_integer_metasequence_t = typename make_integer_metasequence<IntT, N>::type;
@@ -180,12 +180,12 @@ template<size_t...Indices> struct index_metasequence : integer_metasequence<size
/// \brief generate a fennec::index_metasequence \f$\left[\,0\,\ldots\,N\,\right)\f$ /// \brief generate a fennec::index_metasequence \f$\left[\,0\,\ldots\,N\,\right)\f$
/// ///
/// \details /// \details
/// \tparam T type of the values, must satisfy ```fennec::is_integral<T>``` /// \tparam T type of the values, must satisfy `fennec::is_integral<T>`
/// \tparam N size of the sequence to generate /// \tparam N size of the sequence to generate
template<size_t N> struct make_index_metasequence; template<size_t N> struct make_index_metasequence;
/// ///
/// \brief shorthand for ```typename make_index_metasequence<N>::type``` /// \brief shorthand for `typename fennec::make_index_metasequence<N>::type`
template<size_t N> using make_index_metasequence_t = typename make_index_metasequence<N>::type; template<size_t N> using make_index_metasequence_t = typename make_index_metasequence<N>::type;
@@ -201,7 +201,7 @@ template<size_t N> using make_index_metasequence_t = typename make_index_metase
template<typename SequenceT0, typename SequenceT1> struct concat_metasequence; template<typename SequenceT0, typename SequenceT1> struct concat_metasequence;
/// ///
/// \brief shorthand for ```typename concat_metasequence<SequenceT0, SequenceT1>::type``` /// \brief shorthand for `typename fennec::concat_metasequence<SequenceT0, SequenceT1>::type`
template<typename SequenceT0, typename SequenceT1> using concat_metasequence_t template<typename SequenceT0, typename SequenceT1> using concat_metasequence_t
= typename concat_metasequence<SequenceT0, SequenceT1>::type; = typename concat_metasequence<SequenceT0, SequenceT1>::type;

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General License as published by // it under the terms of the GNU General License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file numeric_transforms.h /// \file fennec/lang/numeric_transforms.h
/// \brief \ref fennec_lang_numeric_transforms /// \brief \ref fennec_lang_numeric_transforms
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
#ifndef FENNEC_LANG_NUMERIC_TRANSFORMS_H #ifndef FENNEC_LANG_NUMERIC_TRANSFORMS_H

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file ranges.h /// \file fennec/lang/ranges.h
/// \brief /// \brief
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -37,7 +37,7 @@ namespace fennec
{ {
/// ///
/// \brief C++ Iterator Specification `begin()` /// \brief C++ Iterator Specification \f$begin()\f$
/// \tparam ContainerT the container type /// \tparam ContainerT the container type
/// \param c the container to iterate on /// \param c the container to iterate on
/// \returns an iterator at the start of the container /// \returns an iterator at the start of the container
@@ -47,7 +47,7 @@ inline constexpr auto begin(ContainerT& c) noexcept(noexcept(c.begin())) -> decl
} }
/// ///
/// \brief C++ Iterator Specification `begin()` /// \brief C++ Iterator Specification \f$begin()\f$
/// \tparam ContainerT the container type /// \tparam ContainerT the container type
/// \param c the container to iterate on /// \param c the container to iterate on
/// \returns an iterator at the start of the container /// \returns an iterator at the start of the container
@@ -57,7 +57,7 @@ inline constexpr auto begin(const ContainerT& c) noexcept(noexcept(c.begin())) -
} }
/// ///
/// \brief C++ Iterator Specification `begin()` /// \brief C++ Iterator Specification \f$begin()\f$
/// \tparam T the element type /// \tparam T the element type
/// \tparam N the bounds of the array /// \tparam N the bounds of the array
/// \param arr a bounded array to iterate on /// \param arr a bounded array to iterate on
@@ -69,7 +69,7 @@ inline constexpr T* begin(T (&arr)[N]) noexcept {
/// ///
/// \brief C++ Iterator Specification `end()` /// \brief C++ Iterator Specification \f$end()\f$
/// \tparam ContainerT the container type /// \tparam ContainerT the container type
/// \param c the container to iterate on /// \param c the container to iterate on
/// \returns an iterator at the end of the container /// \returns an iterator at the end of the container
@@ -79,7 +79,7 @@ inline constexpr auto end(ContainerT& c) noexcept(noexcept(c.end())) -> decltype
} }
/// ///
/// \brief C++ Iterator Specification `end()` /// \brief C++ Iterator Specification \f$end()\f$
/// \tparam ContainerT the container type /// \tparam ContainerT the container type
/// \param c the container to iterate on /// \param c the container to iterate on
/// \returns an iterator at the end of the container /// \returns an iterator at the end of the container
@@ -89,7 +89,7 @@ inline constexpr auto end(const ContainerT& c) noexcept(noexcept(c.end())) -> de
} }
/// ///
/// \brief C++ Iterator Specification `end()` /// \brief C++ Iterator Specification \f$end()\f$
/// \tparam T the element type /// \tparam T the element type
/// \tparam N the bounds of the array /// \tparam N the bounds of the array
/// \param arr a bounded array to iterate on /// \param arr a bounded array to iterate on

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file type_sequences.h /// \file fennec/lang/type_sequences.h
/// \brief \ref fennec_lang_type_sequences /// \brief \ref fennec_lang_type_sequences
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// --------------------------------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------------------------------
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// --------------------------------------------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------------------------------------------
/// ///
/// \file type_traits.h /// \file fennec/lang/type_traits.h
/// \brief \ref fennec_lang_type_traits /// \brief \ref fennec_lang_type_traits
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General License as published by // it under the terms of the GNU General License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file type_transforms.h /// \file fennec/lang/type_transforms.h
/// \brief \ref fennec_lang_type_transforms /// \brief \ref fennec_lang_type_transforms
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///
@@ -44,8 +44,22 @@
/// ///
/// \code #include <fennec/lang/type_transforms.h> \endcode /// \code #include <fennec/lang/type_transforms.h> \endcode
/// ///
/// \section fennec_lang_type_transforms_section_decay_conversions Decay Conversions
/// ///
/// <table width="100%" class="fieldtable" id="table_fennec_lang_type_transforms"> /// <table width="100%" class="fieldtable" id="fennec_lang_type_transforms_decay_conversions">
/// <tr><th style="vertical-align: top">Syntax
/// <th style="vertical-align: top">Description
/// <tr><td width="50%" style="vertical-align: top"> <br>
/// \ref fennec::decay "decay<TypeT>::type"<br>
/// \ref fennec::decay_t "decay_t<TypeT>"
/// <td width="50%" style="vertical-align: top">
/// \copydetails fennec::decay
///
/// </table>
///
/// \section fennec_lang_type_transforms_section_pointer_conversions Pointer Conversions
///
/// <table width="100%" class="fieldtable" id="fennec_lang_type_transforms_pointer_conversions">
/// <tr><th style="vertical-align: top">Syntax /// <tr><th style="vertical-align: top">Syntax
/// <th style="vertical-align: top">Description /// <th style="vertical-align: top">Description
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
@@ -61,17 +75,49 @@
/// \copydetails fennec::remove_pointer /// \copydetails fennec::remove_pointer
/// ///
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
/// \ref fennec::strip_pointers "strip_pointers<TypeT>::type"<br>
/// \ref fennec::strip_pointers_t "strip_pointers<TypeT>"
/// <td width="50%" style="vertical-align: top">
/// \copydetails fennec::strip_pointers
///
/// </table>
///
/// \section fennec_lang_type_transforms_section_reference_conversions Reference Conversions
///
/// <table width="100%" class="fieldtable" id="fennec_lang_type_transforms_reference_conversions">
/// <tr><th style="vertical-align: top">Syntax
/// <th style="vertical-align: top">Description
/// <tr><td width="50%" style="vertical-align: top"> <br>
/// \ref fennec::add_reference "add_reference<TypeT>::type"<br> /// \ref fennec::add_reference "add_reference<TypeT>::type"<br>
/// \ref fennec::add_reference_t "add_reference_t<TypeT>" /// \ref fennec::add_reference_t "add_reference_t<TypeT>"
/// <td width="50%" style="vertical-align: top"> /// <td width="50%" style="vertical-align: top">
/// \copydetails fennec::add_reference /// \copydetails fennec::add_reference
/// ///
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
/// \ref fennec::add_lvalue_reference "add_lvalue_reference<TypeT>::type"<br>
/// \ref fennec::add_lvalue_reference_t "add_lvalue_reference_t<TypeT>"
/// <td width="50%" style="vertical-align: top">
/// \copydetails fennec::add_lvalue_reference
///
/// <tr><td width="50%" style="vertical-align: top"> <br>
/// \ref fennec::add_rvalue_reference "add_rvalue_reference<TypeT>::type"<br>
/// \ref fennec::add_rvalue_reference_t "add_rvalue_reference_t<TypeT>"
/// <td width="50%" style="vertical-align: top">
/// \copydetails fennec::add_rvalue_reference
///
/// <tr><td width="50%" style="vertical-align: top"> <br>
/// \ref fennec::remove_reference "remove_reference<TypeT>::type"<br> /// \ref fennec::remove_reference "remove_reference<TypeT>::type"<br>
/// \ref fennec::remove_reference_t "remove_reference_t<TypeT>" /// \ref fennec::remove_reference_t "remove_reference_t<TypeT>"
/// <td width="50%" style="vertical-align: top"> /// <td width="50%" style="vertical-align: top">
/// \copydetails fennec::remove_reference /// \copydetails fennec::remove_reference
/// ///
/// </table>
///
/// \section fennec_lang_type_transforms_section_cv_conversions Const — Volatile Conversions
///
/// <table width="100%" class="fieldtable" id="fennec_lang_type_transforms_cv_conversions">
/// <tr><th style="vertical-align: top">Syntax
/// <th style="vertical-align: top">Description
/// <tr><td width="50%" style="vertical-align: top"> <br> /// <tr><td width="50%" style="vertical-align: top"> <br>
/// \ref fennec::add_const "add_const<TypeT>::type"<br> /// \ref fennec::add_const "add_const<TypeT>::type"<br>
/// \ref fennec::add_const_t "add_const_t<TypeT>" /// \ref fennec::add_const_t "add_const_t<TypeT>"
@@ -120,6 +166,12 @@
/// <td width="50%" style="vertical-align: top"> /// <td width="50%" style="vertical-align: top">
/// \copydetails fennec::remove_cvref /// \copydetails fennec::remove_cvref
/// ///
/// <tr><td width="50%" style="vertical-align: top"> <br>
/// \ref fennec::remove_cvrefptr "remove_cvrefptr<TypeT>::type"<br>
/// \ref fennec::remove_cvrefptr_t "remove_cvrefptr_t<TypeT>"
/// <td width="50%" style="vertical-align: top">
/// \copydetails fennec::remove_cvrefptr
///
/// </table> /// </table>
/// ///
@@ -142,9 +194,9 @@ template<typename T> using decay_t = typename decay<T>::type;
// Pointer Conversions ================================================================================================= // Pointer Conversions =================================================================================================
/// ///
/// \brief adds a pointer level to \p T /// \brief adds a pointer level to \f$T\f$
/// ///
/// \details adds a pointer to the provided type such that \f$T\f$ becomes `T*` /// \details adds a pointer to the provided type such that \f$T\f$ becomes \f$T*\f$
/// \tparam T Resultant Type /// \tparam T Resultant Type
template<typename T> struct add_pointer : detail::_add_pointer<T>{}; template<typename T> struct add_pointer : detail::_add_pointer<T>{};
@@ -154,9 +206,9 @@ template<typename T> using add_pointer_t = typename add_pointer<T>::type;
/// ///
/// \brief removes a pointer level from \p T /// \brief removes a pointer level from \f$T\f$
/// ///
/// \details removes a pointer from the provided type such that `T*` becomes \f$T\f$ /// \details removes a pointer from the provided type such that \f$T*\f$ becomes \f$T\f$
/// \tparam T Resultant Type /// \tparam T Resultant Type
template<typename T> struct remove_pointer : detail::_remove_pointer<T> {}; template<typename T> struct remove_pointer : detail::_remove_pointer<T> {};
@@ -166,9 +218,9 @@ template<typename T> using remove_pointer_t = typename remove_pointer<T>::type;
/// ///
/// \brief removes all pointer levels from \p T /// \brief removes all pointer levels from \f$T\f$
/// ///
/// \details removes all pointers from the provided type such that `T*`, `T**`, etc. becomes \f$T\f$ /// \details removes all pointers from the provided type such that \f$T*\f$, \f$T**\f$, etc. becomes \f$T\f$
/// \tparam T Resultant Type /// \tparam T Resultant Type
template<typename T> struct strip_pointers : conditional_t< template<typename T> struct strip_pointers : conditional_t<
detail::_is_pointer<T>::value, detail::_is_pointer<T>::value,
@@ -185,155 +237,155 @@ template<typename T> using strip_pointers_t = strip_pointers<T>::type;
// Reference Conversions =============================================================================================== // Reference Conversions ===============================================================================================
/// ///
/// \brief add a reference to \p T /// \brief add a reference to \f$T\f$
/// ///
/// \details adds a pointer to the provided type such that \f$T\f$ becomes `T&` /// \details adds a pointer to the provided type such that \f$T\f$ becomes \f$T\&\f$
/// \tparam T Resultant Type /// \tparam T Resultant Type
template<typename T> struct add_reference : type_identity<T&> {}; template<typename T> struct add_reference : type_identity<T&> {};
/// ///
/// \brief shorthand for `typename add_reference<T>::type` /// \brief shorthand for `typename fennec::add_reference<T>::type`
template<typename T> using add_reference_t = typename add_reference<T>::type; template<typename T> using add_reference_t = typename add_reference<T>::type;
/// ///
/// \brief remove a reference from \p T /// \brief add a lvalue reference to \f$T\f$
/// ///
/// \details removes references from the provided type such that `T&` and `T&&` become \f$T\f$ /// \details adds a lvalue reference to the provided type such that \f$T\f$ becomes \f$T\&\f$
/// \tparam T Reference Type
template<typename T> struct remove_reference : type_identity<T> {};
// specialization for `T&`
template<typename T> struct remove_reference<T&> : type_identity<T> {};
// specialization for `T&&`
template<typename T> struct remove_reference<T&&> : type_identity<T> {};
///
/// \brief shorthand for `typename remove_reference<T>::type`
template<typename T> using remove_reference_t = typename remove_reference<T>::type;
///
/// \brief add a lvalue reference to \p T
///
/// \details adds a lvalue reference to the provided type such that 'T' becomes 'T&'
/// \tparam T Reference Type /// \tparam T Reference Type
template<typename T> struct add_lvalue_reference : detail::_add_lvalue_reference<T> {}; template<typename T> struct add_lvalue_reference : detail::_add_lvalue_reference<T> {};
/// ///
/// \brief shorthand for `typename remove_reference<T>::type` /// \brief shorthand for `typename fennec::add_lvalue_reference<T>::type`
template<typename T> using add_lvalue_reference_t = typename add_lvalue_reference<T>::type; template<typename T> using add_lvalue_reference_t = typename add_lvalue_reference<T>::type;
/// ///
/// \brief add a rvalue reference to \p T /// \brief add a rvalue reference to \f$T\f$
/// ///
/// \details adds a rvalue reference to the provided type such that 'T' becomes 'T&&' /// \details adds a rvalue reference to the provided type such that \f$T\f$ becomes \f$T\&\&\f$
/// \tparam T Reference Type /// \tparam T Reference Type
template<typename T> struct add_rvalue_reference : detail::_add_rvalue_reference<T> {}; template<typename T> struct add_rvalue_reference : detail::_add_rvalue_reference<T> {};
/// ///
/// \brief shorthand for `typename remove_reference<T>::type` /// \brief shorthand for `typename fennec::add_rvalue_reference<T>::type`
template<typename T> using add_rvalue_reference_t = typename add_rvalue_reference<T>::type; template<typename T> using add_rvalue_reference_t = typename add_rvalue_reference<T>::type;
///
/// \brief remove a reference from \f$T\f$
///
/// \details removes references from the provided type such that \f$T\&\f$ and \f$T\&\&\f$ become \f$T\f$
/// \tparam T Reference Type
template<typename T> struct remove_reference : type_identity<T> {};
// specialization for T&
template<typename T> struct remove_reference<T&> : type_identity<T> {};
// specialization for T&&
template<typename T> struct remove_reference<T&&> : type_identity<T> {};
///
/// \brief shorthand for `typename fennec::remove_reference<T>::type`
template<typename T> using remove_reference_t = typename remove_reference<T>::type;
// Const & Volatile Conversions ======================================================================================== // Const & Volatile Conversions ========================================================================================
/// ///
/// \brief add the const qualifier to the provided type \p T /// \brief add the const qualifier to the provided type \f$T\f$
/// ///
/// \details adds const qualification to the provided type such that \f$T\f$ becomes `const T` /// \details adds const qualification to the provided type such that \f$T\f$ becomes \f$const\quad T\f$
/// \tparam T Reference Type /// \tparam T Reference Type
template<typename T> struct add_const : detail::_add_const<T> {}; template<typename T> struct add_const : detail::_add_const<T> {};
/// ///
/// \brief shorthand for `typename add_const<T>::type` /// \brief shorthand for `typename fennec::add_const<T>::type`
template<typename T> using add_const_t = typename add_const<T>::type; template<typename T> using add_const_t = typename add_const<T>::type;
/// ///
/// \brief remove the const qualifier from the provided type \p T /// \brief remove the const qualifier from the provided type \f$T\f$
/// ///
/// \details removes const qualification from the provided type such that `const T` becomes \f$T\f$ /// \details removes const qualification from the provided type such that \f$const\quad T\f$ becomes \f$T\f$
/// \tparam T Reference Type /// \tparam T Reference Type
template<typename T> struct remove_const : detail::_remove_const<T> {}; template<typename T> struct remove_const : detail::_remove_const<T> {};
/// ///
/// \brief shorthand for `typename remove_const<T>::type` /// \brief shorthand for `typename fennec::remove_const<T>::type`
template<typename T> using remove_const_t = typename remove_const<T>::type; template<typename T> using remove_const_t = typename remove_const<T>::type;
/// ///
/// \brief add the volatile qualifier to the provided type \p T /// \brief add the volatile qualifier to the provided type \f$T\f$
/// ///
/// \details removes references from the provided type such that \f$T\f$ becomes `volatile T` /// \details removes references from the provided type such that \f$T\f$ becomes \f$volatile\quad T\f$
/// \tparam T Reference Type /// \tparam T Reference Type
template<typename T> struct add_volatile : detail::_add_volatile<T> {}; template<typename T> struct add_volatile : detail::_add_volatile<T> {};
/// ///
/// \brief shorthand for `typename add_volatile<T>::type` /// \brief shorthand for `typename fennec::add_volatile<T>::type`
template<typename T> using add_volatile_t = typename add_volatile<T>::type; template<typename T> using add_volatile_t = typename add_volatile<T>::type;
/// ///
/// \brief remove the volatile qualifier from the provided type \p T /// \brief remove the volatile qualifier from the provided type \f$T\f$
/// ///
/// \details removes references from the provided type such that `volatile T` becomes \f$T\f$ /// \details removes references from the provided type such that \f$volatile\quad T\f$ becomes \f$T\f$
/// \tparam T Reference Type /// \tparam T Reference Type
template<typename T> struct remove_volatile : detail::_remove_volatile<T> {}; template<typename T> struct remove_volatile : detail::_remove_volatile<T> {};
/// ///
/// \brief shorthand for `typename remove_volatile<T>::type` /// \brief shorthand for `typename fennec::remove_volatile<T>::type`
template<typename T> using remove_volatile_t = typename remove_volatile<T>::type; template<typename T> using remove_volatile_t = typename remove_volatile<T>::type;
/// ///
/// \brief remove the volatile qualifier from the provided type \p T /// \brief remove the volatile qualifier from the provided type \f$T\f$
/// ///
/// \details removes references from the provided type such that \f$T\f$, `const T`, and `volatile T` become /// \details removes references from the provided type such that \f$T\f$, \f$const\quad T\f$, and \f$volatile\quad T\f$
/// `const volatile T` /// become \f$const volatile T\f$
/// \tparam T Reference Type /// \tparam T Reference Type
template<typename T> struct add_cv : detail::_add_cv<T> {}; template<typename T> struct add_cv : detail::_add_cv<T> {};
/// ///
/// \brief shorthand for `typename add_cv<T>::type` /// \brief shorthand for `typename fennec::add_cv<T>::type`
template<typename T> using add_cv_t = typename add_cv<T>::type; template<typename T> using add_cv_t = typename add_cv<T>::type;
/// ///
/// \brief remove the const and volatile qualifiers from the provided type \p T /// \brief remove the const and volatile qualifiers from the provided type \f$T\f$
/// ///
/// \details removes const and volatile from the provided type such that `const T`, `volatile T`, and /// \details removes const and volatile from the provided type such that \f$const\quad T\f$, \f$volatile\quad T\f$, and
/// `const volatile T` become \f$T\f$ /// \f$const\quad volatile\quad T\f$ become \f$T\f$
/// \tparam T Reference Type /// \tparam T Reference Type
template<typename T> struct remove_cv : detail::_remove_cv<T> {}; template<typename T> struct remove_cv : detail::_remove_cv<T> {};
/// ///
/// \brief shorthand for `typename remove_cv<T>::type` /// \brief shorthand for `typename fennec::remove_cv<T>::type`
template<typename T> using remove_cv_t = typename remove_cv<T>::type; template<typename T> using remove_cv_t = typename remove_cv<T>::type;
/// ///
/// \brief add a reference and the const volatile qualifiers from the provided type \p T /// \brief add a reference and the const volatile qualifiers from the provided type \f$T\f$
/// ///
/// \details adds references and const volatile qualifiers to the provided type. /// \details adds references and const volatile qualifiers to the provided type.
/// \tparam T Reference Type /// \tparam T Reference Type
template<typename T> struct add_cvref : type_identity<add_reference_t<add_cv_t<T>>> {}; template<typename T> struct add_cvref : type_identity<add_reference_t<add_cv_t<T>>> {};
/// ///
/// \brief shorthand for `typename add_cvr<T>::type` /// \brief shorthand for `typename fennec::add_cvr<T>::type`
template<typename T> using add_cvref_t = typename add_cvref<T>::type; template<typename T> using add_cvref_t = typename add_cvref<T>::type;
/// ///
/// \brief removes references as well as the const and volatile qualifiers from the provided type \p T /// \brief removes references as well as the const and volatile qualifiers from the provided type \f$T\f$
/// ///
/// \details removes const and volatile from the provided type such that /// \details removes const and volatile from the provided type such that
/// \tparam T Reference Type /// \tparam T Reference Type
@@ -341,13 +393,13 @@ template<typename T> struct remove_cvref : type_identity<remove_cv_t<remove_refe
/// ///
/// \brief shorthand for `typename remove_cvr<T>::type` /// \brief shorthand for `typename fennec::remove_cvr<T>::type`
template<typename T> using remove_cvref_t = typename remove_cvref<T>::type; template<typename T> using remove_cvref_t = typename remove_cvref<T>::type;
/// ///
/// \brief removes references and pointers as well as the const and volatile qualifiers from the provided type \p T /// \brief removes references and pointers as well as the const and volatile qualifiers from the provided type \f$T\f$
/// ///
/// \details removes const and volatile from the provided type such that /// \details removes const and volatile from the provided type such that
/// \tparam T Reference Type /// \tparam T Reference Type
@@ -355,7 +407,7 @@ template<typename T> struct remove_cvrefptr : type_identity<remove_cv_t<remove_r
/// ///
/// \brief shorthand for `typename remove_cvrp_t<T>::type` /// \brief shorthand for `typename fennec::remove_cvrp_t<T>::type`
template<typename T> using remove_cvrefptr_t = typename remove_cvrefptr<T>::type; template<typename T> using remove_cvrefptr_t = typename remove_cvrefptr<T>::type;
} }

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file types.h /// \file fennec/lang/types.h
/// \brief \ref fennec_lang_types /// \brief \ref fennec_lang_types
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file utility.h /// \file fennec/lang/utility.h
/// \brief \ref fennec_lang_utility /// \brief \ref fennec_lang_utility
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file common.h /// \file fennec/math/common.h
/// \brief \ref fennec_math_common /// \brief \ref fennec_math_common
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
// ===================================================================================================================== // =====================================================================================================================
// fennec, a free and open source game engine // fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower // Copyright © 2025 - 2026 Medusa Slockbower
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@@ -17,14 +17,14 @@
// ===================================================================================================================== // =====================================================================================================================
/// ///
/// \file exponential.h /// \file fennec/math/exponential.h
/// \brief \ref fennec_math_exponential /// \brief \ref fennec_math_exponential
/// ///
/// ///
/// \details /// \details
/// \author Medusa Slockbower /// \author Medusa Slockbower
/// ///
/// \copyright Copyright © 2025 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)) /// \copyright Copyright © 2025 - 2026 Medusa Slockbower ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html))
/// ///
/// ///

Some files were not shown because too many files have changed in this diff Show More