From ca01498cb297d142ae3e10445130d88cbb9fec20 Mon Sep 17 00:00:00 2001
From: Nikola Petrov <nikola@petrovv.com>
Date: Sat, 4 Jan 2025 13:13:15 +0100
Subject: [PATCH] Put DNa functions in DNA namespace

---
 inc/values/Dna.hpp        | 11 +++--
 inc/values/mrand.hpp      |  2 -
 src/values/Dna.cpp        | 88 ++++++++++++++++++++-------------------
 src/values/DnaManager.cpp | 10 ++---
 4 files changed, 58 insertions(+), 53 deletions(-)

diff --git a/inc/values/Dna.hpp b/inc/values/Dna.hpp
index 61363f1..4f38e86 100644
--- a/inc/values/Dna.hpp
+++ b/inc/values/Dna.hpp
@@ -53,8 +53,11 @@ struct Dna
   uint8_t colorSet;
   Branch branches[MAX_DEPTH];
 };
-void newDna(Dna *dna, uint128 *state);
-void makeChild(Dna *p1, Dna *p2, Dna *c, uint128 *state);
-void clone(Dna *p1, Dna *c, uint128 *state);
-void mutate(Dna *dna, uint32_t num, uint128 *state);
+namespace DNA
+{
+  void newDna(Dna *dna, uint128 *state);
+  void makeChild(Dna *p1, Dna *p2, Dna *c, uint128 *state);
+  void clone(Dna *p1, Dna *c, uint128 *state);
+  void mutate(Dna *dna, uint32_t num, uint128 *state);
+}
 #endif /* DNA_H */
diff --git a/inc/values/mrand.hpp b/inc/values/mrand.hpp
index 779482c..32ed2b7 100644
--- a/inc/values/mrand.hpp
+++ b/inc/values/mrand.hpp
@@ -5,9 +5,7 @@ struct uint128;
 namespace mrand
 {
   void setSeed(unsigned long long seed);
-  // int getValue(int min, int max);
   float getFloat(uint128 *state);
-  // float getFloat();
   int getValue(int min, int max, uint128 *state);
   uint32_t getInt();
 }
\ No newline at end of file
diff --git a/src/values/Dna.cpp b/src/values/Dna.cpp
index 288e458..09251ce 100644
--- a/src/values/Dna.cpp
+++ b/src/values/Dna.cpp
@@ -6,59 +6,63 @@
 
 #include <raymath.h>
 
-void newDna(Dna *dna, uint128 *state)
+namespace DNA
 {
-  uint8_t *array = (uint8_t *)dna;
-  for (size_t i = 0; i < sizeof(Dna); i++)
-  {
-    array[i] = mrand::getValue(0, 255, state);
-  }
-  return;
-}
 
-void makeChild(Dna *p1, Dna *p2, Dna *c, uint128 *state)
-{
-  uint8_t *p1a = (uint8_t *)p1;
-  uint8_t *p2a = (uint8_t *)p2;
-  uint8_t *ca = (uint8_t *)c;
-  for (size_t i = 0; i < sizeof(Dna); i++)
+  void newDna(Dna *dna, uint128 *state)
   {
-    int val = mrand::getValue(0, 1, state);
-    if (val == 0)
+    uint8_t *array = (uint8_t *)dna;
+    for (size_t i = 0; i < sizeof(Dna); i++)
     {
-      ca[i] = p1a[i];
-    }
-    else
-    {
-      ca[i] = p2a[i];
+      array[i] = mrand::getValue(0, 255, state);
     }
+    return;
   }
-}
 
-void clone(Dna *p1, Dna *c, uint128 *state)
-{
-  uint8_t *p1a = (uint8_t *)p1;
+  void makeChild(Dna *p1, Dna *p2, Dna *c, uint128 *state)
+  {
+    uint8_t *p1a = (uint8_t *)p1;
+    uint8_t *p2a = (uint8_t *)p2;
+    uint8_t *ca = (uint8_t *)c;
+    for (size_t i = 0; i < sizeof(Dna); i++)
+    {
+      int val = mrand::getValue(0, 1, state);
+      if (val == 0)
+      {
+        ca[i] = p1a[i];
+      }
+      else
+      {
+        ca[i] = p2a[i];
+      }
+    }
+  }
 
-  uint8_t *ca = (uint8_t *)c;
-  for (size_t i = 0; i < sizeof(Dna); i++)
+  void clone(Dna *p1, Dna *c, uint128 *state)
   {
-    int val = mrand::getValue(0, 1, state);
-    if (val == 0)
+    uint8_t *p1a = (uint8_t *)p1;
+
+    uint8_t *ca = (uint8_t *)c;
+    for (size_t i = 0; i < sizeof(Dna); i++)
     {
-      ca[i] = p1a[i];
-    }
-    else
-    {
-      ca[i] = mrand::getValue(0, 255, state);
+      int val = mrand::getValue(0, 1, state);
+      if (val == 0)
+      {
+        ca[i] = p1a[i];
+      }
+      else
+      {
+        ca[i] = mrand::getValue(0, 255, state);
+      }
     }
   }
-}
-void mutate(Dna *dna, uint32_t num, uint128 *state)
-{
-  uint8_t *array = (uint8_t *)dna;
-  for (size_t i = 0; i < num; i++)
+  void mutate(Dna *dna, uint32_t num, uint128 *state)
   {
-    int pos = mrand::getValue(0, sizeof(Dna), state);
-    array[pos] = mrand::getValue(0, 255, state);
+    uint8_t *array = (uint8_t *)dna;
+    for (size_t i = 0; i < num; i++)
+    {
+      int pos = mrand::getValue(0, sizeof(Dna), state);
+      array[pos] = mrand::getValue(0, 255, state);
+    }
   }
-}
+}
\ No newline at end of file
diff --git a/src/values/DnaManager.cpp b/src/values/DnaManager.cpp
index 2b1b8c8..e3cf150 100644
--- a/src/values/DnaManager.cpp
+++ b/src/values/DnaManager.cpp
@@ -11,7 +11,7 @@ void DnaManager::init()
   vector.resize(NUM_PER_GEN);
   for (std::size_t i = 0; i < NUM_PER_GEN; i++)
   {
-    newDna(&vector[i], &randSeed);
+    DNA::newDna(&vector[i], &randSeed);
     queued.push_back(&vector[i]);
   }
 }
@@ -75,7 +75,7 @@ void DnaManager::newGen()
   {
     for (std::size_t i = 0; i < NUM_PER_GEN; i++)
     {
-      newDna(&vector[i], &randSeed);
+      DNA::newDna(&vector[i], &randSeed);
       queued.push_back(&vector[i]);
     }
     disliked.clear();
@@ -93,7 +93,7 @@ void DnaManager::newGen()
 
     for (auto &&i : disliked)
     {
-      clone(front, i, &randSeed);
+      DNA::clone(front, i, &randSeed);
       queued.push_back(i);
     }
 
@@ -115,7 +115,7 @@ void DnaManager::newGen()
 
       Dna *p1p = liked[p1];
       Dna *p2p = liked[p2];
-      makeChild(p1p, p2p, i, &randSeed);
+      DNA::makeChild(p1p, p2p, i, &randSeed);
       queued.push_back(i);
     }
   }
@@ -124,7 +124,7 @@ void DnaManager::newGen()
   {
     for (auto &&i : queued)
     {
-      mutate(i, NUM_OF_MUT, &randSeed);
+      DNA::mutate(i, NUM_OF_MUT, &randSeed);
     }
     return;
   }