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 |