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; }