- 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
# Copyright © 2025 Medusa Slockbower
# Copyright © 2025 - 2026 Medusa Slockbower
#
# 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
@@ -91,6 +91,7 @@ fennec_add_sources(
include/fennec/core/system.h
# SCENE ================================================================================================================
include/fennec/scene/scene.h source/scene/scene.cpp
include/fennec/scene/component.h
@@ -100,6 +101,7 @@ fennec_add_sources(
# RENDERERS ============================================================================================================
include/fennec/renderers/interface/forward.h
@@ -107,6 +109,7 @@ fennec_add_sources(
include/fennec/renderers/interface/gfxsurface.h
# CONTAINERS ===========================================================================================================
include/fennec/containers/containers.h
@@ -135,6 +138,7 @@ fennec_add_sources(
include/fennec/containers/detail/_tuple.h
# lang =================================================================================================================
include/fennec/lang/lang.h
include/fennec/lang/metaprogramming.h
@@ -191,6 +195,7 @@ fennec_add_sources(
include/fennec/rtti/detail/_type_name.h
# MEMORY ===============================================================================================================
include/fennec/memory/new.h source/memory/new.cpp
@@ -203,10 +208,13 @@ fennec_add_sources(
include/fennec/memory/detail/_ptr_traits.h
# DEBUG ================================================================================================================
source/debug/assert_impl.cpp
# MATH =================================================================================================================
include/fennec/math/math.h
@@ -287,14 +295,16 @@ fennec_add_sources(
include/fennec/interpret/tokenizer.h
# PLATFORM =============================================================================================================
# PLATFORM =============================================================================================================
include/fennec/platform/interface/fwd.h
include/fennec/platform/interface/display_server.h
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/window_manager.h source/platform/window_manager.cpp
# GRAPHICS =============================================================================================================
)
@@ -304,7 +314,6 @@ add_subdirectory(test)
add_library(fennec STATIC
${FENNEC_SOURCES}
)
add_dependencies(fennec metaprogramming fennec-dependencies)
@@ -353,7 +362,7 @@ if(DOXYGEN_FOUND)
# Target for building docs
add_custom_target(fennecdocs ALL
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
${DOXY_OUTPUT_DIR}/logo/raster.png
COMMENT "Generating Doxygen Documentation"

View File

@@ -133,19 +133,19 @@ is also a viable IDE but involves some extra setup.
<a id="dependencies"></a>
### Dependencies
| Dependency | Notes |
|-----------------------------------|----------------------------------------------------------------------------------------------------------|
| 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 |
| 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 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. |
| Graphviz <sup>[__*__](#opt)</sup> | Graphviz is a required dependency for Doxygen |
| Dependency | Notes |
|------------------------------|----------------------------------------------------------------------------------------------------------|
| 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 |
| 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 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. |
| Graphviz<sup>[*](#opt)</sup> | Graphviz is a required dependency for Doxygen |
<a id="opt"></a>
<sup>[__*__](#opt)</sup> Optional Dependency
<sup>[*](#opt)</sup> Optional Dependency
<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.
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
Install git dependencies with the following command:

View File

@@ -1,6 +1,6 @@
## =====================================================================================================================
## 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
## 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
# Copyright © 2025 Medusa Slockbower
# Copyright © 2025 - 2026 Medusa Slockbower
#
# 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

View File

@@ -1,6 +1,6 @@
# ======================================================================================================================
# 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
# 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
# Copyright © 2025 Medusa Slockbower
# Copyright © 2025 - 2026 Medusa Slockbower
#
# 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

View File

@@ -1,6 +1,6 @@
# ======================================================================================================================
# 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
# 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
# Copyright © 2025 Medusa Slockbower
# Copyright © 2025 - 2026 Medusa Slockbower
#
# 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

View File

@@ -1,6 +1,6 @@
# ======================================================================================================================
# 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
# 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
# Copyright © 2025 Medusa Slockbower
# Copyright © 2025 - 2026 Medusa Slockbower
#
# 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

View File

@@ -1,6 +1,6 @@
# ======================================================================================================================
# 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
# 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
# Copyright © 2025 Medusa Slockbower
# Copyright © 2025 - 2026 Medusa Slockbower
#
# 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

View File

@@ -1,6 +1,6 @@
# ======================================================================================================================
# 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
# 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
# Copyright © 2025 Medusa Slockbower
# Copyright © 2025 - 2026 Medusa Slockbower
#
# 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

View File

@@ -1,6 +1,6 @@
# ======================================================================================================================
# 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
# 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
# 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"
# 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" \
"@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
# directories that are symbolic links (a Unix file system feature) are excluded
@@ -2403,7 +2404,7 @@ MACRO_EXPANSION = YES
# The default value is: NO.
# 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
# INCLUDE_PATH will be searched if a #include is found.
@@ -2418,7 +2419,7 @@ SEARCH_INCLUDES = YES
# RECURSIVE has no effect here.
# 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
# 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
# Copyright © 2025 Medusa Slockbower
# Copyright © 2025 - 2026 Medusa Slockbower
#
# 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

View File

@@ -1,6 +1,6 @@
# ======================================================================================================================
# 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
# 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
# Copyright © 2025 Medusa Slockbower
# Copyright © 2025 - 2026 Medusa Slockbower
#
# 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

View File

@@ -1,6 +1,6 @@
# ======================================================================================================================
# 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
# 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
# Copyright © 2025 Medusa Slockbower
# Copyright © 2025 - 2026 Medusa Slockbower
#
# 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

View File

@@ -1,6 +1,6 @@
# ======================================================================================================================
# 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
# 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
# Copyright © 2025 Medusa Slockbower
# Copyright © 2025 - 2026 Medusa Slockbower
#
# 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
/// \returns A reference to the element at `elements[0]`
/// \returns A reference to the element at \f$elements[0]\f$
constexpr value_t& front() {
return data[0];
}
///
/// \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 {
return data[0];
}
///
/// \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() {
return data[ElemV - 1];
}
///
/// \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 {
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
constexpr value_t* begin() {
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
constexpr value_t* end() {
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
constexpr const value_t* begin() const {
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
constexpr const value_t* end() const {
return data + ElemV;

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
#define FENNEC_CONTAINERS_BINTREE_H
#include <fennec/containers/dynarray.h>
#include <fennec/containers/list.h>
#include <fennec/containers/optional.h>
#include <fennec/containers/traversal.h>
@@ -158,6 +157,9 @@ public:
// Properties ==========================================================================================================
public:
/// \name Properties
/// @{
///
/// \returns The number of elements in the tree
constexpr size_t size() const {
@@ -192,6 +194,8 @@ public:
return _root;
}
/// @}
// Navigation ==========================================================================================================
@@ -244,13 +248,13 @@ public:
///
/// \details \f$O(1)\f$
/// \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 {
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
/// \returns The id of the sibling of \f$i\f$
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
/// \returns The id of the left-most node of \f$i\f$
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
/// \returns The id of the right-most node of \f$i\f$
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
/// \param p The parent 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
/// \param p The parent 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
/// \param p The parent node
/// \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
/// \param p The parent 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
/// \param p The parent 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
/// \param p The parent node
/// \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
/// \param sub The root node for the rotation
/// \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) {
if (sub == 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
/// \param p The parent node
/// \param d The direction to insert
/// \param parent The parent node
/// \param side The side to insert on
/// \param val The object to move into the new node
/// \returns The id of the new node
constexpr size_t insert(size_t p, bool d, value_t&& val) {
return this->_insert(p, d, fennec::forward<value_t>(val));
constexpr size_t insert(size_t parent, bool side, 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
/// \param p The parent node
/// \param d The direction to insert
/// \param parent The parent node
/// \param side The side to insert on
/// \param val The object to copy to the new node
/// \returns The id of the new node
constexpr size_t insert(size_t p, bool d, const value_t& val) {
return this->_insert(p, d, val);
constexpr size_t insert(size_t parent, bool side, const value_t& 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
/// \param p The parent node
/// \param d The direction to insert
/// \param parent The parent node
/// \param side The side to insert on
/// \param args The arguments to construct the new node with
/// \returns The id of the new node
template<typename...ArgsT>
constexpr size_t emplace(size_t p, bool d, ArgsT&&...args) {
return this->_insert(p, d, fennec::forward<ArgsT>(args)...);
constexpr size_t emplace(size_t parent, bool side, ArgsT&&...args) {
return this->_insert(parent, side, fennec::forward<ArgsT>(args)...);
}
///
@@ -499,15 +497,18 @@ public:
// Traversal ===========================================================================================================
/// \name Traversal
/// @{
///
/// \brief Traverse the tree using a specified order and visiting functor
///
/// \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
///
/// \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 i The node to start at
template<typename OrderT, typename VisitorT>
@@ -743,11 +744,15 @@ public:
}
};
/// @}
// Iterator ============================================================================================================
/// \name Iteration
/// @{
///
/// \brief C++ Iterator Specification `iterator`
/// \brief C++ Iterator Specification \f$iterator\f$
/// \details Performs pre-order traversal
class iterator {
@@ -837,7 +842,7 @@ public:
///
/// \brief C++ Iterator Specification `iterator`
/// \brief C++ Iterator Specification \f$iterator\f$
/// \details Performs pre-order traversal
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
const_iterator begin() const {
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
const_iterator end() const {
return iterator(this, _root, nullid);
}
/// @}
// Fields ==============================================================================================================
private:
table_t _table;

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file containers.h
/// \file fennec/containers/containers.h
/// \brief fennec containers library main header
///
///
/// \details
/// \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
///
/// \section Data Structure Properties
/// \section fennec_containers_container_section_properties Container Properties
///
/// | Property | Meaning |
/// |:-----------:|:----------------------------------------------------------------------------------------------:|
@@ -57,7 +57,7 @@
/// | 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 |
/// |:----------------------------------------------------------------------------|:-----------:|:------:|
@@ -81,7 +81,7 @@
/// | \ref fennec::variant "fennec::variant" | 🚧 | 🚧 |
///
///
/// \section fennec_containers_fennec fennec
/// \section fennec_containers_section_fennec fennec
///
/// | Symbol | Implemented | Passed |
/// |:-------------------------|:-----------:|:------:|
@@ -90,7 +90,7 @@
/// | \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>

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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 OAlloc The other allocator type
/// \param conv The dynarray to convert
@@ -584,7 +584,7 @@ public:
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
constexpr const TypeT* begin() const { return _alloc; }
@@ -594,7 +594,7 @@ public:
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
constexpr const TypeT* end() const { return begin() + _size; }

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
///
/// \details equivalent to `reinterpret_cast`
/// \details equivalent to \f$reinterpret_cast\f$
/// \tparam T The type to cast to
/// \returns The contents of generic after having cast to \f$T\f$
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
/// \returns The contents of generic after having cast to \f$T\f$
template<typename T, typename U = remove_cvref_t<T>>

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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"
///
/// 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
/// 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 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
/// \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> res;
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
/// \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> res;
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
/// \returns A list containing all vertices \f$x\f$ that have symmetric edges with \f$vertex\f$
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
/// "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
@@ -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
void cut(size_t n) {
for (const auto it : outgoing(n)) {

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file list.h
/// \file fennec/containers/list.h
/// \brief A header containing the definition for a linked list of values
///
///
/// \details
/// \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
constexpr const_iterator begin() const {
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
constexpr const_iterator end() const {
return const_iterator(this, npos);
@@ -471,7 +471,7 @@ public:
/// @}
///
/// \brief C++ Iterator Specification `iterator`
/// \brief C++ Iterator Specification \f$iterator\f$
class iterator {
public:
///

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
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
/// \returns the hash of the key
constexpr size_t operator()(const elem_t& p) const {
@@ -109,7 +109,7 @@ public:
/// \brief key comparison helper
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 b the second pair
/// \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
constexpr iterator 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
constexpr iterator end() {
return _set.end();

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
/// \returns An integer corresponding to the id of the node
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
const_iterator begin() const {
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
const_iterator end() const {
return const_iterator(this, _size);
}
///
/// \brief C++ Iterator Specification `iterator`
/// \brief C++ Iterator Specification \f$iterator\f$
class iterator {
public:
///
@@ -340,7 +340,7 @@ public:
};
///
/// \brief C++ Iterator Specification `const_iterator`
/// \brief C++ Iterator Specification \f$const_iterator\f$
class const_iterator {
public:
///

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
{
///
/// \brief struct to represent a \f$null\f$ `optional`
/// \brief struct to represent a \f$null\f$ `fennec::optional`
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 = {};
///
/// \brief alias for representing a \f$null\f$ `optional`
/// \brief alias for representing a \f$null\f$ `fennec::optional`
#define nullopt nullopt_v
///

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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 TypeT1 The second type of the pair
template<typename TypeT0, typename 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
/// \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 {

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -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
///
///
/// \details
/// \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
///
/// \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
///
/// \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 i The node to start at
template<typename OrderT, typename VisitorT>

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
/// \returns An iterator at the value
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
constexpr const_iterator begin() const {
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
constexpr const_iterator end() const {
return sequence::const_iterator(this, _root, nullptr);
}
///
/// \brief C++ Iterator Specification `iterator`
/// \brief C++ Iterator Specification \f$iterator\f$
class iterator {
private:
sequence* _seq;
@@ -470,7 +470,7 @@ public:
};
///
/// \brief C++ Iterator Specification `iterator`
/// \brief C++ Iterator Specification \f$iterator\f$
class const_iterator {
private:
const sequence* _seq;

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
constexpr iterator begin() const {
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
constexpr iterator end() const {
return iterator(this, npos);
@@ -382,7 +382,7 @@ public:
/// @}
///
/// \brief C++ Iterator Specification `iterator`
/// \brief C++ Iterator Specification \f$iterator\f$
class iterator {
public:
///

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -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
///
///
/// \details
/// \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
/// | Property | Value |
/// |:-----------:|:-----------:|
@@ -80,7 +80,7 @@ struct variant {
// 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()
: _bytes {}
, _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$
/// \tparam T The type of the value
/// \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
/// \param args The argument values
template<typename T, typename...ArgsT>
@@ -169,7 +169,7 @@ struct variant {
template<typename 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 ...)) {
using type_t = remove_reference_t<T>;
if (_type == find_element_v<type_t, TypesT...>) {

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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_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. |
///
///
/// \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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// it under the terms of the GNU General Public License as published by
@@ -40,10 +40,8 @@ public:
/// \param event the event to handle
virtual void handle_event(event* event) = 0;
#ifndef FENNEC_DOXYGEN
FENNEC_RTTI_CLASS_ENABLE() {
}
#endif
};
///

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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$
/// <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
///
/// <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
///
/// <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
/// </table>
enum fmode_ : uint8_t

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// it under the terms of the GNU General Public License as published by
@@ -281,21 +281,21 @@ public:
// Iterator ============================================================================================================
///
/// \brief C++ Iterator Specification `begin()`
/// \brief C++ Iterator Specification \f$begin()\f$
/// \returns an iterator at the first filename in the path
iterator begin() const {
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
iterator end() const {
return iterator(this, _str.size());
}
///
/// \brief C++ Iterator Specification `iterator`
/// \brief C++ Iterator Specification \f$iterator\f$
class iterator {
public:
///

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -16,18 +16,6 @@
// 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
#define FENNEC_FORMAT_DETAIL_FORMAT_H

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file format_arg.h
/// \file fennec/format/format_arg.h
/// \brief
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file formatter.h
/// \file fennec/format/formatter.h
/// \brief
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file tokenizer.h
/// \file fennec/interpret/tokenizer.h
/// \brief
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file assert.h
/// \file fennec/lang/assert.h
/// \brief \ref fennec_lang_assert
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file bits.h
/// \file fennec/lang/bits.h
/// \brief \ref fennec_lang_bit_manipulation
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -161,7 +161,7 @@ struct inequality<T0, T1> {
// 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 T1 The second type
template<typename T0, typename T1 = T0> requires has_less_v<T0, T1>
@@ -180,7 +180,7 @@ struct less {
// 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 T1 The second type
template<typename T0, typename T1 = T0> requires has_less_equals_v<T0, T1>
@@ -199,7 +199,7 @@ struct less_equals {
// 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 T1 The second type
template<typename T0, typename T1 = T0> requires has_greater_v<T0, T1>
@@ -218,7 +218,7 @@ struct greater {
// 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 T1 The second type
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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file conditional_types.h
/// \file fennec/lang/conditional_types.h
/// \brief \ref fennec_lang_conditional_types
///
///
/// \details
/// \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
///
/// \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 TrueT type to use when \f$B == true\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>
using conditional_t
= typename conditional<B, TrueT, FalseT>::type;
@@ -103,13 +103,13 @@ struct conditional<false, T, F> : type_identity<F>{};
// 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
/// a boolean value is stored in `detect::is_detected` representing whether `DetectT<ArgsT...>` is found.
/// \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 `fennec::detect::is_detected` representing whether \f$DetectT<ArgsT...>\f$ is found.
/// \tparam DefaultT Default type
/// \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>
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>
using detect_t = typename detect<DefaultT, DetectT, ArgsT...>::type;
@@ -154,7 +154,7 @@ template<bool B, typename T = void>
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>
using enable_if_t = typename enable_if<B, T>::type;

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file declval.h
/// \file fennec/lang/declval.h
/// \brief
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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/>.
// =====================================================================================================================
///
/// \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
#define FENNEC_LANG_DETAIL_DECLVAL_H

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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/>.
// =====================================================================================================================
///
/// \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
#define FENNEC_LANG_DETAIL_FUNCTION_H

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file function.h
/// \file fennec/lang/function.h
/// \brief
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,10 +17,10 @@
// =====================================================================================================================
///
/// \file intrinsics.h
/// \file fennec/lang/intrinsics.h
/// \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
/// <th style="vertical-align: top">Description
/// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_BIT_CAST` <br>
/// `Y FENNEC_BUILTIN_BIT_CAST(X)`
/// \f$FENNEC_HAS_BUILTIN_BIT_CAST\f$ <br>
/// \f$Y FENNEC_BUILTIN_BIT_CAST(X)\f$
/// <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>
/// `FENNEC_HAS_BUILTIN_ADDRESSOF` <br>
/// `Y FENNEC_BUILTIN_ADDRESSOF(X)`
/// \f$FENNEC_HAS_BUILTIN_ADDRESSOF\f$ <br>
/// \f$Y FENNEC_BUILTIN_ADDRESSOF(X)\f$
/// <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>
/// `FENNEC_HAS_BUILTIN_IS_CONVERTIBLE` <br>
/// `B FENNEC_BUILTIN_IS_CONVERTIBLE(X, Y)`
/// \f$FENNEC_HAS_BUILTIN_IS_CONVERTIBLE\f$ <br>
/// \f$B FENNEC_BUILTIN_IS_CONVERTIBLE(X, Y)\f$
/// <td width="50%" style="vertical-align: top">
/// Checks if type \f$X\f$ can be converted to type \f$Y\f$.
///
/// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_IS_EMPTY` <br>
/// `B FENNEC_BUILTIN_IS_EMPTY(X)`
/// \f$FENNEC_HAS_BUILTIN_IS_EMPTY\f$ <br>
/// \f$B FENNEC_BUILTIN_IS_EMPTY(X)\f$
/// <td width="50%" style="vertical-align: top">
/// Checks if type \f$X\f$ stores no data.
///
/// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_IS_POLYMORPHIC` <br>
/// `B FENNEC_BUILTIN_IS_POLYMORPHIC(X)`
/// \f$FENNEC_HAS_BUILTIN_IS_POLYMORPHIC\f$ <br>
/// \f$B FENNEC_BUILTIN_IS_POLYMORPHIC(X)\f$
/// <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
///
/// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_IS_FINAL` <br>
/// `B FENNEC_BUILTIN_IS_FINAL(X)`
/// \f$FENNEC_HAS_BUILTIN_IS_FINAL\f$ <br>
/// \f$B FENNEC_BUILTIN_IS_FINAL(X)\f$
/// <td width="50%" style="vertical-align: top">
/// 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>
/// `FENNEC_HAS_BUILTIN_IS_ABSTRACT` <br>
/// `B FENNEC_BUILTIN_IS_ABSTRACT(X)`
/// \f$FENNEC_HAS_BUILTIN_IS_ABSTRACT\f$ <br>
/// \f$B FENNEC_BUILTIN_IS_ABSTRACT(X)\f$
/// <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>
/// `FENNEC_HAS_BUILTIN_IS_STANDARD_LAYOUT` <br>
/// `B FENNEC_BUILTIN_IS_STANDARD_LAYOUT(X)`
/// \f$FENNEC_HAS_BUILTIN_IS_STANDARD_LAYOUT\f$ <br>
/// \f$B FENNEC_BUILTIN_IS_STANDARD_LAYOUT(X)\f$
/// <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)
/// for this trait
///
/// <tr><td width="50%" style="vertical-align: top"> <br>
/// `FENNEC_HAS_BUILTIN_IS_CONSTRUCTIBLE` <br>
/// `B FENNEC_BUILTIN_IS_CONSTRUCTIBLE(X, ...)`
/// \f$FENNEC_HAS_BUILTIN_IS_CONSTRUCTIBLE\f$ <br>
/// \f$B FENNEC_BUILTIN_IS_CONSTRUCTIBLE(X, ...)\f$
/// <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>
///

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file limits.h
/// \file fennec/lang/limits.h
/// \brief \ref fennec_lang_limits
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file metaprogramming.h
/// \file fennec/lang/metaprogramming.h
/// \brief \ref fennec_lang
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file metasequences.h
/// \file fennec/lang/metasequences.h
/// \brief \ref fennec_lang_metasequences
///
///
/// \details
/// \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
///
/// \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
template<typename IntT, IntT...Values> requires(is_integral_v<IntT>)
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$
///
/// \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
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;
@@ -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$
///
/// \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
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;
@@ -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;
///
/// \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
= typename concat_metasequence<SequenceT0, SequenceT1>::type;

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
/// \param c the container to iterate on
/// \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
/// \param c the container to iterate on
/// \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 N the bounds of the array
/// \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
/// \param c the container to iterate on
/// \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
/// \param c the container to iterate on
/// \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 N the bounds of the array
/// \param arr a bounded array to iterate on

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file type_sequences.h
/// \file fennec/lang/type_sequences.h
/// \brief \ref fennec_lang_type_sequences
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// ---------------------------------------------------------------------------------------------------------------------
///
/// \file type_traits.h
/// \file fennec/lang/type_traits.h
/// \brief \ref fennec_lang_type_traits
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// This program is free software: you can redistribute it and/or modify
// 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
///
///
/// \details
/// \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
///
/// \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
/// <th style="vertical-align: top">Description
/// <tr><td width="50%" style="vertical-align: top"> <br>
@@ -61,17 +75,49 @@
/// \copydetails fennec::remove_pointer
///
/// <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_t "add_reference_t<TypeT>"
/// <td width="50%" style="vertical-align: top">
/// \copydetails fennec::add_reference
///
/// <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_t "remove_reference_t<TypeT>"
/// <td width="50%" style="vertical-align: top">
/// \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>
/// \ref fennec::add_const "add_const<TypeT>::type"<br>
/// \ref fennec::add_const_t "add_const_t<TypeT>"
@@ -120,6 +166,12 @@
/// <td width="50%" style="vertical-align: top">
/// \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>
///
@@ -142,9 +194,9 @@ template<typename T> using decay_t = typename decay<T>::type;
// 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
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
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
template<typename T> struct strip_pointers : conditional_t<
detail::_is_pointer<T>::value,
@@ -185,155 +237,155 @@ template<typename T> using strip_pointers_t = strip_pointers<T>::type;
// 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
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;
///
/// \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$
/// \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&'
/// \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 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;
///
/// \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
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;
///
/// \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 ========================================================================================
///
/// \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
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;
///
/// \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
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;
///
/// \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
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;
///
/// \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
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;
///
/// \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
/// `const volatile T`
/// \details removes references from the provided type such that \f$T\f$, \f$const\quad T\f$, and \f$volatile\quad T\f$
/// become \f$const volatile T\f$
/// \tparam T Reference Type
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;
///
/// \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
/// `const volatile T` become \f$T\f$
/// \details removes const and volatile from the provided type such that \f$const\quad T\f$, \f$volatile\quad T\f$, and
/// \f$const\quad volatile\quad T\f$ become \f$T\f$
/// \tparam T Reference Type
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;
///
/// \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.
/// \tparam T Reference Type
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;
///
/// \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
/// \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;
///
/// \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
/// \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;
}

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file utility.h
/// \file fennec/lang/utility.h
/// \brief \ref fennec_lang_utility
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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
@@ -17,14 +17,14 @@
// =====================================================================================================================
///
/// \file common.h
/// \file fennec/math/common.h
/// \brief \ref fennec_math_common
///
///
/// \details
/// \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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
// Copyright © 2025 Medusa Slockbower
// Copyright © 2025 - 2026 Medusa Slockbower
//
// 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

View File

@@ -1,6 +1,6 @@
// =====================================================================================================================
// 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
// 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
///
///
/// \details
/// \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