summaryrefslogtreecommitdiff
path: root/docs/modules.md
diff options
context:
space:
mode:
authoronelin <oscar@nelin.dk>2025-10-31 22:31:28 +0000
committeronelin <oscar@nelin.dk>2025-10-31 22:32:56 +0000
commit32f41c2d684b7f1021f6d4368515379c6b279059 (patch)
treed201970fdbfb882f39a04c33feaf39ca080fd3a0 /docs/modules.md
parent83042cef13c807d62ba1ed8a4068a68f6acf0ab1 (diff)
Add some wishful thinking
Diffstat (limited to 'docs/modules.md')
-rw-r--r--docs/modules.md39
1 files changed, 39 insertions, 0 deletions
diff --git a/docs/modules.md b/docs/modules.md
new file mode 100644
index 0000000..c3c1a07
--- /dev/null
+++ b/docs/modules.md
@@ -0,0 +1,39 @@
+# Modules
+
+This document aims to document how the engine modules are designed to work
+together.
+
+_This is not a description of the current state of this project, but rather
+where I want it to be._
+
+A module provides some basic functionality to the engine. Since that is
+incredibly broad, we define specific resources and functions to be implemented
+by each module in order to function with daw.
+
+
+## Goals
+
+The design and implementation of the module system aims to provide the
+following features:
+
+1. Hot reloading modules.
+2. Provide a implementation and platform agnostic interface.
+3. Allow implementations to be easily interchangeable.
+
+
+## Types
+
+DAW defines different module types, each type is a definition of a _struct_ that
+a module of that specific type must implement. It usually consists of function
+pointers that are called by the core of the engine. A specific function could be
+the `window_init` function, required by the `Platform` module type.
+
+
+## TODO
+
+This module system is, at this current commit in time, nowhere near the above
+description.
+
+Once all of this is done in code I want to make sure the static compilation
+configuration does not rely on function pointers, but on functions
+themselves. This is probably done through macros.