From c853f4650dd7e523e128e9c55b82e3bbc1cb0691 Mon Sep 17 00:00:00 2001
From: Abdelrahman Said <said.abdelrahman89@gmail.com>
Date: Sat, 30 Dec 2023 19:43:04 +0000
Subject: [PATCH] Add README.md

---
 README.md | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
 create mode 100644 README.md

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..c8781ee
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# Generics/Metaprogramming in C
+
+Exploring different ideas for implementing generics in C.
+
+[01_no_metaprogramming](./01_no_metaprogramming) is the result of the code if implemented manually.
+
+[02_macros](./02_macros) is an implementation that uses simple macros to define 2D and 3D vectors for different data types.
+
+[03_xmacros](./03_xmacros) is an implementation that relies on X macros to allow for defining any N-dimensional vector for different data types. In this case, it is only 2D and 3D vectors, but it can be easily expanded to other dimensions.
+
+## General assessment of the different techniques
+
+| Technique             | Readability | Debugging  | Maintenance | Extensibility | Score    |
+| 01_no_metaprogramming | ⭐⭐⭐⭐⭐  | ⭐⭐⭐⭐⭐ | ⭐⭐        | ⭐            | 3.25 / 5 |
+| 02_macros             | ⭐⭐⭐      | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐    | ⭐⭐⭐        | 3.75 / 5 |
+| 03_xmacros            | ⭐          | ⭐⭐       | ⭐⭐⭐      | ⭐⭐⭐⭐⭐    | 2.75 / 5 |