diff --git a/tools/doc/compilation_no_renderer.md.html b/tools/doc/compilation_no_renderer.md.html
index d7e0acc..955e315 100644
--- a/tools/doc/compilation_no_renderer.md.html
+++ b/tools/doc/compilation_no_renderer.md.html
@@ -12,7 +12,7 @@ If you use an ide, just add these files to your project (so the .cpp file gets c
## Manual setup
-### g++ / mingw:
+### g++ / mingw
If you are using a compiler directly, then just add `sfw.cpp` or `sfwl.cpp` to the list of files that you are compiling:
@@ -32,7 +32,7 @@ g++ -g -c main.cpp -o main.o
g++ -g sfw.o main.o -o prog
```
-### MSVC:
+### MSVC
If you are using a compiler directly, then just add `sfw.cpp` or `sfwl.cpp` to the list of files that you are compiling:
diff --git a/tools/doc/generate_all.sh b/tools/doc/generate_all.sh
new file mode 100755
index 0000000..6200da4
--- /dev/null
+++ b/tools/doc/generate_all.sh
@@ -0,0 +1,10 @@
+
+./game ../merger/out/core/sfw.h -osfw_core.md.html -tsfw_core_template.html
+./game ../merger/out/object/sfw.h -osfw_object.md.html -tsfw_object_template.html
+./game ../merger/out/render_core/sfw.h -osfw_render_core.md.html -tsfw_render_core_template.html
+./game ../merger/out/render_immediate/sfw.h -osfw_render_immediate.md.html -tsfw_render_immediate_template.html
+./game ../merger/out/render_objects/sfw.h -osfw_render_objects.md.html -tsfw_render_objects_template.html
+./game ../merger/out/full/sfw.h -osfw_full.md.html -tsfw_full_template.html
+
+./game ../merger/out/sfwl_core/sfwl.h -osfwl_core.md.html -tsfwl_core_template.html
+./game ../merger/out/sfwl_full/sfwl.h -osfwl_full.md.html -tsfwl_full_template.html
diff --git a/tools/doc/index.md.html b/tools/doc/index.md.html
deleted file mode 100644
index e091e9e..0000000
--- a/tools/doc/index.md.html
+++ /dev/null
@@ -1,147 +0,0 @@
-
- **Sample API Doc**
- 1.1 Release
-
-
-This is the markdeep generic "Company API" template. Replace
-`company-logo-512.png` with your organization's logo and adjust the
-`company-api.css` styling to match the desired colors.
-
-See `CA::OpenHandle()` for an example of an auto-generated API link.
-The rest of the information on this page is bogus placeholder to show the formatting.
-
-
-API Modules
-====================================================================================
-
-The CA library is a layer on top of the resource manager and parsing libraries that
-provides utilities for streaming processing and client-side process construction.
-
-
-Modules
-----------------------------------------------------------------------------------------
-
-The CA library contains the APIs for applications to allocate and exchange resources.
-
-
-!!! Attention Attention
- Always read all of the documentation.
-
-[CA APIs](#CA)
-: List of APIs to manage external processes.
-
-CA Buffer List APIs
-: Methods to process buffer resources separate from computation.
-
-CA Data Structures
-: Specifies the data structures used for complex cases.
-
-
-## Handles
-
-`CA::OpenHandle(const std::string&)`
-: Open a reference handle.
-
-`CA::ReadMetaData(const Handle&)`
-: Metadata about the event.
-
-`CA::CloseHandle(const Handle&)`
-: Free all handle resources, recursively.
-
-
-CA
-====================================================================================
-
-!!! Warning Warning
- The API content represents the set of APIs you can use directly. Some APIs
- are not documented and we advise you do not use them directly. Using undocumented
- APIs can lead to incompatibility when upgrading to later releases.
-
-
-These examples assume that your directory structure is:
-
-**********************************************************
-*
-* 📂 ca1
-* |
-* +-- 📄 bar.txt
-* |
-* +-- 📂 foo
-* | |
-* | â‹®
-* |
-* +-- 📂 xsource
-* | |
-* | +-- 📂 data
-* | | |
-* | | +-- 📄 manifest.json
-* | | |
-* | â‹® â‹®
-* |
-* â‹®
-**********************************************************
-[Directory structure.]
-
-
-Table
-------------------------------------------------------------------
-
-
-Screen | Factor | Used | Efficiency
-----------:|------------:|----------:|---------:
-1366x768 | 3x | 1152x672 | 74%
-1440x900 | 3x | 1152x672 | 60%
-*1600x900* | *4x* | 1536x896 | *96%*
-1680x1050 | 4x | 1536x896 | 78%
-1920x1080 | 4x | 1536x896 | 66%
-*1920x1200*| *5x* | 1920x1120 | *93%*
-[A Table]
-
-
-More Info
-------------------------------------------------------------------
-
-******************************************************************
-* ^ y
-* |
-* .---------. .----|----.
-* | | | | |
-* | *-------> x | *--------> x
-* | | | | |
-* '----|----' '---------'
-* |
-* v y
-******************************************************************
-[Figure 1: Coordinate Example]
-
-
- -----
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GLSL
-vec3 sphNormal(in vec3 pos, in vec4 sph) {
- return normalize(pos-sph.xyz);
-}
-
-vec3 camera(vec2 U, vec2 r, vec3 ro, vec3 la, float fl) {
- vec2 uv = (U - r*.5)/r.y;
- vec3 fwd = normalize(la-ro),
- rgt = normalize(vec3(fwd.z, 0., -fwd.x));
- return normalize(fwd + fl*uv.x*rgt + fl*uv.y*cross(fwd, rgt));
-}
-
-float vMap(vec3 p) {
- float hit = 0.0;
- vec2 h2 = hash22(floor(p.xz*0.25));
- if (p.z > 0.0) {
- if (p.y < -10.0 && h2.x > 0.5) hit=1.0;
- if (p.y > 10.0 && h2.y > 0.5) hit=1.0;
- }
- return hit;
-}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-[Code listing]
-
-
-
-
-
diff --git a/tools/doc/run.sh b/tools/doc/run.sh
index b018c7c..d6e30ba 100755
--- a/tools/doc/run.sh
+++ b/tools/doc/run.sh
@@ -1,5 +1,3 @@
-./game ../merger/out/full/sfw.h --remaining
+./game ../merger/out/full/sfw.h -tsfw_full_template.html --remaining
-
-./game ../merger/out/full/sfw.h -osfw_full.md.html
diff --git a/tools/doc/sfw_core_template.html b/tools/doc/sfw_core_template.html
new file mode 100644
index 0000000..238fc54
--- /dev/null
+++ b/tools/doc/sfw_core_template.html
@@ -0,0 +1,1057 @@
+
+**SFW Docs**
+
+SFW - Simple Framework - https://github.com/Relintai/sfw
+
+Simple c++ app / game framework inspired by the single file c game engines
+and libraries, especially [FWK](https://github.com/r-lyeh/FWK).
+
+**Modules**: Core
+
+COMPILE
+====================================================================================
+
+$FILE_Compilation_No_Renderer$
+
+CORE
+====================================================================================
+
+Use SFWCore::setup();
to initialize the library.
+This is necessary as some components (Like PoolVector, and StringNames.) need additional setup.
+
+Use SFWCore::cleanup();
to de-initialize the library.
+
+Also note that if you don't use classes that doens't rely on this you can get away by not calling it.
+
+
+Initialization
+------------------------------------------------------------------
+
+
+SFWCore
+
+ |||CLASS_SFWCore|||
+
+
+
+Enums
+------------------------------------------------------------------
+
+Errors
+
+
+Error
+
+|||ENUM_Error|||
+
+
+
+Other
+
+
+ClockDirection
+
+|||ENUM_ClockDirection|||
+
+
+
+
+Orientation
+
+|||ENUM_Orientation|||
+
+
+
+
+HAlign
+
+|||ENUM_HAlign|||
+
+
+
+
+VAlign
+
+|||ENUM_VAlign|||
+
+
+
+
+Margin
+
+|||ENUM_Margin|||
+
+
+
+
+Side
+
+|||ENUM_Side|||
+
+
+
+
+Corner
+
+|||ENUM_Corner|||
+
+
+
+Errors and Logging
+------------------------------------------------------------------
+
+
+Logging
+
+Use the provided macros:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define PRINT_TRACE(str)
+#define LOG_TRACE(...)
+
+#define PRINT_MSG(str)
+#define LOG_MSG(...)
+
+#define PRINT_WARN(str)
+#define LOG_WARN(...)
+
+#define PRINT_ERR(str)
+#define ERR_PRINT(str)
+#define LOG_ERR(...)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Error
+
+Uses these macros:
+
+Note that the library itself does not use exceptions, it uses these macros exclusively.
+
+Also note that you are not prevented you from using exceptions if you want to in your own code.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define ERR_FAIL_MSG(msg)
+
+#define ERR_FAIL_V(val)
+
+#define ERR_FAIL_V_MSG(val, msg)
+
+#define ERR_FAIL_INDEX(index, size)
+#define ERR_FAIL_INDEX_MSG(index, size, msg)
+
+#define ERR_FAIL_INDEX_V(index, size, val)
+#define ERR_FAIL_INDEX_V_MSG(index, size, val, msg)
+
+#define ERR_FAIL_COND(cond)
+#define ERR_FAIL_COND_MSG(cond, msg)
+
+#define ERR_FAIL_COND_V(cond, val)
+#define ERR_FAIL_COND_V_MSG(cond, val, msg)
+
+#define ERR_CONTINUE(cond)
+#define ERR_CONTINUE_MSG(cond, msg)
+
+#define ERR_CONTINUE_ACTION(cond, action)
+#define ERR_CONTINUE_ACTION_MSG(cond, action, msg)
+
+#define CRASH_INDEX(index, size)
+#define CRASH_BAD_INDEX(index, size)
+#define CRASH_BAD_UNSIGNED_INDEX(index, size)
+
+#define CRASH_COND(cond)
+#define CRASH_COND_MSG(cond, msg)
+
+#define CRASH_MSG(msg)
+#define CRASH_NOW(msg)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Asserts
+
+Use the provided macros:
+
+These should be 'free' checks for program flow and should not be needed in any releases, only used when the DEV_ENABLED define is set.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define DEV_CHECK(m_cond)
+#define DEV_CHECK_ONCE(m_cond)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+Math
+------------------------------------------------------------------
+
+
+Math
+
+|||CLASS_Math|||
+
+
+
+
+Vector2
+
+ |||STRUCT_Vector2|||
+
+
+
+
+Vector2i
+
+ |||STRUCT_Vector2i|||
+
+
+
+
+Vector3
+
+ |||STRUCT_Vector3|||
+
+
+
+
+Vector3i
+
+ |||STRUCT_Vector3i|||
+
+
+
+
+Vector4
+
+ |||STRUCT_Vector4|||
+
+
+
+
+Vector4i
+
+ |||STRUCT_Vector4i|||
+
+
+
+
+Color
+
+ |||STRUCT_Color|||
+
+
+
+
+Rect2
+
+ |||STRUCT_Rect2|||
+
+
+
+
+Rect2i
+
+ |||STRUCT_Rect2i|||
+
+
+
+
+Plane
+
+ |||STRUCT_Plane|||
+
+
+
+
+AABB
+
+ |||STRUCT_AABB|||
+
+
+
+
+Face3
+
+ |||STRUCT_Face3|||
+
+
+
+
+Transform2D
+
+ |||STRUCT_Transform2D|||
+
+
+
+
+Quaternion
+
+ |||STRUCT_Quaternion|||
+
+
+
+
+Basis
+
+ |||STRUCT_Basis|||
+
+
+
+
+Transform
+
+ |||STRUCT_Transform|||
+
+
+
+
+Projection
+
+ |||STRUCT_Projection|||
+
+
+
+
+RandomPCG
+
+ |||CLASS_RandomPCG|||
+
+
+
+String
+------------------------------------------------------------------
+
+Helper Structs
+
+
+CharRange
+
+ |||STRUCT_CharRange|||
+
+
+
+
+StrRange
+
+ |||STRUCT_StrRange|||
+
+
+
+
+NoCaseComparator
+
+ |||STRUCT_NoCaseComparator|||
+
+
+
+
+NaturalNoCaseComparator
+
+ |||STRUCT_NaturalNoCaseComparator|||
+
+
+
+Character Strings
+
+
+StaticCString
+
+ You can statically store a C string with this.
+
+ |||STRUCT_StaticCString|||
+
+
+
+
+Char16String
+
+ 16 bit (wide char) char string.
+
+ |||CLASS_Char16String|||
+
+
+
+
+CharString
+
+ 8 bit char string.
+
+ |||CLASS_CharString|||
+
+
+
+
+CharProxy
+
+ Properly stores a reference to an element in a String.
+
+ |||CLASS_CharProxy|||
+
+
+
+Main
+
+
+String
+
+ Main String class. This is what you normally use. Stores characters as 32 bit variables. It's COW (Copy on Write).
+
+ If you want to convert this to a char* use it's utf8() method.
+
+ |||CLASS_String|||
+
+
+
+
+StringName
+
+ A String that is optimized for comparisons using ==.
+
+ |||CLASS_StringName|||
+
+
+
+Containers
+------------------------------------------------------------------
+
+Helper Structs
+
+
+Pair
+
+ |||STRUCT_Pair|||
+
+
+
+
+KeyValue
+
+ |||STRUCT_KeyValue|||
+
+
+
+
+Comparator
+
+ |||STRUCT_Comparator|||
+
+
+
+Helper Classes
+
+
+CowData
+
+ A helper class that implements COW (Copy-on-Write) functionality.
+
+ |||CLASS_CowData|||
+
+
+
+
+VectorWriteProxy
+
+ |||CLASS_VectorWriteProxy|||
+
+
+
+Lists
+
+
+List
+
+ |||CLASS_List|||
+
+
+
+Vectors
+
+
+Vector
+
+ Vector with COW support.
+
+ |||CLASS_Vector|||
+
+
+
+
+PoolVector
+
+ Vector that does not fragment memory.
+
+ |||CLASS_PoolVector|||
+
+
+
+
+LocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ This is the most similar to std::vector.
+
+ |||CLASS_LocalVector|||
+
+
+
+
+LocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ |||CLASS_LocalVectori|||
+
+
+
+
+TightLocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVector|||
+
+
+
+
+TightLocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVectori|||
+
+
+
+Sets
+
+
+RBSet
+
+ |||CLASS_RBSet|||
+
+
+
+
+VSet
+
+ |||CLASS_VSet|||
+
+
+
+
+HashSet
+
+ |||CLASS_HashSet|||
+
+
+
+Maps
+
+
+RBMap
+
+ |||CLASS_RBMap|||
+
+
+
+
+VMap
+
+ |||CLASS_VMap|||
+
+
+
+HashMaps
+
+
+OGHashMap
+
+ Simple HashMap implementation.
+
+ |||CLASS_OGHashMap|||
+
+
+
+
+HashMap
+
+ HashMap implementation that uses open addressing with Robin Hood hashing.
+
+ Use this by default.
+
+ |||CLASS_HashMap|||
+
+
+
+
+OrderedHashMap
+
+ HashMap implementation that keeps the order of it's elements.
+
+ |||CLASS_OrderedHashMap|||
+
+
+
+Special
+
+
+SortArray
+
+ |||CLASS_SortArray|||
+
+
+
+
+RingBuffer
+
+ |||CLASS_RingBuffer|||
+
+
+
+
+Files
+------------------------------------------------------------------
+
+
+FileAccess
+
+ |||CLASS_FileAccess|||
+
+
+
+
+FileAccessRef
+
+ |||STRUCT_FileAccessRef|||
+
+
+
+
+DirAccess
+
+ |||CLASS_DirAccess|||
+
+
+
+
+DirAccessRef
+
+ |||STRUCT_DirAccessRef|||
+
+
+
+Time
+------------------------------------------------------------------
+
+
+SFWTime
+
+ |||CLASS_SFWTime|||
+
+
+
+Threading
+------------------------------------------------------------------
+
+Thread
+
+
+Thread
+
+ |||CLASS_Thread|||
+
+
+
+Atomics
+
+
+SafeNumeric
+
+ |||CLASS_SafeNumeric|||
+
+
+
+
+SafeFlag
+
+ |||CLASS_SafeFlag|||
+
+
+
+
+SafeRefCount
+
+ |||CLASS_SafeRefCount|||
+
+
+
+Mutex
+
+
+Mutex
+
+ Typedefined to Mutex.
+
+ |||CLASS_MutexImpl|||
+
+
+
+
+MutexLock
+
+ Helper class to lock and automatically release it on leaving scope.
+
+ |||CLASS_MutexLock|||
+
+
+
+RWLock
+
+
+RWLock
+
+ |||CLASS_RWLock|||
+
+
+
+
+RWLockRead
+
+ |||CLASS_RWLockRead|||
+
+
+
+
+RWLockWrite
+
+ |||CLASS_RWLockWrite|||
+
+
+
+SpinLock
+
+
+SpinLock
+
+ |||CLASS_SpinLock|||
+
+
+
+Networking
+------------------------------------------------------------------
+
+Socket
+
+
+InetAddress
+
+ |||CLASS_InetAddress|||
+
+
+
+
+Socket
+
+ |||CLASS_Socket|||
+
+
+
+Processes
+------------------------------------------------------------------
+
+
+SubProcess
+
+ |||CLASS_SubProcess|||
+
+
+
+
+SubProcessRef
+
+ |||STRUCT_SubProcessRef|||
+
+
+
+Memory
+------------------------------------------------------------------
+
+
+MemoryPool
+
+ |||STRUCT_MemoryPool|||
+
+
+
+
+PagedAllocator
+
+ |||CLASS_PagedAllocator|||
+
+
+
+
+PoolAllocator
+
+ |||CLASS_PoolAllocator|||
+
+
+
+ADVANCED
+====================================================================================
+
+There are a few remaining classes that were omitted from this document (Like allocators, hashers etc.),
+as you will normally won't need them. (If you do, you will likely just need to rread the source anyway.)
+
+LICENSES
+====================================================================================
+
+SFW
+
+
+SFW
+
+ MIT
+
+ Copyright (c) 2023-present Péter Magyar.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+
+
+GENERAL
+
+
+Pandemonium Engine
+
+ MIT
+
+ https://github.com/Relintai/pandemonium_engine
+
+
+ Copyright (c) 2022-present Péter Magyar.
+
+ Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
+
+ Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+
+FWK
+
+ https://github.com/r-lyeh/FWK
+
+ Unlicense
+
+ This software is released into the [public domain](https://unlicense.org/).
+
+ Also dual-licensed as [0-BSD](https://opensource.org/licenses/0BSD) or [MIT (No Attribution)](https://github.com/aws/mit-0)
+ for those countries where public domain is a concern (sigh).
+
+ Any contribution to this repository is implicitly subjected to the same release conditions aforementioned.
+
+
+
+CORE
+
+
+Trantor
+
+ Trantor
+
+ inet_address.h, .cpp, socket.h and .cpp originates from trantor (they were heavily modified):
+
+ Trantor - A non-blocking I/O based TCP network library, using C++14/17,
+ Copyright (c) 2016-2021, Tao An. All rights reserved.
+
+ https://github.com/an-tao/trantor
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Tao An nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ Muduo - A reactor-based C++ network library for Linux
+ Copyright (c) 2010, Shuo Chen. All rights reserved.
+
+ http://code.google.com/p/muduo/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Shuo Chen nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+PCG
+
+ pcg.h License:
+
+ *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org
+
+ Licensed under Apache License 2.0 (NO WARRANTY, etc. see website)
+
+
+
+DOCUMENTATION
+
+
+Markdeep
+
+ This documentation was generated using markdeep:
+
+ https://casual-effects.com/markdeep
+
+ **Markdeep is open source. You may use, extend, and redistribute Markdeep without charge under the terms of the BSD license:**
+
+ Copyright 2015-2019, Morgan McGuire
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ **Markdeep includes highlight.js, so you are also bound by its BSD license:**
+
+ Copyright (c) 2006, Ivan Sagalaev
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are
+ permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of
+ conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ of conditions and the following disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ * Neither the name of highlight.js nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/doc/index_template.md.html b/tools/doc/sfw_full_template.html
similarity index 100%
rename from tools/doc/index_template.md.html
rename to tools/doc/sfw_full_template.html
diff --git a/tools/doc/sfw_object_template.html b/tools/doc/sfw_object_template.html
new file mode 100644
index 0000000..9188d9e
--- /dev/null
+++ b/tools/doc/sfw_object_template.html
@@ -0,0 +1,1143 @@
+
+**SFW Docs**
+
+SFW - Simple Framework - https://github.com/Relintai/sfw
+
+Simple c++ app / game framework inspired by the single file c game engines
+and libraries, especially [FWK](https://github.com/r-lyeh/FWK).
+
+**Modules**: Core, Object
+
+COMPILE
+====================================================================================
+
+$FILE_Compilation_No_Renderer$
+
+CORE
+====================================================================================
+
+Use SFWCore::setup();
to initialize the library.
+This is necessary as some components (Like PoolVector, and StringNames.) need additional setup.
+
+Use SFWCore::cleanup();
to de-initialize the library.
+
+Also note that if you don't use classes that doens't rely on this you can get away by not calling it.
+
+
+Initialization
+------------------------------------------------------------------
+
+
+SFWCore
+
+ |||CLASS_SFWCore|||
+
+
+
+Enums
+------------------------------------------------------------------
+
+Errors
+
+
+Error
+
+|||ENUM_Error|||
+
+
+
+Other
+
+
+ClockDirection
+
+|||ENUM_ClockDirection|||
+
+
+
+
+Orientation
+
+|||ENUM_Orientation|||
+
+
+
+
+HAlign
+
+|||ENUM_HAlign|||
+
+
+
+
+VAlign
+
+|||ENUM_VAlign|||
+
+
+
+
+Margin
+
+|||ENUM_Margin|||
+
+
+
+
+Side
+
+|||ENUM_Side|||
+
+
+
+
+Corner
+
+|||ENUM_Corner|||
+
+
+
+Errors and Logging
+------------------------------------------------------------------
+
+
+Logging
+
+Use the provided macros:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define PRINT_TRACE(str)
+#define LOG_TRACE(...)
+
+#define PRINT_MSG(str)
+#define LOG_MSG(...)
+
+#define PRINT_WARN(str)
+#define LOG_WARN(...)
+
+#define PRINT_ERR(str)
+#define ERR_PRINT(str)
+#define LOG_ERR(...)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Error
+
+Uses these macros:
+
+Note that the library itself does not use exceptions, it uses these macros exclusively.
+
+Also note that you are not prevented you from using exceptions if you want to in your own code.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define ERR_FAIL_MSG(msg)
+
+#define ERR_FAIL_V(val)
+
+#define ERR_FAIL_V_MSG(val, msg)
+
+#define ERR_FAIL_INDEX(index, size)
+#define ERR_FAIL_INDEX_MSG(index, size, msg)
+
+#define ERR_FAIL_INDEX_V(index, size, val)
+#define ERR_FAIL_INDEX_V_MSG(index, size, val, msg)
+
+#define ERR_FAIL_COND(cond)
+#define ERR_FAIL_COND_MSG(cond, msg)
+
+#define ERR_FAIL_COND_V(cond, val)
+#define ERR_FAIL_COND_V_MSG(cond, val, msg)
+
+#define ERR_CONTINUE(cond)
+#define ERR_CONTINUE_MSG(cond, msg)
+
+#define ERR_CONTINUE_ACTION(cond, action)
+#define ERR_CONTINUE_ACTION_MSG(cond, action, msg)
+
+#define CRASH_INDEX(index, size)
+#define CRASH_BAD_INDEX(index, size)
+#define CRASH_BAD_UNSIGNED_INDEX(index, size)
+
+#define CRASH_COND(cond)
+#define CRASH_COND_MSG(cond, msg)
+
+#define CRASH_MSG(msg)
+#define CRASH_NOW(msg)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Asserts
+
+Use the provided macros:
+
+These should be 'free' checks for program flow and should not be needed in any releases, only used when the DEV_ENABLED define is set.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define DEV_CHECK(m_cond)
+#define DEV_CHECK_ONCE(m_cond)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+Math
+------------------------------------------------------------------
+
+
+Math
+
+|||CLASS_Math|||
+
+
+
+
+Vector2
+
+ |||STRUCT_Vector2|||
+
+
+
+
+Vector2i
+
+ |||STRUCT_Vector2i|||
+
+
+
+
+Vector3
+
+ |||STRUCT_Vector3|||
+
+
+
+
+Vector3i
+
+ |||STRUCT_Vector3i|||
+
+
+
+
+Vector4
+
+ |||STRUCT_Vector4|||
+
+
+
+
+Vector4i
+
+ |||STRUCT_Vector4i|||
+
+
+
+
+Color
+
+ |||STRUCT_Color|||
+
+
+
+
+Rect2
+
+ |||STRUCT_Rect2|||
+
+
+
+
+Rect2i
+
+ |||STRUCT_Rect2i|||
+
+
+
+
+Plane
+
+ |||STRUCT_Plane|||
+
+
+
+
+AABB
+
+ |||STRUCT_AABB|||
+
+
+
+
+Face3
+
+ |||STRUCT_Face3|||
+
+
+
+
+Transform2D
+
+ |||STRUCT_Transform2D|||
+
+
+
+
+Quaternion
+
+ |||STRUCT_Quaternion|||
+
+
+
+
+Basis
+
+ |||STRUCT_Basis|||
+
+
+
+
+Transform
+
+ |||STRUCT_Transform|||
+
+
+
+
+Projection
+
+ |||STRUCT_Projection|||
+
+
+
+
+RandomPCG
+
+ |||CLASS_RandomPCG|||
+
+
+
+String
+------------------------------------------------------------------
+
+Helper Structs
+
+
+CharRange
+
+ |||STRUCT_CharRange|||
+
+
+
+
+StrRange
+
+ |||STRUCT_StrRange|||
+
+
+
+
+NoCaseComparator
+
+ |||STRUCT_NoCaseComparator|||
+
+
+
+
+NaturalNoCaseComparator
+
+ |||STRUCT_NaturalNoCaseComparator|||
+
+
+
+Character Strings
+
+
+StaticCString
+
+ You can statically store a C string with this.
+
+ |||STRUCT_StaticCString|||
+
+
+
+
+Char16String
+
+ 16 bit (wide char) char string.
+
+ |||CLASS_Char16String|||
+
+
+
+
+CharString
+
+ 8 bit char string.
+
+ |||CLASS_CharString|||
+
+
+
+
+CharProxy
+
+ Properly stores a reference to an element in a String.
+
+ |||CLASS_CharProxy|||
+
+
+
+Main
+
+
+String
+
+ Main String class. This is what you normally use. Stores characters as 32 bit variables. It's COW (Copy on Write).
+
+ If you want to convert this to a char* use it's utf8() method.
+
+ |||CLASS_String|||
+
+
+
+
+StringName
+
+ A String that is optimized for comparisons using ==.
+
+ |||CLASS_StringName|||
+
+
+
+Containers
+------------------------------------------------------------------
+
+Helper Structs
+
+
+Pair
+
+ |||STRUCT_Pair|||
+
+
+
+
+KeyValue
+
+ |||STRUCT_KeyValue|||
+
+
+
+
+Comparator
+
+ |||STRUCT_Comparator|||
+
+
+
+Helper Classes
+
+
+CowData
+
+ A helper class that implements COW (Copy-on-Write) functionality.
+
+ |||CLASS_CowData|||
+
+
+
+
+VectorWriteProxy
+
+ |||CLASS_VectorWriteProxy|||
+
+
+
+Lists
+
+
+List
+
+ |||CLASS_List|||
+
+
+
+Vectors
+
+
+Vector
+
+ Vector with COW support.
+
+ |||CLASS_Vector|||
+
+
+
+
+PoolVector
+
+ Vector that does not fragment memory.
+
+ |||CLASS_PoolVector|||
+
+
+
+
+LocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ This is the most similar to std::vector.
+
+ |||CLASS_LocalVector|||
+
+
+
+
+LocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ |||CLASS_LocalVectori|||
+
+
+
+
+TightLocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVector|||
+
+
+
+
+TightLocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVectori|||
+
+
+
+Sets
+
+
+RBSet
+
+ |||CLASS_RBSet|||
+
+
+
+
+VSet
+
+ |||CLASS_VSet|||
+
+
+
+
+HashSet
+
+ |||CLASS_HashSet|||
+
+
+
+Maps
+
+
+RBMap
+
+ |||CLASS_RBMap|||
+
+
+
+
+VMap
+
+ |||CLASS_VMap|||
+
+
+
+HashMaps
+
+
+OGHashMap
+
+ Simple HashMap implementation.
+
+ |||CLASS_OGHashMap|||
+
+
+
+
+HashMap
+
+ HashMap implementation that uses open addressing with Robin Hood hashing.
+
+ Use this by default.
+
+ |||CLASS_HashMap|||
+
+
+
+
+OrderedHashMap
+
+ HashMap implementation that keeps the order of it's elements.
+
+ |||CLASS_OrderedHashMap|||
+
+
+
+Special
+
+
+SortArray
+
+ |||CLASS_SortArray|||
+
+
+
+
+RingBuffer
+
+ |||CLASS_RingBuffer|||
+
+
+
+
+Files
+------------------------------------------------------------------
+
+
+FileAccess
+
+ |||CLASS_FileAccess|||
+
+
+
+
+FileAccessRef
+
+ |||STRUCT_FileAccessRef|||
+
+
+
+
+DirAccess
+
+ |||CLASS_DirAccess|||
+
+
+
+
+DirAccessRef
+
+ |||STRUCT_DirAccessRef|||
+
+
+
+Time
+------------------------------------------------------------------
+
+
+SFWTime
+
+ |||CLASS_SFWTime|||
+
+
+
+Threading
+------------------------------------------------------------------
+
+Thread
+
+
+Thread
+
+ |||CLASS_Thread|||
+
+
+
+Atomics
+
+
+SafeNumeric
+
+ |||CLASS_SafeNumeric|||
+
+
+
+
+SafeFlag
+
+ |||CLASS_SafeFlag|||
+
+
+
+
+SafeRefCount
+
+ |||CLASS_SafeRefCount|||
+
+
+
+Mutex
+
+
+Mutex
+
+ Typedefined to Mutex.
+
+ |||CLASS_MutexImpl|||
+
+
+
+
+MutexLock
+
+ Helper class to lock and automatically release it on leaving scope.
+
+ |||CLASS_MutexLock|||
+
+
+
+RWLock
+
+
+RWLock
+
+ |||CLASS_RWLock|||
+
+
+
+
+RWLockRead
+
+ |||CLASS_RWLockRead|||
+
+
+
+
+RWLockWrite
+
+ |||CLASS_RWLockWrite|||
+
+
+
+SpinLock
+
+
+SpinLock
+
+ |||CLASS_SpinLock|||
+
+
+
+Networking
+------------------------------------------------------------------
+
+Socket
+
+
+InetAddress
+
+ |||CLASS_InetAddress|||
+
+
+
+
+Socket
+
+ |||CLASS_Socket|||
+
+
+
+Processes
+------------------------------------------------------------------
+
+
+SubProcess
+
+ |||CLASS_SubProcess|||
+
+
+
+
+SubProcessRef
+
+ |||STRUCT_SubProcessRef|||
+
+
+
+Memory
+------------------------------------------------------------------
+
+
+MemoryPool
+
+ |||STRUCT_MemoryPool|||
+
+
+
+
+PagedAllocator
+
+ |||CLASS_PagedAllocator|||
+
+
+
+
+PoolAllocator
+
+ |||CLASS_PoolAllocator|||
+
+
+
+OBJECT
+====================================================================================
+
+Object
+
+
+Object
+
+ |||CLASS_Object|||
+
+
+
+
+ObjectDB
+
+ |||CLASS_ObjectDB|||
+
+
+
+Reference
+
+
+Reference
+
+ |||CLASS_Reference|||
+
+
+
+
+Ref
+
+ |||CLASS_Ref|||
+
+
+
+Resource
+
+
+Resource
+
+ |||CLASS_Resource|||
+
+
+
+Variant
+
+
+Variant
+
+ |||CLASS_Variant|||
+
+
+
+
+Variant Containers
+
+
+Array
+
+ |||CLASS_Array|||
+
+
+
+
+Dictionary
+
+ |||CLASS_Dictionary|||
+
+
+
+Utilities
+
+
+Signal
+
+ |||CLASS_Signal|||
+
+
+
+
+CoreStringNames
+
+ |||CLASS_CoreStringNames|||
+
+
+
+ADVANCED
+====================================================================================
+
+There are a few remaining classes that were omitted from this document (Like allocators, hashers etc.),
+as you will normally won't need them. (If you do, you will likely just need to rread the source anyway.)
+
+LICENSES
+====================================================================================
+
+SFW
+
+
+SFW
+
+ MIT
+
+ Copyright (c) 2023-present Péter Magyar.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+
+
+GENERAL
+
+
+Pandemonium Engine
+
+ MIT
+
+ https://github.com/Relintai/pandemonium_engine
+
+
+ Copyright (c) 2022-present Péter Magyar.
+
+ Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
+
+ Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+
+FWK
+
+ https://github.com/r-lyeh/FWK
+
+ Unlicense
+
+ This software is released into the [public domain](https://unlicense.org/).
+
+ Also dual-licensed as [0-BSD](https://opensource.org/licenses/0BSD) or [MIT (No Attribution)](https://github.com/aws/mit-0)
+ for those countries where public domain is a concern (sigh).
+
+ Any contribution to this repository is implicitly subjected to the same release conditions aforementioned.
+
+
+
+CORE
+
+
+Trantor
+
+ Trantor
+
+ inet_address.h, .cpp, socket.h and .cpp originates from trantor (they were heavily modified):
+
+ Trantor - A non-blocking I/O based TCP network library, using C++14/17,
+ Copyright (c) 2016-2021, Tao An. All rights reserved.
+
+ https://github.com/an-tao/trantor
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Tao An nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ Muduo - A reactor-based C++ network library for Linux
+ Copyright (c) 2010, Shuo Chen. All rights reserved.
+
+ http://code.google.com/p/muduo/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Shuo Chen nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+PCG
+
+ pcg.h License:
+
+ *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org
+
+ Licensed under Apache License 2.0 (NO WARRANTY, etc. see website)
+
+
+
+DOCUMENTATION
+
+
+Markdeep
+
+ This documentation was generated using markdeep:
+
+ https://casual-effects.com/markdeep
+
+ **Markdeep is open source. You may use, extend, and redistribute Markdeep without charge under the terms of the BSD license:**
+
+ Copyright 2015-2019, Morgan McGuire
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ **Markdeep includes highlight.js, so you are also bound by its BSD license:**
+
+ Copyright (c) 2006, Ivan Sagalaev
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are
+ permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of
+ conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ of conditions and the following disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ * Neither the name of highlight.js nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/doc/sfw_render_core_template.html b/tools/doc/sfw_render_core_template.html
new file mode 100644
index 0000000..7aebbf6
--- /dev/null
+++ b/tools/doc/sfw_render_core_template.html
@@ -0,0 +1,1448 @@
+
+**SFW Docs**
+
+SFW - Simple Framework - https://github.com/Relintai/sfw
+
+Simple c++ app / game framework inspired by the single file c game engines
+and libraries, especially [FWK](https://github.com/r-lyeh/FWK).
+
+**Modules**: Core, Object, Render Core
+
+COMPILE
+====================================================================================
+
+$FILE_Compilation_Renderer$
+
+CORE
+====================================================================================
+
+Use SFWCore::setup();
to initialize the library.
+This is necessary as some components (Like PoolVector, and StringNames.) need additional setup.
+
+Use SFWCore::cleanup();
to de-initialize the library.
+
+Note that if you use the Application class, it's constructor will do this for you automatically.
+
+Also note that if you don't use classes that doens't rely on this you can get away by not calling it.
+
+
+Initialization
+------------------------------------------------------------------
+
+
+SFWCore
+
+ |||CLASS_SFWCore|||
+
+
+
+Enums
+------------------------------------------------------------------
+
+Errors
+
+
+Error
+
+|||ENUM_Error|||
+
+
+
+Keys
+
+
+KeyList
+
+|||ENUM_KeyList|||
+
+
+
+
+KeyModifierMask
+
+|||ENUM_KeyModifierMask|||
+
+
+
+
+ButtonList
+
+|||ENUM_ButtonList|||
+
+
+
+Other
+
+
+ClockDirection
+
+|||ENUM_ClockDirection|||
+
+
+
+
+Orientation
+
+|||ENUM_Orientation|||
+
+
+
+
+HAlign
+
+|||ENUM_HAlign|||
+
+
+
+
+VAlign
+
+|||ENUM_VAlign|||
+
+
+
+
+Margin
+
+|||ENUM_Margin|||
+
+
+
+
+Side
+
+|||ENUM_Side|||
+
+
+
+
+Corner
+
+|||ENUM_Corner|||
+
+
+
+Errors and Logging
+------------------------------------------------------------------
+
+
+Logging
+
+Use the provided macros:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define PRINT_TRACE(str)
+#define LOG_TRACE(...)
+
+#define PRINT_MSG(str)
+#define LOG_MSG(...)
+
+#define PRINT_WARN(str)
+#define LOG_WARN(...)
+
+#define PRINT_ERR(str)
+#define ERR_PRINT(str)
+#define LOG_ERR(...)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Error
+
+Uses these macros:
+
+Note that the library itself does not use exceptions, it uses these macros exclusively.
+
+Also note that you are not prevented you from using exceptions if you want to in your own code.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define ERR_FAIL_MSG(msg)
+
+#define ERR_FAIL_V(val)
+
+#define ERR_FAIL_V_MSG(val, msg)
+
+#define ERR_FAIL_INDEX(index, size)
+#define ERR_FAIL_INDEX_MSG(index, size, msg)
+
+#define ERR_FAIL_INDEX_V(index, size, val)
+#define ERR_FAIL_INDEX_V_MSG(index, size, val, msg)
+
+#define ERR_FAIL_COND(cond)
+#define ERR_FAIL_COND_MSG(cond, msg)
+
+#define ERR_FAIL_COND_V(cond, val)
+#define ERR_FAIL_COND_V_MSG(cond, val, msg)
+
+#define ERR_CONTINUE(cond)
+#define ERR_CONTINUE_MSG(cond, msg)
+
+#define ERR_CONTINUE_ACTION(cond, action)
+#define ERR_CONTINUE_ACTION_MSG(cond, action, msg)
+
+#define CRASH_INDEX(index, size)
+#define CRASH_BAD_INDEX(index, size)
+#define CRASH_BAD_UNSIGNED_INDEX(index, size)
+
+#define CRASH_COND(cond)
+#define CRASH_COND_MSG(cond, msg)
+
+#define CRASH_MSG(msg)
+#define CRASH_NOW(msg)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Asserts
+
+Use the provided macros:
+
+These should be 'free' checks for program flow and should not be needed in any releases, only used when the DEV_ENABLED define is set.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define DEV_CHECK(m_cond)
+#define DEV_CHECK_ONCE(m_cond)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+Math
+------------------------------------------------------------------
+
+
+Math
+
+|||CLASS_Math|||
+
+
+
+
+Vector2
+
+ |||STRUCT_Vector2|||
+
+
+
+
+Vector2i
+
+ |||STRUCT_Vector2i|||
+
+
+
+
+Vector3
+
+ |||STRUCT_Vector3|||
+
+
+
+
+Vector3i
+
+ |||STRUCT_Vector3i|||
+
+
+
+
+Vector4
+
+ |||STRUCT_Vector4|||
+
+
+
+
+Vector4i
+
+ |||STRUCT_Vector4i|||
+
+
+
+
+Color
+
+ |||STRUCT_Color|||
+
+
+
+
+Rect2
+
+ |||STRUCT_Rect2|||
+
+
+
+
+Rect2i
+
+ |||STRUCT_Rect2i|||
+
+
+
+
+Plane
+
+ |||STRUCT_Plane|||
+
+
+
+
+AABB
+
+ |||STRUCT_AABB|||
+
+
+
+
+Face3
+
+ |||STRUCT_Face3|||
+
+
+
+
+Transform2D
+
+ |||STRUCT_Transform2D|||
+
+
+
+
+Quaternion
+
+ |||STRUCT_Quaternion|||
+
+
+
+
+Basis
+
+ |||STRUCT_Basis|||
+
+
+
+
+Transform
+
+ |||STRUCT_Transform|||
+
+
+
+
+Projection
+
+ |||STRUCT_Projection|||
+
+
+
+
+RandomPCG
+
+ |||CLASS_RandomPCG|||
+
+
+
+String
+------------------------------------------------------------------
+
+Helper Structs
+
+
+CharRange
+
+ |||STRUCT_CharRange|||
+
+
+
+
+StrRange
+
+ |||STRUCT_StrRange|||
+
+
+
+
+NoCaseComparator
+
+ |||STRUCT_NoCaseComparator|||
+
+
+
+
+NaturalNoCaseComparator
+
+ |||STRUCT_NaturalNoCaseComparator|||
+
+
+
+Character Strings
+
+
+StaticCString
+
+ You can statically store a C string with this.
+
+ |||STRUCT_StaticCString|||
+
+
+
+
+Char16String
+
+ 16 bit (wide char) char string.
+
+ |||CLASS_Char16String|||
+
+
+
+
+CharString
+
+ 8 bit char string.
+
+ |||CLASS_CharString|||
+
+
+
+
+CharProxy
+
+ Properly stores a reference to an element in a String.
+
+ |||CLASS_CharProxy|||
+
+
+
+Main
+
+
+String
+
+ Main String class. This is what you normally use. Stores characters as 32 bit variables. It's COW (Copy on Write).
+
+ If you want to convert this to a char* use it's utf8() method.
+
+ |||CLASS_String|||
+
+
+
+
+StringName
+
+ A String that is optimized for comparisons using ==.
+
+ |||CLASS_StringName|||
+
+
+
+Containers
+------------------------------------------------------------------
+
+Helper Structs
+
+
+Pair
+
+ |||STRUCT_Pair|||
+
+
+
+
+KeyValue
+
+ |||STRUCT_KeyValue|||
+
+
+
+
+Comparator
+
+ |||STRUCT_Comparator|||
+
+
+
+Helper Classes
+
+
+CowData
+
+ A helper class that implements COW (Copy-on-Write) functionality.
+
+ |||CLASS_CowData|||
+
+
+
+
+VectorWriteProxy
+
+ |||CLASS_VectorWriteProxy|||
+
+
+
+Lists
+
+
+List
+
+ |||CLASS_List|||
+
+
+
+Vectors
+
+
+Vector
+
+ Vector with COW support.
+
+ |||CLASS_Vector|||
+
+
+
+
+PoolVector
+
+ Vector that does not fragment memory.
+
+ |||CLASS_PoolVector|||
+
+
+
+
+LocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ This is the most similar to std::vector.
+
+ |||CLASS_LocalVector|||
+
+
+
+
+LocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ |||CLASS_LocalVectori|||
+
+
+
+
+TightLocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVector|||
+
+
+
+
+TightLocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVectori|||
+
+
+
+Sets
+
+
+RBSet
+
+ |||CLASS_RBSet|||
+
+
+
+
+VSet
+
+ |||CLASS_VSet|||
+
+
+
+
+HashSet
+
+ |||CLASS_HashSet|||
+
+
+
+Maps
+
+
+RBMap
+
+ |||CLASS_RBMap|||
+
+
+
+
+VMap
+
+ |||CLASS_VMap|||
+
+
+
+HashMaps
+
+
+OGHashMap
+
+ Simple HashMap implementation.
+
+ |||CLASS_OGHashMap|||
+
+
+
+
+HashMap
+
+ HashMap implementation that uses open addressing with Robin Hood hashing.
+
+ Use this by default.
+
+ |||CLASS_HashMap|||
+
+
+
+
+OrderedHashMap
+
+ HashMap implementation that keeps the order of it's elements.
+
+ |||CLASS_OrderedHashMap|||
+
+
+
+Special
+
+
+SortArray
+
+ |||CLASS_SortArray|||
+
+
+
+
+RingBuffer
+
+ |||CLASS_RingBuffer|||
+
+
+
+
+Files
+------------------------------------------------------------------
+
+
+FileAccess
+
+ |||CLASS_FileAccess|||
+
+
+
+
+FileAccessRef
+
+ |||STRUCT_FileAccessRef|||
+
+
+
+
+DirAccess
+
+ |||CLASS_DirAccess|||
+
+
+
+
+DirAccessRef
+
+ |||STRUCT_DirAccessRef|||
+
+
+
+Time
+------------------------------------------------------------------
+
+
+SFWTime
+
+ |||CLASS_SFWTime|||
+
+
+
+Threading
+------------------------------------------------------------------
+
+Thread
+
+
+Thread
+
+ |||CLASS_Thread|||
+
+
+
+Atomics
+
+
+SafeNumeric
+
+ |||CLASS_SafeNumeric|||
+
+
+
+
+SafeFlag
+
+ |||CLASS_SafeFlag|||
+
+
+
+
+SafeRefCount
+
+ |||CLASS_SafeRefCount|||
+
+
+
+Mutex
+
+
+Mutex
+
+ Typedefined to Mutex.
+
+ |||CLASS_MutexImpl|||
+
+
+
+
+MutexLock
+
+ Helper class to lock and automatically release it on leaving scope.
+
+ |||CLASS_MutexLock|||
+
+
+
+RWLock
+
+
+RWLock
+
+ |||CLASS_RWLock|||
+
+
+
+
+RWLockRead
+
+ |||CLASS_RWLockRead|||
+
+
+
+
+RWLockWrite
+
+ |||CLASS_RWLockWrite|||
+
+
+
+SpinLock
+
+
+SpinLock
+
+ |||CLASS_SpinLock|||
+
+
+
+Networking
+------------------------------------------------------------------
+
+Socket
+
+
+InetAddress
+
+ |||CLASS_InetAddress|||
+
+
+
+
+Socket
+
+ |||CLASS_Socket|||
+
+
+
+Processes
+------------------------------------------------------------------
+
+
+SubProcess
+
+ |||CLASS_SubProcess|||
+
+
+
+
+SubProcessRef
+
+ |||STRUCT_SubProcessRef|||
+
+
+
+Memory
+------------------------------------------------------------------
+
+
+MemoryPool
+
+ |||STRUCT_MemoryPool|||
+
+
+
+
+PagedAllocator
+
+ |||CLASS_PagedAllocator|||
+
+
+
+
+PoolAllocator
+
+ |||CLASS_PoolAllocator|||
+
+
+
+OBJECT
+====================================================================================
+
+Object
+
+
+Object
+
+ |||CLASS_Object|||
+
+
+
+
+ObjectDB
+
+ |||CLASS_ObjectDB|||
+
+
+
+Reference
+
+
+Reference
+
+ |||CLASS_Reference|||
+
+
+
+
+Ref
+
+ |||CLASS_Ref|||
+
+
+
+Resource
+
+
+Resource
+
+ |||CLASS_Resource|||
+
+
+
+Variant
+
+
+Variant
+
+ |||CLASS_Variant|||
+
+
+
+
+Variant Containers
+
+
+Array
+
+ |||CLASS_Array|||
+
+
+
+
+Dictionary
+
+ |||CLASS_Dictionary|||
+
+
+
+Utilities
+
+
+Signal
+
+ |||CLASS_Signal|||
+
+
+
+
+CoreStringNames
+
+ |||CLASS_CoreStringNames|||
+
+
+
+RENDER CORE
+====================================================================================
+
+Application
+------------------------------------------------------------------
+
+
+Application
+
+ |||CLASS_Application|||
+
+
+
+
+Scene
+
+ |||CLASS_Scene|||
+
+
+
+
+AppWindow
+
+ |||CLASS_AppWindow|||
+
+
+
+Input
+------------------------------------------------------------------
+
+Singletons
+
+
+Input
+
+ |||CLASS_Input|||
+
+
+
+
+InputMap
+
+ |||CLASS_InputMap|||
+
+
+
+Events
+
+
+InputEvent
+
+ |||CLASS_InputEvent|||
+
+
+
+
+
+InputEventWithModifiers
+
+ |||CLASS_InputEventWithModifiers|||
+
+
+
+
+InputEventKey
+
+ |||CLASS_InputEventKey|||
+
+
+
+
+InputEventMouse
+
+ |||CLASS_InputEventMouse|||
+
+
+
+
+InputEventMouseButton
+
+ |||CLASS_InputEventMouseButton|||
+
+
+
+
+InputEventMouseMotion
+
+ |||CLASS_InputEventMouseMotion|||
+
+
+
+
+InputEventAction
+
+ |||CLASS_InputEventAction|||
+
+
+
+
+InputEventShortCut
+
+ |||CLASS_InputEventShortCut|||
+
+
+
+Utility
+
+
+ShortCut
+
+ |||CLASS_ShortCut|||
+
+
+
+Rendering
+------------------------------------------------------------------
+
+Images
+
+
+Image
+
+ |||CLASS_Image|||
+
+
+
+
+Texture
+
+ |||CLASS_Texture|||
+
+
+
+
+RenderTexture
+
+ |||CLASS_RenderTexture|||
+
+
+
+
+FrameBuffer
+
+ |||CLASS_FrameBuffer|||
+
+
+
+Meshes
+
+
+Mesh
+
+ |||CLASS_Mesh|||
+
+
+
+
+MeshUtils
+
+ |||CLASS_MeshUtils|||
+
+
+
+Shaders
+
+
+Shader
+
+ |||CLASS_Shader|||
+
+
+
+
+ShaderCache
+
+ |||CLASS_ShaderCache|||
+
+
+
+Fonts
+
+
+Font
+
+ |||CLASS_Font|||
+
+
+
+Materials
+
+
+Material
+
+ |||CLASS_Material|||
+
+
+
+Text Materials
+
+
+FontMaterial
+
+ |||CLASS_FontMaterial|||
+
+
+
+2D Materials
+
+
+ColorMaterial2D
+
+ |||CLASS_ColorMaterial2D|||
+
+
+
+
+TextureMaterial2D
+
+ |||CLASS_TextureMaterial2D|||
+
+
+
+3D Materials
+
+
+ColorMaterial
+
+ |||CLASS_ColorMaterial|||
+
+
+
+
+TextureMaterial
+
+ |||CLASS_TextureMaterial|||
+
+
+
+
+ColoredMaterial
+
+ |||CLASS_ColoredMaterial|||
+
+
+
+
+TransparentTextureMaterial
+
+ |||CLASS_TransparentTextureMaterial|||
+
+
+
+State
+
+
+RenderState
+
+ |||CLASS_RenderState|||
+
+
+
+Coordinate System
+
+******************************************************************
+*
+* +x
+* *--->--------. .------------.
+* | | | |
+* v +y | | |
+* | | +y ^ ^ +z |
+* | | |/ |
+* '------------' *--->--------'
+* / +x
+* -z
+* 2D 3D
+******************************************************************
+
+
+ADVANCED
+====================================================================================
+
+There are a few remaining classes that were omitted from this document (Like allocators, hashers etc.),
+as you will normally won't need them. (If you do, you will likely just need to rread the source anyway.)
+
+LICENSES
+====================================================================================
+
+SFW
+
+
+SFW
+
+ MIT
+
+ Copyright (c) 2023-present Péter Magyar.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+
+
+GENERAL
+
+
+Pandemonium Engine
+
+ MIT
+
+ https://github.com/Relintai/pandemonium_engine
+
+
+ Copyright (c) 2022-present Péter Magyar.
+
+ Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
+
+ Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+
+FWK
+
+ https://github.com/r-lyeh/FWK
+
+ Unlicense
+
+ This software is released into the [public domain](https://unlicense.org/).
+
+ Also dual-licensed as [0-BSD](https://opensource.org/licenses/0BSD) or [MIT (No Attribution)](https://github.com/aws/mit-0)
+ for those countries where public domain is a concern (sigh).
+
+ Any contribution to this repository is implicitly subjected to the same release conditions aforementioned.
+
+
+
+CORE
+
+
+Trantor
+
+ Trantor
+
+ inet_address.h, .cpp, socket.h and .cpp originates from trantor (they were heavily modified):
+
+ Trantor - A non-blocking I/O based TCP network library, using C++14/17,
+ Copyright (c) 2016-2021, Tao An. All rights reserved.
+
+ https://github.com/an-tao/trantor
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Tao An nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ Muduo - A reactor-based C++ network library for Linux
+ Copyright (c) 2010, Shuo Chen. All rights reserved.
+
+ http://code.google.com/p/muduo/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Shuo Chen nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+PCG
+
+ pcg.h License:
+
+ *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org
+
+ Licensed under Apache License 2.0 (NO WARRANTY, etc. see website)
+
+
+
+$LICENSES_Renderer$
+
+DOCUMENTATION
+
+
+Markdeep
+
+ This documentation was generated using markdeep:
+
+ https://casual-effects.com/markdeep
+
+ **Markdeep is open source. You may use, extend, and redistribute Markdeep without charge under the terms of the BSD license:**
+
+ Copyright 2015-2019, Morgan McGuire
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ **Markdeep includes highlight.js, so you are also bound by its BSD license:**
+
+ Copyright (c) 2006, Ivan Sagalaev
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are
+ permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of
+ conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ of conditions and the following disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ * Neither the name of highlight.js nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/doc/sfw_render_immediate_template.html b/tools/doc/sfw_render_immediate_template.html
new file mode 100644
index 0000000..6af7ba8
--- /dev/null
+++ b/tools/doc/sfw_render_immediate_template.html
@@ -0,0 +1,1459 @@
+
+**SFW Docs**
+
+SFW - Simple Framework - https://github.com/Relintai/sfw
+
+Simple c++ app / game framework inspired by the single file c game engines
+and libraries, especially [FWK](https://github.com/r-lyeh/FWK).
+
+**Modules**: Core, Object, Render Core, Render Immediate
+
+COMPILE
+====================================================================================
+
+$FILE_Compilation_Renderer$
+
+CORE
+====================================================================================
+
+Use SFWCore::setup();
to initialize the library.
+This is necessary as some components (Like PoolVector, and StringNames.) need additional setup.
+
+Use SFWCore::cleanup();
to de-initialize the library.
+
+Note that if you use the Application class, it's constructor will do this for you automatically.
+
+Also note that if you don't use classes that doens't rely on this you can get away by not calling it.
+
+
+Initialization
+------------------------------------------------------------------
+
+
+SFWCore
+
+ |||CLASS_SFWCore|||
+
+
+
+Enums
+------------------------------------------------------------------
+
+Errors
+
+
+Error
+
+|||ENUM_Error|||
+
+
+
+Keys
+
+
+KeyList
+
+|||ENUM_KeyList|||
+
+
+
+
+KeyModifierMask
+
+|||ENUM_KeyModifierMask|||
+
+
+
+
+ButtonList
+
+|||ENUM_ButtonList|||
+
+
+
+Other
+
+
+ClockDirection
+
+|||ENUM_ClockDirection|||
+
+
+
+
+Orientation
+
+|||ENUM_Orientation|||
+
+
+
+
+HAlign
+
+|||ENUM_HAlign|||
+
+
+
+
+VAlign
+
+|||ENUM_VAlign|||
+
+
+
+
+Margin
+
+|||ENUM_Margin|||
+
+
+
+
+Side
+
+|||ENUM_Side|||
+
+
+
+
+Corner
+
+|||ENUM_Corner|||
+
+
+
+Errors and Logging
+------------------------------------------------------------------
+
+
+Logging
+
+Use the provided macros:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define PRINT_TRACE(str)
+#define LOG_TRACE(...)
+
+#define PRINT_MSG(str)
+#define LOG_MSG(...)
+
+#define PRINT_WARN(str)
+#define LOG_WARN(...)
+
+#define PRINT_ERR(str)
+#define ERR_PRINT(str)
+#define LOG_ERR(...)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Error
+
+Uses these macros:
+
+Note that the library itself does not use exceptions, it uses these macros exclusively.
+
+Also note that you are not prevented you from using exceptions if you want to in your own code.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define ERR_FAIL_MSG(msg)
+
+#define ERR_FAIL_V(val)
+
+#define ERR_FAIL_V_MSG(val, msg)
+
+#define ERR_FAIL_INDEX(index, size)
+#define ERR_FAIL_INDEX_MSG(index, size, msg)
+
+#define ERR_FAIL_INDEX_V(index, size, val)
+#define ERR_FAIL_INDEX_V_MSG(index, size, val, msg)
+
+#define ERR_FAIL_COND(cond)
+#define ERR_FAIL_COND_MSG(cond, msg)
+
+#define ERR_FAIL_COND_V(cond, val)
+#define ERR_FAIL_COND_V_MSG(cond, val, msg)
+
+#define ERR_CONTINUE(cond)
+#define ERR_CONTINUE_MSG(cond, msg)
+
+#define ERR_CONTINUE_ACTION(cond, action)
+#define ERR_CONTINUE_ACTION_MSG(cond, action, msg)
+
+#define CRASH_INDEX(index, size)
+#define CRASH_BAD_INDEX(index, size)
+#define CRASH_BAD_UNSIGNED_INDEX(index, size)
+
+#define CRASH_COND(cond)
+#define CRASH_COND_MSG(cond, msg)
+
+#define CRASH_MSG(msg)
+#define CRASH_NOW(msg)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Asserts
+
+Use the provided macros:
+
+These should be 'free' checks for program flow and should not be needed in any releases, only used when the DEV_ENABLED define is set.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define DEV_CHECK(m_cond)
+#define DEV_CHECK_ONCE(m_cond)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+Math
+------------------------------------------------------------------
+
+
+Math
+
+|||CLASS_Math|||
+
+
+
+
+Vector2
+
+ |||STRUCT_Vector2|||
+
+
+
+
+Vector2i
+
+ |||STRUCT_Vector2i|||
+
+
+
+
+Vector3
+
+ |||STRUCT_Vector3|||
+
+
+
+
+Vector3i
+
+ |||STRUCT_Vector3i|||
+
+
+
+
+Vector4
+
+ |||STRUCT_Vector4|||
+
+
+
+
+Vector4i
+
+ |||STRUCT_Vector4i|||
+
+
+
+
+Color
+
+ |||STRUCT_Color|||
+
+
+
+
+Rect2
+
+ |||STRUCT_Rect2|||
+
+
+
+
+Rect2i
+
+ |||STRUCT_Rect2i|||
+
+
+
+
+Plane
+
+ |||STRUCT_Plane|||
+
+
+
+
+AABB
+
+ |||STRUCT_AABB|||
+
+
+
+
+Face3
+
+ |||STRUCT_Face3|||
+
+
+
+
+Transform2D
+
+ |||STRUCT_Transform2D|||
+
+
+
+
+Quaternion
+
+ |||STRUCT_Quaternion|||
+
+
+
+
+Basis
+
+ |||STRUCT_Basis|||
+
+
+
+
+Transform
+
+ |||STRUCT_Transform|||
+
+
+
+
+Projection
+
+ |||STRUCT_Projection|||
+
+
+
+
+RandomPCG
+
+ |||CLASS_RandomPCG|||
+
+
+
+String
+------------------------------------------------------------------
+
+Helper Structs
+
+
+CharRange
+
+ |||STRUCT_CharRange|||
+
+
+
+
+StrRange
+
+ |||STRUCT_StrRange|||
+
+
+
+
+NoCaseComparator
+
+ |||STRUCT_NoCaseComparator|||
+
+
+
+
+NaturalNoCaseComparator
+
+ |||STRUCT_NaturalNoCaseComparator|||
+
+
+
+Character Strings
+
+
+StaticCString
+
+ You can statically store a C string with this.
+
+ |||STRUCT_StaticCString|||
+
+
+
+
+Char16String
+
+ 16 bit (wide char) char string.
+
+ |||CLASS_Char16String|||
+
+
+
+
+CharString
+
+ 8 bit char string.
+
+ |||CLASS_CharString|||
+
+
+
+
+CharProxy
+
+ Properly stores a reference to an element in a String.
+
+ |||CLASS_CharProxy|||
+
+
+
+Main
+
+
+String
+
+ Main String class. This is what you normally use. Stores characters as 32 bit variables. It's COW (Copy on Write).
+
+ If you want to convert this to a char* use it's utf8() method.
+
+ |||CLASS_String|||
+
+
+
+
+StringName
+
+ A String that is optimized for comparisons using ==.
+
+ |||CLASS_StringName|||
+
+
+
+Containers
+------------------------------------------------------------------
+
+Helper Structs
+
+
+Pair
+
+ |||STRUCT_Pair|||
+
+
+
+
+KeyValue
+
+ |||STRUCT_KeyValue|||
+
+
+
+
+Comparator
+
+ |||STRUCT_Comparator|||
+
+
+
+Helper Classes
+
+
+CowData
+
+ A helper class that implements COW (Copy-on-Write) functionality.
+
+ |||CLASS_CowData|||
+
+
+
+
+VectorWriteProxy
+
+ |||CLASS_VectorWriteProxy|||
+
+
+
+Lists
+
+
+List
+
+ |||CLASS_List|||
+
+
+
+Vectors
+
+
+Vector
+
+ Vector with COW support.
+
+ |||CLASS_Vector|||
+
+
+
+
+PoolVector
+
+ Vector that does not fragment memory.
+
+ |||CLASS_PoolVector|||
+
+
+
+
+LocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ This is the most similar to std::vector.
+
+ |||CLASS_LocalVector|||
+
+
+
+
+LocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ |||CLASS_LocalVectori|||
+
+
+
+
+TightLocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVector|||
+
+
+
+
+TightLocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVectori|||
+
+
+
+Sets
+
+
+RBSet
+
+ |||CLASS_RBSet|||
+
+
+
+
+VSet
+
+ |||CLASS_VSet|||
+
+
+
+
+HashSet
+
+ |||CLASS_HashSet|||
+
+
+
+Maps
+
+
+RBMap
+
+ |||CLASS_RBMap|||
+
+
+
+
+VMap
+
+ |||CLASS_VMap|||
+
+
+
+HashMaps
+
+
+OGHashMap
+
+ Simple HashMap implementation.
+
+ |||CLASS_OGHashMap|||
+
+
+
+
+HashMap
+
+ HashMap implementation that uses open addressing with Robin Hood hashing.
+
+ Use this by default.
+
+ |||CLASS_HashMap|||
+
+
+
+
+OrderedHashMap
+
+ HashMap implementation that keeps the order of it's elements.
+
+ |||CLASS_OrderedHashMap|||
+
+
+
+Special
+
+
+SortArray
+
+ |||CLASS_SortArray|||
+
+
+
+
+RingBuffer
+
+ |||CLASS_RingBuffer|||
+
+
+
+
+Files
+------------------------------------------------------------------
+
+
+FileAccess
+
+ |||CLASS_FileAccess|||
+
+
+
+
+FileAccessRef
+
+ |||STRUCT_FileAccessRef|||
+
+
+
+
+DirAccess
+
+ |||CLASS_DirAccess|||
+
+
+
+
+DirAccessRef
+
+ |||STRUCT_DirAccessRef|||
+
+
+
+Time
+------------------------------------------------------------------
+
+
+SFWTime
+
+ |||CLASS_SFWTime|||
+
+
+
+Threading
+------------------------------------------------------------------
+
+Thread
+
+
+Thread
+
+ |||CLASS_Thread|||
+
+
+
+Atomics
+
+
+SafeNumeric
+
+ |||CLASS_SafeNumeric|||
+
+
+
+
+SafeFlag
+
+ |||CLASS_SafeFlag|||
+
+
+
+
+SafeRefCount
+
+ |||CLASS_SafeRefCount|||
+
+
+
+Mutex
+
+
+Mutex
+
+ Typedefined to Mutex.
+
+ |||CLASS_MutexImpl|||
+
+
+
+
+MutexLock
+
+ Helper class to lock and automatically release it on leaving scope.
+
+ |||CLASS_MutexLock|||
+
+
+
+RWLock
+
+
+RWLock
+
+ |||CLASS_RWLock|||
+
+
+
+
+RWLockRead
+
+ |||CLASS_RWLockRead|||
+
+
+
+
+RWLockWrite
+
+ |||CLASS_RWLockWrite|||
+
+
+
+SpinLock
+
+
+SpinLock
+
+ |||CLASS_SpinLock|||
+
+
+
+Networking
+------------------------------------------------------------------
+
+Socket
+
+
+InetAddress
+
+ |||CLASS_InetAddress|||
+
+
+
+
+Socket
+
+ |||CLASS_Socket|||
+
+
+
+Processes
+------------------------------------------------------------------
+
+
+SubProcess
+
+ |||CLASS_SubProcess|||
+
+
+
+
+SubProcessRef
+
+ |||STRUCT_SubProcessRef|||
+
+
+
+Memory
+------------------------------------------------------------------
+
+
+MemoryPool
+
+ |||STRUCT_MemoryPool|||
+
+
+
+
+PagedAllocator
+
+ |||CLASS_PagedAllocator|||
+
+
+
+
+PoolAllocator
+
+ |||CLASS_PoolAllocator|||
+
+
+
+OBJECT
+====================================================================================
+
+Object
+
+
+Object
+
+ |||CLASS_Object|||
+
+
+
+
+ObjectDB
+
+ |||CLASS_ObjectDB|||
+
+
+
+Reference
+
+
+Reference
+
+ |||CLASS_Reference|||
+
+
+
+
+Ref
+
+ |||CLASS_Ref|||
+
+
+
+Resource
+
+
+Resource
+
+ |||CLASS_Resource|||
+
+
+
+Variant
+
+
+Variant
+
+ |||CLASS_Variant|||
+
+
+
+
+Variant Containers
+
+
+Array
+
+ |||CLASS_Array|||
+
+
+
+
+Dictionary
+
+ |||CLASS_Dictionary|||
+
+
+
+Utilities
+
+
+Signal
+
+ |||CLASS_Signal|||
+
+
+
+
+CoreStringNames
+
+ |||CLASS_CoreStringNames|||
+
+
+
+RENDER CORE
+====================================================================================
+
+Application
+------------------------------------------------------------------
+
+
+Application
+
+ |||CLASS_Application|||
+
+
+
+
+Scene
+
+ |||CLASS_Scene|||
+
+
+
+
+AppWindow
+
+ |||CLASS_AppWindow|||
+
+
+
+Input
+------------------------------------------------------------------
+
+Singletons
+
+
+Input
+
+ |||CLASS_Input|||
+
+
+
+
+InputMap
+
+ |||CLASS_InputMap|||
+
+
+
+Events
+
+
+InputEvent
+
+ |||CLASS_InputEvent|||
+
+
+
+
+
+InputEventWithModifiers
+
+ |||CLASS_InputEventWithModifiers|||
+
+
+
+
+InputEventKey
+
+ |||CLASS_InputEventKey|||
+
+
+
+
+InputEventMouse
+
+ |||CLASS_InputEventMouse|||
+
+
+
+
+InputEventMouseButton
+
+ |||CLASS_InputEventMouseButton|||
+
+
+
+
+InputEventMouseMotion
+
+ |||CLASS_InputEventMouseMotion|||
+
+
+
+
+InputEventAction
+
+ |||CLASS_InputEventAction|||
+
+
+
+
+InputEventShortCut
+
+ |||CLASS_InputEventShortCut|||
+
+
+
+Utility
+
+
+ShortCut
+
+ |||CLASS_ShortCut|||
+
+
+
+Rendering
+------------------------------------------------------------------
+
+Images
+
+
+Image
+
+ |||CLASS_Image|||
+
+
+
+
+Texture
+
+ |||CLASS_Texture|||
+
+
+
+
+RenderTexture
+
+ |||CLASS_RenderTexture|||
+
+
+
+
+FrameBuffer
+
+ |||CLASS_FrameBuffer|||
+
+
+
+Meshes
+
+
+Mesh
+
+ |||CLASS_Mesh|||
+
+
+
+
+MeshUtils
+
+ |||CLASS_MeshUtils|||
+
+
+
+Shaders
+
+
+Shader
+
+ |||CLASS_Shader|||
+
+
+
+
+ShaderCache
+
+ |||CLASS_ShaderCache|||
+
+
+
+Fonts
+
+
+Font
+
+ |||CLASS_Font|||
+
+
+
+Materials
+
+
+Material
+
+ |||CLASS_Material|||
+
+
+
+Text Materials
+
+
+FontMaterial
+
+ |||CLASS_FontMaterial|||
+
+
+
+2D Materials
+
+
+ColorMaterial2D
+
+ |||CLASS_ColorMaterial2D|||
+
+
+
+
+TextureMaterial2D
+
+ |||CLASS_TextureMaterial2D|||
+
+
+
+3D Materials
+
+
+ColorMaterial
+
+ |||CLASS_ColorMaterial|||
+
+
+
+
+TextureMaterial
+
+ |||CLASS_TextureMaterial|||
+
+
+
+
+ColoredMaterial
+
+ |||CLASS_ColoredMaterial|||
+
+
+
+
+TransparentTextureMaterial
+
+ |||CLASS_TransparentTextureMaterial|||
+
+
+
+State
+
+
+RenderState
+
+ |||CLASS_RenderState|||
+
+
+
+Coordinate System
+
+******************************************************************
+*
+* +x
+* *--->--------. .------------.
+* | | | |
+* v +y | | |
+* | | +y ^ ^ +z |
+* | | |/ |
+* '------------' *--->--------'
+* / +x
+* -z
+* 2D 3D
+******************************************************************
+
+
+RENDER IMMEDIATE
+====================================================================================
+
+
+
+Renderer
+
+ |||CLASS_Renderer|||
+
+
+
+ADVANCED
+====================================================================================
+
+There are a few remaining classes that were omitted from this document (Like allocators, hashers etc.),
+as you will normally won't need them. (If you do, you will likely just need to rread the source anyway.)
+
+LICENSES
+====================================================================================
+
+SFW
+
+
+SFW
+
+ MIT
+
+ Copyright (c) 2023-present Péter Magyar.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+
+
+GENERAL
+
+
+Pandemonium Engine
+
+ MIT
+
+ https://github.com/Relintai/pandemonium_engine
+
+
+ Copyright (c) 2022-present Péter Magyar.
+
+ Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
+
+ Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+
+FWK
+
+ https://github.com/r-lyeh/FWK
+
+ Unlicense
+
+ This software is released into the [public domain](https://unlicense.org/).
+
+ Also dual-licensed as [0-BSD](https://opensource.org/licenses/0BSD) or [MIT (No Attribution)](https://github.com/aws/mit-0)
+ for those countries where public domain is a concern (sigh).
+
+ Any contribution to this repository is implicitly subjected to the same release conditions aforementioned.
+
+
+
+CORE
+
+
+Trantor
+
+ Trantor
+
+ inet_address.h, .cpp, socket.h and .cpp originates from trantor (they were heavily modified):
+
+ Trantor - A non-blocking I/O based TCP network library, using C++14/17,
+ Copyright (c) 2016-2021, Tao An. All rights reserved.
+
+ https://github.com/an-tao/trantor
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Tao An nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ Muduo - A reactor-based C++ network library for Linux
+ Copyright (c) 2010, Shuo Chen. All rights reserved.
+
+ http://code.google.com/p/muduo/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Shuo Chen nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+PCG
+
+ pcg.h License:
+
+ *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org
+
+ Licensed under Apache License 2.0 (NO WARRANTY, etc. see website)
+
+
+
+$LICENSES_Renderer$
+
+DOCUMENTATION
+
+
+Markdeep
+
+ This documentation was generated using markdeep:
+
+ https://casual-effects.com/markdeep
+
+ **Markdeep is open source. You may use, extend, and redistribute Markdeep without charge under the terms of the BSD license:**
+
+ Copyright 2015-2019, Morgan McGuire
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ **Markdeep includes highlight.js, so you are also bound by its BSD license:**
+
+ Copyright (c) 2006, Ivan Sagalaev
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are
+ permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of
+ conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ of conditions and the following disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ * Neither the name of highlight.js nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/doc/sfw_render_objects_template.html b/tools/doc/sfw_render_objects_template.html
new file mode 100644
index 0000000..8aa16ae
--- /dev/null
+++ b/tools/doc/sfw_render_objects_template.html
@@ -0,0 +1,1560 @@
+
+**SFW Docs**
+
+SFW - Simple Framework - https://github.com/Relintai/sfw
+
+Simple c++ app / game framework inspired by the single file c game engines
+and libraries, especially [FWK](https://github.com/r-lyeh/FWK).
+
+**Modules**: Core, Object, Render Core, Render Objects
+
+COMPILE
+====================================================================================
+
+$FILE_Compilation_Renderer$
+
+CORE
+====================================================================================
+
+Use SFWCore::setup();
to initialize the library.
+This is necessary as some components (Like PoolVector, and StringNames.) need additional setup.
+
+Use SFWCore::cleanup();
to de-initialize the library.
+
+Note that if you use the Application class, it's constructor will do this for you automatically.
+
+Also note that if you don't use classes that doens't rely on this you can get away by not calling it.
+
+
+Initialization
+------------------------------------------------------------------
+
+
+SFWCore
+
+ |||CLASS_SFWCore|||
+
+
+
+Enums
+------------------------------------------------------------------
+
+Errors
+
+
+Error
+
+|||ENUM_Error|||
+
+
+
+Keys
+
+
+KeyList
+
+|||ENUM_KeyList|||
+
+
+
+
+KeyModifierMask
+
+|||ENUM_KeyModifierMask|||
+
+
+
+
+ButtonList
+
+|||ENUM_ButtonList|||
+
+
+
+Other
+
+
+ClockDirection
+
+|||ENUM_ClockDirection|||
+
+
+
+
+Orientation
+
+|||ENUM_Orientation|||
+
+
+
+
+HAlign
+
+|||ENUM_HAlign|||
+
+
+
+
+VAlign
+
+|||ENUM_VAlign|||
+
+
+
+
+Margin
+
+|||ENUM_Margin|||
+
+
+
+
+Side
+
+|||ENUM_Side|||
+
+
+
+
+Corner
+
+|||ENUM_Corner|||
+
+
+
+Errors and Logging
+------------------------------------------------------------------
+
+
+Logging
+
+Use the provided macros:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define PRINT_TRACE(str)
+#define LOG_TRACE(...)
+
+#define PRINT_MSG(str)
+#define LOG_MSG(...)
+
+#define PRINT_WARN(str)
+#define LOG_WARN(...)
+
+#define PRINT_ERR(str)
+#define ERR_PRINT(str)
+#define LOG_ERR(...)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Error
+
+Uses these macros:
+
+Note that the library itself does not use exceptions, it uses these macros exclusively.
+
+Also note that you are not prevented you from using exceptions if you want to in your own code.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define ERR_FAIL_MSG(msg)
+
+#define ERR_FAIL_V(val)
+
+#define ERR_FAIL_V_MSG(val, msg)
+
+#define ERR_FAIL_INDEX(index, size)
+#define ERR_FAIL_INDEX_MSG(index, size, msg)
+
+#define ERR_FAIL_INDEX_V(index, size, val)
+#define ERR_FAIL_INDEX_V_MSG(index, size, val, msg)
+
+#define ERR_FAIL_COND(cond)
+#define ERR_FAIL_COND_MSG(cond, msg)
+
+#define ERR_FAIL_COND_V(cond, val)
+#define ERR_FAIL_COND_V_MSG(cond, val, msg)
+
+#define ERR_CONTINUE(cond)
+#define ERR_CONTINUE_MSG(cond, msg)
+
+#define ERR_CONTINUE_ACTION(cond, action)
+#define ERR_CONTINUE_ACTION_MSG(cond, action, msg)
+
+#define CRASH_INDEX(index, size)
+#define CRASH_BAD_INDEX(index, size)
+#define CRASH_BAD_UNSIGNED_INDEX(index, size)
+
+#define CRASH_COND(cond)
+#define CRASH_COND_MSG(cond, msg)
+
+#define CRASH_MSG(msg)
+#define CRASH_NOW(msg)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Asserts
+
+Use the provided macros:
+
+These should be 'free' checks for program flow and should not be needed in any releases, only used when the DEV_ENABLED define is set.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define DEV_CHECK(m_cond)
+#define DEV_CHECK_ONCE(m_cond)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+Math
+------------------------------------------------------------------
+
+
+Math
+
+|||CLASS_Math|||
+
+
+
+
+Vector2
+
+ |||STRUCT_Vector2|||
+
+
+
+
+Vector2i
+
+ |||STRUCT_Vector2i|||
+
+
+
+
+Vector3
+
+ |||STRUCT_Vector3|||
+
+
+
+
+Vector3i
+
+ |||STRUCT_Vector3i|||
+
+
+
+
+Vector4
+
+ |||STRUCT_Vector4|||
+
+
+
+
+Vector4i
+
+ |||STRUCT_Vector4i|||
+
+
+
+
+Color
+
+ |||STRUCT_Color|||
+
+
+
+
+Rect2
+
+ |||STRUCT_Rect2|||
+
+
+
+
+Rect2i
+
+ |||STRUCT_Rect2i|||
+
+
+
+
+Plane
+
+ |||STRUCT_Plane|||
+
+
+
+
+AABB
+
+ |||STRUCT_AABB|||
+
+
+
+
+Face3
+
+ |||STRUCT_Face3|||
+
+
+
+
+Transform2D
+
+ |||STRUCT_Transform2D|||
+
+
+
+
+Quaternion
+
+ |||STRUCT_Quaternion|||
+
+
+
+
+Basis
+
+ |||STRUCT_Basis|||
+
+
+
+
+Transform
+
+ |||STRUCT_Transform|||
+
+
+
+
+Projection
+
+ |||STRUCT_Projection|||
+
+
+
+
+RandomPCG
+
+ |||CLASS_RandomPCG|||
+
+
+
+String
+------------------------------------------------------------------
+
+Helper Structs
+
+
+CharRange
+
+ |||STRUCT_CharRange|||
+
+
+
+
+StrRange
+
+ |||STRUCT_StrRange|||
+
+
+
+
+NoCaseComparator
+
+ |||STRUCT_NoCaseComparator|||
+
+
+
+
+NaturalNoCaseComparator
+
+ |||STRUCT_NaturalNoCaseComparator|||
+
+
+
+Character Strings
+
+
+StaticCString
+
+ You can statically store a C string with this.
+
+ |||STRUCT_StaticCString|||
+
+
+
+
+Char16String
+
+ 16 bit (wide char) char string.
+
+ |||CLASS_Char16String|||
+
+
+
+
+CharString
+
+ 8 bit char string.
+
+ |||CLASS_CharString|||
+
+
+
+
+CharProxy
+
+ Properly stores a reference to an element in a String.
+
+ |||CLASS_CharProxy|||
+
+
+
+Main
+
+
+String
+
+ Main String class. This is what you normally use. Stores characters as 32 bit variables. It's COW (Copy on Write).
+
+ If you want to convert this to a char* use it's utf8() method.
+
+ |||CLASS_String|||
+
+
+
+
+StringName
+
+ A String that is optimized for comparisons using ==.
+
+ |||CLASS_StringName|||
+
+
+
+Containers
+------------------------------------------------------------------
+
+Helper Structs
+
+
+Pair
+
+ |||STRUCT_Pair|||
+
+
+
+
+KeyValue
+
+ |||STRUCT_KeyValue|||
+
+
+
+
+Comparator
+
+ |||STRUCT_Comparator|||
+
+
+
+Helper Classes
+
+
+CowData
+
+ A helper class that implements COW (Copy-on-Write) functionality.
+
+ |||CLASS_CowData|||
+
+
+
+
+VectorWriteProxy
+
+ |||CLASS_VectorWriteProxy|||
+
+
+
+Lists
+
+
+List
+
+ |||CLASS_List|||
+
+
+
+Vectors
+
+
+Vector
+
+ Vector with COW support.
+
+ |||CLASS_Vector|||
+
+
+
+
+PoolVector
+
+ Vector that does not fragment memory.
+
+ |||CLASS_PoolVector|||
+
+
+
+
+LocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ This is the most similar to std::vector.
+
+ |||CLASS_LocalVector|||
+
+
+
+
+LocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ |||CLASS_LocalVectori|||
+
+
+
+
+TightLocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVector|||
+
+
+
+
+TightLocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVectori|||
+
+
+
+Sets
+
+
+RBSet
+
+ |||CLASS_RBSet|||
+
+
+
+
+VSet
+
+ |||CLASS_VSet|||
+
+
+
+
+HashSet
+
+ |||CLASS_HashSet|||
+
+
+
+Maps
+
+
+RBMap
+
+ |||CLASS_RBMap|||
+
+
+
+
+VMap
+
+ |||CLASS_VMap|||
+
+
+
+HashMaps
+
+
+OGHashMap
+
+ Simple HashMap implementation.
+
+ |||CLASS_OGHashMap|||
+
+
+
+
+HashMap
+
+ HashMap implementation that uses open addressing with Robin Hood hashing.
+
+ Use this by default.
+
+ |||CLASS_HashMap|||
+
+
+
+
+OrderedHashMap
+
+ HashMap implementation that keeps the order of it's elements.
+
+ |||CLASS_OrderedHashMap|||
+
+
+
+Special
+
+
+SortArray
+
+ |||CLASS_SortArray|||
+
+
+
+
+RingBuffer
+
+ |||CLASS_RingBuffer|||
+
+
+
+
+Files
+------------------------------------------------------------------
+
+
+FileAccess
+
+ |||CLASS_FileAccess|||
+
+
+
+
+FileAccessRef
+
+ |||STRUCT_FileAccessRef|||
+
+
+
+
+DirAccess
+
+ |||CLASS_DirAccess|||
+
+
+
+
+DirAccessRef
+
+ |||STRUCT_DirAccessRef|||
+
+
+
+Time
+------------------------------------------------------------------
+
+
+SFWTime
+
+ |||CLASS_SFWTime|||
+
+
+
+Threading
+------------------------------------------------------------------
+
+Thread
+
+
+Thread
+
+ |||CLASS_Thread|||
+
+
+
+Atomics
+
+
+SafeNumeric
+
+ |||CLASS_SafeNumeric|||
+
+
+
+
+SafeFlag
+
+ |||CLASS_SafeFlag|||
+
+
+
+
+SafeRefCount
+
+ |||CLASS_SafeRefCount|||
+
+
+
+Mutex
+
+
+Mutex
+
+ Typedefined to Mutex.
+
+ |||CLASS_MutexImpl|||
+
+
+
+
+MutexLock
+
+ Helper class to lock and automatically release it on leaving scope.
+
+ |||CLASS_MutexLock|||
+
+
+
+RWLock
+
+
+RWLock
+
+ |||CLASS_RWLock|||
+
+
+
+
+RWLockRead
+
+ |||CLASS_RWLockRead|||
+
+
+
+
+RWLockWrite
+
+ |||CLASS_RWLockWrite|||
+
+
+
+SpinLock
+
+
+SpinLock
+
+ |||CLASS_SpinLock|||
+
+
+
+Networking
+------------------------------------------------------------------
+
+Socket
+
+
+InetAddress
+
+ |||CLASS_InetAddress|||
+
+
+
+
+Socket
+
+ |||CLASS_Socket|||
+
+
+
+Processes
+------------------------------------------------------------------
+
+
+SubProcess
+
+ |||CLASS_SubProcess|||
+
+
+
+
+SubProcessRef
+
+ |||STRUCT_SubProcessRef|||
+
+
+
+Memory
+------------------------------------------------------------------
+
+
+MemoryPool
+
+ |||STRUCT_MemoryPool|||
+
+
+
+
+PagedAllocator
+
+ |||CLASS_PagedAllocator|||
+
+
+
+
+PoolAllocator
+
+ |||CLASS_PoolAllocator|||
+
+
+
+OBJECT
+====================================================================================
+
+Object
+
+
+Object
+
+ |||CLASS_Object|||
+
+
+
+
+ObjectDB
+
+ |||CLASS_ObjectDB|||
+
+
+
+Reference
+
+
+Reference
+
+ |||CLASS_Reference|||
+
+
+
+
+Ref
+
+ |||CLASS_Ref|||
+
+
+
+Resource
+
+
+Resource
+
+ |||CLASS_Resource|||
+
+
+
+Variant
+
+
+Variant
+
+ |||CLASS_Variant|||
+
+
+
+
+Variant Containers
+
+
+Array
+
+ |||CLASS_Array|||
+
+
+
+
+Dictionary
+
+ |||CLASS_Dictionary|||
+
+
+
+Utilities
+
+
+Signal
+
+ |||CLASS_Signal|||
+
+
+
+
+CoreStringNames
+
+ |||CLASS_CoreStringNames|||
+
+
+
+RENDER CORE
+====================================================================================
+
+Application
+------------------------------------------------------------------
+
+
+Application
+
+ |||CLASS_Application|||
+
+
+
+
+Scene
+
+ |||CLASS_Scene|||
+
+
+
+
+AppWindow
+
+ |||CLASS_AppWindow|||
+
+
+
+Input
+------------------------------------------------------------------
+
+Singletons
+
+
+Input
+
+ |||CLASS_Input|||
+
+
+
+
+InputMap
+
+ |||CLASS_InputMap|||
+
+
+
+Events
+
+
+InputEvent
+
+ |||CLASS_InputEvent|||
+
+
+
+
+
+InputEventWithModifiers
+
+ |||CLASS_InputEventWithModifiers|||
+
+
+
+
+InputEventKey
+
+ |||CLASS_InputEventKey|||
+
+
+
+
+InputEventMouse
+
+ |||CLASS_InputEventMouse|||
+
+
+
+
+InputEventMouseButton
+
+ |||CLASS_InputEventMouseButton|||
+
+
+
+
+InputEventMouseMotion
+
+ |||CLASS_InputEventMouseMotion|||
+
+
+
+
+InputEventAction
+
+ |||CLASS_InputEventAction|||
+
+
+
+
+InputEventShortCut
+
+ |||CLASS_InputEventShortCut|||
+
+
+
+Utility
+
+
+ShortCut
+
+ |||CLASS_ShortCut|||
+
+
+
+Rendering
+------------------------------------------------------------------
+
+Images
+
+
+Image
+
+ |||CLASS_Image|||
+
+
+
+
+Texture
+
+ |||CLASS_Texture|||
+
+
+
+
+RenderTexture
+
+ |||CLASS_RenderTexture|||
+
+
+
+
+FrameBuffer
+
+ |||CLASS_FrameBuffer|||
+
+
+
+Meshes
+
+
+Mesh
+
+ |||CLASS_Mesh|||
+
+
+
+
+MeshUtils
+
+ |||CLASS_MeshUtils|||
+
+
+
+Shaders
+
+
+Shader
+
+ |||CLASS_Shader|||
+
+
+
+
+ShaderCache
+
+ |||CLASS_ShaderCache|||
+
+
+
+Fonts
+
+
+Font
+
+ |||CLASS_Font|||
+
+
+
+Materials
+
+
+Material
+
+ |||CLASS_Material|||
+
+
+
+Text Materials
+
+
+FontMaterial
+
+ |||CLASS_FontMaterial|||
+
+
+
+2D Materials
+
+
+ColorMaterial2D
+
+ |||CLASS_ColorMaterial2D|||
+
+
+
+
+TextureMaterial2D
+
+ |||CLASS_TextureMaterial2D|||
+
+
+
+3D Materials
+
+
+ColorMaterial
+
+ |||CLASS_ColorMaterial|||
+
+
+
+
+TextureMaterial
+
+ |||CLASS_TextureMaterial|||
+
+
+
+
+ColoredMaterial
+
+ |||CLASS_ColoredMaterial|||
+
+
+
+
+TransparentTextureMaterial
+
+ |||CLASS_TransparentTextureMaterial|||
+
+
+
+State
+
+
+RenderState
+
+ |||CLASS_RenderState|||
+
+
+
+Coordinate System
+
+******************************************************************
+*
+* +x
+* *--->--------. .------------.
+* | | | |
+* v +y | | |
+* | | +y ^ ^ +z |
+* | | |/ |
+* '------------' *--->--------'
+* / +x
+* -z
+* 2D 3D
+******************************************************************
+
+
+RENDER OBJECTS
+====================================================================================
+
+Text
+------------------------------------------------------------------
+
+Base
+
+
+Text2D
+
+ |||CLASS_Text2D|||
+
+
+
+2D
+------------------------------------------------------------------
+
+Base
+
+
+Object2D
+
+ |||CLASS_Object2D|||
+
+
+
+Camera
+
+
+Camera2D
+
+ |||CLASS_Camera2D|||
+
+
+
+Objects
+
+
+Sprite
+
+ |||CLASS_Sprite|||
+
+
+
+
+TileMap
+
+ |||CLASS_TileMap|||
+
+
+
+
+MeshInstance2D
+
+ |||CLASS_MeshInstance2D|||
+
+
+
+
+3D
+------------------------------------------------------------------
+
+Base
+
+
+Object3D
+
+ |||CLASS_Object3D|||
+
+
+
+Camera
+
+
+Camera3D
+
+ |||CLASS_Camera3D|||
+
+
+
+
+OrthographicCamera
+
+ |||CLASS_OrthographicCamera|||
+
+
+
+
+PerspectiveCamera
+
+ |||CLASS_PerspectiveCamera|||
+
+
+
+
+FrustumCamera
+
+ |||CLASS_FrustumCamera|||
+
+
+
+Objects
+
+
+MeshInstance3D
+
+ |||CLASS_MeshInstance3D|||
+
+
+
+
+ADVANCED
+====================================================================================
+
+There are a few remaining classes that were omitted from this document (Like allocators, hashers etc.),
+as you will normally won't need them. (If you do, you will likely just need to rread the source anyway.)
+
+LICENSES
+====================================================================================
+
+SFW
+
+
+SFW
+
+ MIT
+
+ Copyright (c) 2023-present Péter Magyar.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+
+
+GENERAL
+
+
+Pandemonium Engine
+
+ MIT
+
+ https://github.com/Relintai/pandemonium_engine
+
+
+ Copyright (c) 2022-present Péter Magyar.
+
+ Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
+
+ Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+
+FWK
+
+ https://github.com/r-lyeh/FWK
+
+ Unlicense
+
+ This software is released into the [public domain](https://unlicense.org/).
+
+ Also dual-licensed as [0-BSD](https://opensource.org/licenses/0BSD) or [MIT (No Attribution)](https://github.com/aws/mit-0)
+ for those countries where public domain is a concern (sigh).
+
+ Any contribution to this repository is implicitly subjected to the same release conditions aforementioned.
+
+
+
+CORE
+
+
+Trantor
+
+ Trantor
+
+ inet_address.h, .cpp, socket.h and .cpp originates from trantor (they were heavily modified):
+
+ Trantor - A non-blocking I/O based TCP network library, using C++14/17,
+ Copyright (c) 2016-2021, Tao An. All rights reserved.
+
+ https://github.com/an-tao/trantor
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Tao An nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ Muduo - A reactor-based C++ network library for Linux
+ Copyright (c) 2010, Shuo Chen. All rights reserved.
+
+ http://code.google.com/p/muduo/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Shuo Chen nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+PCG
+
+ pcg.h License:
+
+ *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org
+
+ Licensed under Apache License 2.0 (NO WARRANTY, etc. see website)
+
+
+
+$LICENSES_Renderer$
+
+DOCUMENTATION
+
+
+Markdeep
+
+ This documentation was generated using markdeep:
+
+ https://casual-effects.com/markdeep
+
+ **Markdeep is open source. You may use, extend, and redistribute Markdeep without charge under the terms of the BSD license:**
+
+ Copyright 2015-2019, Morgan McGuire
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ **Markdeep includes highlight.js, so you are also bound by its BSD license:**
+
+ Copyright (c) 2006, Ivan Sagalaev
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are
+ permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of
+ conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ of conditions and the following disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ * Neither the name of highlight.js nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/doc/sfwl_core_template.html b/tools/doc/sfwl_core_template.html
new file mode 100644
index 0000000..ba0a2df
--- /dev/null
+++ b/tools/doc/sfwl_core_template.html
@@ -0,0 +1,959 @@
+
+**SFW Docs**
+
+SFW - Simple Framework - Lite Version - https://github.com/Relintai/sfw
+
+Simple c++ app / game framework inspired by the single file c game engines
+and libraries, especially [FWK](https://github.com/r-lyeh/FWK).
+
+**Modules**: Core
+
+COMPILE
+====================================================================================
+
+$FILE_Compilation_No_Renderer$
+
+CORE
+====================================================================================
+
+Use SFWCore::setup();
to initialize the library.
+This is necessary as some components (Like PoolVector, and StringNames.) need additional setup.
+
+Use SFWCore::cleanup();
to de-initialize the library.
+
+Also note that if you don't use classes that doens't rely on this you can get away by not calling it.
+
+
+Initialization
+------------------------------------------------------------------
+
+
+SFWCore
+
+ |||CLASS_SFWCore|||
+
+
+
+Enums
+------------------------------------------------------------------
+
+Errors
+
+
+Error
+
+|||ENUM_Error|||
+
+
+
+Other
+
+
+ClockDirection
+
+|||ENUM_ClockDirection|||
+
+
+
+
+Orientation
+
+|||ENUM_Orientation|||
+
+
+
+
+HAlign
+
+|||ENUM_HAlign|||
+
+
+
+
+VAlign
+
+|||ENUM_VAlign|||
+
+
+
+
+Margin
+
+|||ENUM_Margin|||
+
+
+
+
+Side
+
+|||ENUM_Side|||
+
+
+
+
+Corner
+
+|||ENUM_Corner|||
+
+
+
+Errors and Logging
+------------------------------------------------------------------
+
+
+Logging
+
+Use the provided macros:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define PRINT_TRACE(str)
+#define LOG_TRACE(...)
+
+#define PRINT_MSG(str)
+#define LOG_MSG(...)
+
+#define PRINT_WARN(str)
+#define LOG_WARN(...)
+
+#define PRINT_ERR(str)
+#define ERR_PRINT(str)
+#define LOG_ERR(...)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Error
+
+Uses these macros:
+
+Note that the library itself does not use exceptions, it uses these macros exclusively.
+
+Also note that you are not prevented you from using exceptions if you want to in your own code.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define ERR_FAIL_MSG(msg)
+
+#define ERR_FAIL_V(val)
+
+#define ERR_FAIL_V_MSG(val, msg)
+
+#define ERR_FAIL_INDEX(index, size)
+#define ERR_FAIL_INDEX_MSG(index, size, msg)
+
+#define ERR_FAIL_INDEX_V(index, size, val)
+#define ERR_FAIL_INDEX_V_MSG(index, size, val, msg)
+
+#define ERR_FAIL_COND(cond)
+#define ERR_FAIL_COND_MSG(cond, msg)
+
+#define ERR_FAIL_COND_V(cond, val)
+#define ERR_FAIL_COND_V_MSG(cond, val, msg)
+
+#define ERR_CONTINUE(cond)
+#define ERR_CONTINUE_MSG(cond, msg)
+
+#define ERR_CONTINUE_ACTION(cond, action)
+#define ERR_CONTINUE_ACTION_MSG(cond, action, msg)
+
+#define CRASH_INDEX(index, size)
+#define CRASH_BAD_INDEX(index, size)
+#define CRASH_BAD_UNSIGNED_INDEX(index, size)
+
+#define CRASH_COND(cond)
+#define CRASH_COND_MSG(cond, msg)
+
+#define CRASH_MSG(msg)
+#define CRASH_NOW(msg)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Asserts
+
+Use the provided macros:
+
+These should be 'free' checks for program flow and should not be needed in any releases, only used when the DEV_ENABLED define is set.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define DEV_CHECK(m_cond)
+#define DEV_CHECK_ONCE(m_cond)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+Math
+------------------------------------------------------------------
+
+
+Math
+
+|||CLASS_Math|||
+
+
+
+
+Vector2i
+
+ |||STRUCT_Vector2i|||
+
+
+
+
+Rect2i
+
+ |||STRUCT_Rect2i|||
+
+
+
+
+Color
+
+ |||STRUCT_Color|||
+
+
+
+
+RandomPCG
+
+ |||CLASS_RandomPCG|||
+
+
+
+String
+------------------------------------------------------------------
+
+Helper Structs
+
+
+CharRange
+
+ |||STRUCT_CharRange|||
+
+
+
+
+StrRange
+
+ |||STRUCT_StrRange|||
+
+
+
+
+NoCaseComparator
+
+ |||STRUCT_NoCaseComparator|||
+
+
+
+
+NaturalNoCaseComparator
+
+ |||STRUCT_NaturalNoCaseComparator|||
+
+
+
+Character Strings
+
+
+StaticCString
+
+ You can statically store a C string with this.
+
+ |||STRUCT_StaticCString|||
+
+
+
+
+Char16String
+
+ 16 bit (wide char) char string.
+
+ |||CLASS_Char16String|||
+
+
+
+
+CharString
+
+ 8 bit char string.
+
+ |||CLASS_CharString|||
+
+
+
+
+CharProxy
+
+ Properly stores a reference to an element in a String.
+
+ |||CLASS_CharProxy|||
+
+
+
+Main
+
+
+String
+
+ Main String class. This is what you normally use. Stores characters as 32 bit variables. It's COW (Copy on Write).
+
+ If you want to convert this to a char* use it's utf8() method.
+
+ |||CLASS_String|||
+
+
+
+
+StringName
+
+ A String that is optimized for comparisons using ==.
+
+ |||CLASS_StringName|||
+
+
+
+Containers
+------------------------------------------------------------------
+
+Helper Structs
+
+
+Pair
+
+ |||STRUCT_Pair|||
+
+
+
+
+KeyValue
+
+ |||STRUCT_KeyValue|||
+
+
+
+
+Comparator
+
+ |||STRUCT_Comparator|||
+
+
+
+Helper Classes
+
+
+CowData
+
+ A helper class that implements COW (Copy-on-Write) functionality.
+
+ |||CLASS_CowData|||
+
+
+
+
+VectorWriteProxy
+
+ |||CLASS_VectorWriteProxy|||
+
+
+
+Lists
+
+
+List
+
+ |||CLASS_List|||
+
+
+
+Vectors
+
+
+Vector
+
+ Vector with COW support.
+
+ |||CLASS_Vector|||
+
+
+
+
+PoolVector
+
+ Vector that does not fragment memory.
+
+ |||CLASS_PoolVector|||
+
+
+
+
+LocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ This is the most similar to std::vector.
+
+ |||CLASS_LocalVector|||
+
+
+
+
+LocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ |||CLASS_LocalVectori|||
+
+
+
+
+TightLocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVector|||
+
+
+
+
+TightLocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVectori|||
+
+
+
+Sets
+
+
+RBSet
+
+ |||CLASS_RBSet|||
+
+
+
+
+VSet
+
+ |||CLASS_VSet|||
+
+
+
+
+HashSet
+
+ |||CLASS_HashSet|||
+
+
+
+Maps
+
+
+RBMap
+
+ |||CLASS_RBMap|||
+
+
+
+
+VMap
+
+ |||CLASS_VMap|||
+
+
+
+HashMaps
+
+
+OGHashMap
+
+ Simple HashMap implementation.
+
+ |||CLASS_OGHashMap|||
+
+
+
+
+HashMap
+
+ HashMap implementation that uses open addressing with Robin Hood hashing.
+
+ Use this by default.
+
+ |||CLASS_HashMap|||
+
+
+
+
+OrderedHashMap
+
+ HashMap implementation that keeps the order of it's elements.
+
+ |||CLASS_OrderedHashMap|||
+
+
+
+Special
+
+
+SortArray
+
+ |||CLASS_SortArray|||
+
+
+
+
+RingBuffer
+
+ |||CLASS_RingBuffer|||
+
+
+
+
+Files
+------------------------------------------------------------------
+
+
+FileAccess
+
+ |||CLASS_FileAccess|||
+
+
+
+
+FileAccessRef
+
+ |||STRUCT_FileAccessRef|||
+
+
+
+
+DirAccess
+
+ |||CLASS_DirAccess|||
+
+
+
+
+DirAccessRef
+
+ |||STRUCT_DirAccessRef|||
+
+
+
+Time
+------------------------------------------------------------------
+
+
+SFWTime
+
+ |||CLASS_SFWTime|||
+
+
+
+Threading
+------------------------------------------------------------------
+
+Thread
+
+
+Thread
+
+ |||CLASS_Thread|||
+
+
+
+Atomics
+
+
+SafeNumeric
+
+ |||CLASS_SafeNumeric|||
+
+
+
+
+SafeFlag
+
+ |||CLASS_SafeFlag|||
+
+
+
+
+SafeRefCount
+
+ |||CLASS_SafeRefCount|||
+
+
+
+Mutex
+
+
+Mutex
+
+ Typedefined to Mutex.
+
+ |||CLASS_MutexImpl|||
+
+
+
+
+MutexLock
+
+ Helper class to lock and automatically release it on leaving scope.
+
+ |||CLASS_MutexLock|||
+
+
+
+RWLock
+
+
+RWLock
+
+ |||CLASS_RWLock|||
+
+
+
+
+RWLockRead
+
+ |||CLASS_RWLockRead|||
+
+
+
+
+RWLockWrite
+
+ |||CLASS_RWLockWrite|||
+
+
+
+SpinLock
+
+
+SpinLock
+
+ |||CLASS_SpinLock|||
+
+
+
+Networking
+------------------------------------------------------------------
+
+Socket
+
+
+InetAddress
+
+ |||CLASS_InetAddress|||
+
+
+
+
+Socket
+
+ |||CLASS_Socket|||
+
+
+
+Processes
+------------------------------------------------------------------
+
+
+SubProcess
+
+ |||CLASS_SubProcess|||
+
+
+
+
+SubProcessRef
+
+ |||STRUCT_SubProcessRef|||
+
+
+
+Memory
+------------------------------------------------------------------
+
+
+MemoryPool
+
+ |||STRUCT_MemoryPool|||
+
+
+
+
+PagedAllocator
+
+ |||CLASS_PagedAllocator|||
+
+
+
+
+PoolAllocator
+
+ |||CLASS_PoolAllocator|||
+
+
+
+ADVANCED
+====================================================================================
+
+There are a few remaining classes that were omitted from this document (Like allocators, hashers etc.),
+as you will normally won't need them. (If you do, you will likely just need to rread the source anyway.)
+
+LICENSES
+====================================================================================
+
+SFW
+
+
+SFW
+
+ MIT
+
+ Copyright (c) 2023-present Péter Magyar.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+
+
+GENERAL
+
+
+Pandemonium Engine
+
+ MIT
+
+ https://github.com/Relintai/pandemonium_engine
+
+
+ Copyright (c) 2022-present Péter Magyar.
+
+ Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
+
+ Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+
+FWK
+
+ https://github.com/r-lyeh/FWK
+
+ Unlicense
+
+ This software is released into the [public domain](https://unlicense.org/).
+
+ Also dual-licensed as [0-BSD](https://opensource.org/licenses/0BSD) or [MIT (No Attribution)](https://github.com/aws/mit-0)
+ for those countries where public domain is a concern (sigh).
+
+ Any contribution to this repository is implicitly subjected to the same release conditions aforementioned.
+
+
+
+CORE
+
+
+Trantor
+
+ Trantor
+
+ inet_address.h, .cpp, socket.h and .cpp originates from trantor (they were heavily modified):
+
+ Trantor - A non-blocking I/O based TCP network library, using C++14/17,
+ Copyright (c) 2016-2021, Tao An. All rights reserved.
+
+ https://github.com/an-tao/trantor
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Tao An nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ Muduo - A reactor-based C++ network library for Linux
+ Copyright (c) 2010, Shuo Chen. All rights reserved.
+
+ http://code.google.com/p/muduo/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Shuo Chen nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+PCG
+
+ pcg.h License:
+
+ *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org
+
+ Licensed under Apache License 2.0 (NO WARRANTY, etc. see website)
+
+
+
+DOCUMENTATION
+
+
+Markdeep
+
+ This documentation was generated using markdeep:
+
+ https://casual-effects.com/markdeep
+
+ **Markdeep is open source. You may use, extend, and redistribute Markdeep without charge under the terms of the BSD license:**
+
+ Copyright 2015-2019, Morgan McGuire
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ **Markdeep includes highlight.js, so you are also bound by its BSD license:**
+
+ Copyright (c) 2006, Ivan Sagalaev
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are
+ permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of
+ conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ of conditions and the following disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ * Neither the name of highlight.js nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/doc/sfwl_full_template.html b/tools/doc/sfwl_full_template.html
new file mode 100644
index 0000000..5c5d112
--- /dev/null
+++ b/tools/doc/sfwl_full_template.html
@@ -0,0 +1,1045 @@
+
+**SFW Docs**
+
+SFW - Simple Framework - Lite Version - https://github.com/Relintai/sfw
+
+Simple c++ app / game framework inspired by the single file c game engines
+and libraries, especially [FWK](https://github.com/r-lyeh/FWK).
+
+**Modules**: Core, Object
+
+COMPILE
+====================================================================================
+
+$FILE_Compilation_No_Renderer$
+
+CORE
+====================================================================================
+
+Use SFWCore::setup();
to initialize the library.
+This is necessary as some components (Like PoolVector, and StringNames.) need additional setup.
+
+Use SFWCore::cleanup();
to de-initialize the library.
+
+Also note that if you don't use classes that doens't rely on this you can get away by not calling it.
+
+
+Initialization
+------------------------------------------------------------------
+
+
+SFWCore
+
+ |||CLASS_SFWCore|||
+
+
+
+Enums
+------------------------------------------------------------------
+
+Errors
+
+
+Error
+
+|||ENUM_Error|||
+
+
+
+Other
+
+
+ClockDirection
+
+|||ENUM_ClockDirection|||
+
+
+
+
+Orientation
+
+|||ENUM_Orientation|||
+
+
+
+
+HAlign
+
+|||ENUM_HAlign|||
+
+
+
+
+VAlign
+
+|||ENUM_VAlign|||
+
+
+
+
+Margin
+
+|||ENUM_Margin|||
+
+
+
+
+Side
+
+|||ENUM_Side|||
+
+
+
+
+Corner
+
+|||ENUM_Corner|||
+
+
+
+Errors and Logging
+------------------------------------------------------------------
+
+
+Logging
+
+Use the provided macros:
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define PRINT_TRACE(str)
+#define LOG_TRACE(...)
+
+#define PRINT_MSG(str)
+#define LOG_MSG(...)
+
+#define PRINT_WARN(str)
+#define LOG_WARN(...)
+
+#define PRINT_ERR(str)
+#define ERR_PRINT(str)
+#define LOG_ERR(...)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Error
+
+Uses these macros:
+
+Note that the library itself does not use exceptions, it uses these macros exclusively.
+
+Also note that you are not prevented you from using exceptions if you want to in your own code.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define ERR_FAIL_MSG(msg)
+
+#define ERR_FAIL_V(val)
+
+#define ERR_FAIL_V_MSG(val, msg)
+
+#define ERR_FAIL_INDEX(index, size)
+#define ERR_FAIL_INDEX_MSG(index, size, msg)
+
+#define ERR_FAIL_INDEX_V(index, size, val)
+#define ERR_FAIL_INDEX_V_MSG(index, size, val, msg)
+
+#define ERR_FAIL_COND(cond)
+#define ERR_FAIL_COND_MSG(cond, msg)
+
+#define ERR_FAIL_COND_V(cond, val)
+#define ERR_FAIL_COND_V_MSG(cond, val, msg)
+
+#define ERR_CONTINUE(cond)
+#define ERR_CONTINUE_MSG(cond, msg)
+
+#define ERR_CONTINUE_ACTION(cond, action)
+#define ERR_CONTINUE_ACTION_MSG(cond, action, msg)
+
+#define CRASH_INDEX(index, size)
+#define CRASH_BAD_INDEX(index, size)
+#define CRASH_BAD_UNSIGNED_INDEX(index, size)
+
+#define CRASH_COND(cond)
+#define CRASH_COND_MSG(cond, msg)
+
+#define CRASH_MSG(msg)
+#define CRASH_NOW(msg)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+
+Asserts
+
+Use the provided macros:
+
+These should be 'free' checks for program flow and should not be needed in any releases, only used when the DEV_ENABLED define is set.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C
+#define DEV_CHECK(m_cond)
+#define DEV_CHECK_ONCE(m_cond)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+
+
+Math
+------------------------------------------------------------------
+
+
+Math
+
+|||CLASS_Math|||
+
+
+
+
+Vector2i
+
+ |||STRUCT_Vector2i|||
+
+
+
+
+Rect2i
+
+ |||STRUCT_Rect2i|||
+
+
+
+
+Color
+
+ |||STRUCT_Color|||
+
+
+
+
+RandomPCG
+
+ |||CLASS_RandomPCG|||
+
+
+
+String
+------------------------------------------------------------------
+
+Helper Structs
+
+
+CharRange
+
+ |||STRUCT_CharRange|||
+
+
+
+
+StrRange
+
+ |||STRUCT_StrRange|||
+
+
+
+
+NoCaseComparator
+
+ |||STRUCT_NoCaseComparator|||
+
+
+
+
+NaturalNoCaseComparator
+
+ |||STRUCT_NaturalNoCaseComparator|||
+
+
+
+Character Strings
+
+
+StaticCString
+
+ You can statically store a C string with this.
+
+ |||STRUCT_StaticCString|||
+
+
+
+
+Char16String
+
+ 16 bit (wide char) char string.
+
+ |||CLASS_Char16String|||
+
+
+
+
+CharString
+
+ 8 bit char string.
+
+ |||CLASS_CharString|||
+
+
+
+
+CharProxy
+
+ Properly stores a reference to an element in a String.
+
+ |||CLASS_CharProxy|||
+
+
+
+Main
+
+
+String
+
+ Main String class. This is what you normally use. Stores characters as 32 bit variables. It's COW (Copy on Write).
+
+ If you want to convert this to a char* use it's utf8() method.
+
+ |||CLASS_String|||
+
+
+
+
+StringName
+
+ A String that is optimized for comparisons using ==.
+
+ |||CLASS_StringName|||
+
+
+
+Containers
+------------------------------------------------------------------
+
+Helper Structs
+
+
+Pair
+
+ |||STRUCT_Pair|||
+
+
+
+
+KeyValue
+
+ |||STRUCT_KeyValue|||
+
+
+
+
+Comparator
+
+ |||STRUCT_Comparator|||
+
+
+
+Helper Classes
+
+
+CowData
+
+ A helper class that implements COW (Copy-on-Write) functionality.
+
+ |||CLASS_CowData|||
+
+
+
+
+VectorWriteProxy
+
+ |||CLASS_VectorWriteProxy|||
+
+
+
+Lists
+
+
+List
+
+ |||CLASS_List|||
+
+
+
+Vectors
+
+
+Vector
+
+ Vector with COW support.
+
+ |||CLASS_Vector|||
+
+
+
+
+PoolVector
+
+ Vector that does not fragment memory.
+
+ |||CLASS_PoolVector|||
+
+
+
+
+LocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ This is the most similar to std::vector.
+
+ |||CLASS_LocalVector|||
+
+
+
+
+LocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Saves on allocation calls by overallocating memory.
+
+ |||CLASS_LocalVectori|||
+
+
+
+
+TightLocalVector
+
+ Simple vector. Uses unsigned ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVector|||
+
+
+
+
+TightLocalVectori
+
+ Simple vector. Uses signed ints as indexes.
+
+ Unlike LocalVector it always only allocates the space it needs.
+
+ |||CLASS_TightLocalVectori|||
+
+
+
+Sets
+
+
+RBSet
+
+ |||CLASS_RBSet|||
+
+
+
+
+VSet
+
+ |||CLASS_VSet|||
+
+
+
+
+HashSet
+
+ |||CLASS_HashSet|||
+
+
+
+Maps
+
+
+RBMap
+
+ |||CLASS_RBMap|||
+
+
+
+
+VMap
+
+ |||CLASS_VMap|||
+
+
+
+HashMaps
+
+
+OGHashMap
+
+ Simple HashMap implementation.
+
+ |||CLASS_OGHashMap|||
+
+
+
+
+HashMap
+
+ HashMap implementation that uses open addressing with Robin Hood hashing.
+
+ Use this by default.
+
+ |||CLASS_HashMap|||
+
+
+
+
+OrderedHashMap
+
+ HashMap implementation that keeps the order of it's elements.
+
+ |||CLASS_OrderedHashMap|||
+
+
+
+Special
+
+
+SortArray
+
+ |||CLASS_SortArray|||
+
+
+
+
+RingBuffer
+
+ |||CLASS_RingBuffer|||
+
+
+
+
+Files
+------------------------------------------------------------------
+
+
+FileAccess
+
+ |||CLASS_FileAccess|||
+
+
+
+
+FileAccessRef
+
+ |||STRUCT_FileAccessRef|||
+
+
+
+
+DirAccess
+
+ |||CLASS_DirAccess|||
+
+
+
+
+DirAccessRef
+
+ |||STRUCT_DirAccessRef|||
+
+
+
+Time
+------------------------------------------------------------------
+
+
+SFWTime
+
+ |||CLASS_SFWTime|||
+
+
+
+Threading
+------------------------------------------------------------------
+
+Thread
+
+
+Thread
+
+ |||CLASS_Thread|||
+
+
+
+Atomics
+
+
+SafeNumeric
+
+ |||CLASS_SafeNumeric|||
+
+
+
+
+SafeFlag
+
+ |||CLASS_SafeFlag|||
+
+
+
+
+SafeRefCount
+
+ |||CLASS_SafeRefCount|||
+
+
+
+Mutex
+
+
+Mutex
+
+ Typedefined to Mutex.
+
+ |||CLASS_MutexImpl|||
+
+
+
+
+MutexLock
+
+ Helper class to lock and automatically release it on leaving scope.
+
+ |||CLASS_MutexLock|||
+
+
+
+RWLock
+
+
+RWLock
+
+ |||CLASS_RWLock|||
+
+
+
+
+RWLockRead
+
+ |||CLASS_RWLockRead|||
+
+
+
+
+RWLockWrite
+
+ |||CLASS_RWLockWrite|||
+
+
+
+SpinLock
+
+
+SpinLock
+
+ |||CLASS_SpinLock|||
+
+
+
+Networking
+------------------------------------------------------------------
+
+Socket
+
+
+InetAddress
+
+ |||CLASS_InetAddress|||
+
+
+
+
+Socket
+
+ |||CLASS_Socket|||
+
+
+
+Processes
+------------------------------------------------------------------
+
+
+SubProcess
+
+ |||CLASS_SubProcess|||
+
+
+
+
+SubProcessRef
+
+ |||STRUCT_SubProcessRef|||
+
+
+
+Memory
+------------------------------------------------------------------
+
+
+MemoryPool
+
+ |||STRUCT_MemoryPool|||
+
+
+
+
+PagedAllocator
+
+ |||CLASS_PagedAllocator|||
+
+
+
+
+PoolAllocator
+
+ |||CLASS_PoolAllocator|||
+
+
+
+OBJECT
+====================================================================================
+
+Object
+
+
+Object
+
+ |||CLASS_Object|||
+
+
+
+
+ObjectDB
+
+ |||CLASS_ObjectDB|||
+
+
+
+Reference
+
+
+Reference
+
+ |||CLASS_Reference|||
+
+
+
+
+Ref
+
+ |||CLASS_Ref|||
+
+
+
+Resource
+
+
+Resource
+
+ |||CLASS_Resource|||
+
+
+
+Variant
+
+
+Variant
+
+ |||CLASS_Variant|||
+
+
+
+
+Variant Containers
+
+
+Array
+
+ |||CLASS_Array|||
+
+
+
+
+Dictionary
+
+ |||CLASS_Dictionary|||
+
+
+
+Utilities
+
+
+Signal
+
+ |||CLASS_Signal|||
+
+
+
+
+CoreStringNames
+
+ |||CLASS_CoreStringNames|||
+
+
+
+ADVANCED
+====================================================================================
+
+There are a few remaining classes that were omitted from this document (Like allocators, hashers etc.),
+as you will normally won't need them. (If you do, you will likely just need to rread the source anyway.)
+
+LICENSES
+====================================================================================
+
+SFW
+
+
+SFW
+
+ MIT
+
+ Copyright (c) 2023-present Péter Magyar.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+
+
+GENERAL
+
+
+Pandemonium Engine
+
+ MIT
+
+ https://github.com/Relintai/pandemonium_engine
+
+
+ Copyright (c) 2022-present Péter Magyar.
+
+ Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
+
+ Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+
+FWK
+
+ https://github.com/r-lyeh/FWK
+
+ Unlicense
+
+ This software is released into the [public domain](https://unlicense.org/).
+
+ Also dual-licensed as [0-BSD](https://opensource.org/licenses/0BSD) or [MIT (No Attribution)](https://github.com/aws/mit-0)
+ for those countries where public domain is a concern (sigh).
+
+ Any contribution to this repository is implicitly subjected to the same release conditions aforementioned.
+
+
+
+CORE
+
+
+Trantor
+
+ Trantor
+
+ inet_address.h, .cpp, socket.h and .cpp originates from trantor (they were heavily modified):
+
+ Trantor - A non-blocking I/O based TCP network library, using C++14/17,
+ Copyright (c) 2016-2021, Tao An. All rights reserved.
+
+ https://github.com/an-tao/trantor
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Tao An nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ Muduo - A reactor-based C++ network library for Linux
+ Copyright (c) 2010, Shuo Chen. All rights reserved.
+
+ http://code.google.com/p/muduo/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of Shuo Chen nor the names of other contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+PCG
+
+ pcg.h License:
+
+ *Really* minimal PCG32 code / (c) 2014 M.E. O'Neill / pcg-random.org
+
+ Licensed under Apache License 2.0 (NO WARRANTY, etc. see website)
+
+
+
+DOCUMENTATION
+
+
+Markdeep
+
+ This documentation was generated using markdeep:
+
+ https://casual-effects.com/markdeep
+
+ **Markdeep is open source. You may use, extend, and redistribute Markdeep without charge under the terms of the BSD license:**
+
+ Copyright 2015-2019, Morgan McGuire
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or other
+ materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ **Markdeep includes highlight.js, so you are also bound by its BSD license:**
+
+ Copyright (c) 2006, Ivan Sagalaev
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are
+ permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of
+ conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ of conditions and the following disclaimer in the documentation and/or other materials
+ provided with the distribution.
+ * Neither the name of highlight.js nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+
+
+
+
+
+