diff options
Diffstat (limited to 'starts/meaning-vm')
-rw-r--r-- | starts/meaning-vm/habit-starts/rhythm.cpp | 3 | ||||
-rw-r--r-- | starts/meaning-vm/level-2/level-2.hpp | 3 | ||||
-rw-r--r-- | starts/meaning-vm/level-2/sugar.hpp (renamed from starts/meaning-vm/habit-starts/habit.hpp) | 10 |
3 files changed, 12 insertions, 4 deletions
diff --git a/starts/meaning-vm/habit-starts/rhythm.cpp b/starts/meaning-vm/habit-starts/rhythm.cpp index 3085da0..56172e8 100644 --- a/starts/meaning-vm/habit-starts/rhythm.cpp +++ b/starts/meaning-vm/habit-starts/rhythm.cpp @@ -4,7 +4,7 @@ // Ideally, a human would run the rhythm. #include "../level-1/level-1.hpp" -#include "habit.hpp" +#include "../level-2/level-2.hpp" #include <iostream> @@ -121,7 +121,6 @@ int main() }); ahabit(wait-habit, { - habitdelay; usleep(micros); }); diff --git a/starts/meaning-vm/level-2/level-2.hpp b/starts/meaning-vm/level-2/level-2.hpp new file mode 100644 index 0000000..29ab89e --- /dev/null +++ b/starts/meaning-vm/level-2/level-2.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include "sugar.hpp" diff --git a/starts/meaning-vm/habit-starts/habit.hpp b/starts/meaning-vm/level-2/sugar.hpp index 5c6f5e8..2fa9414 100644 --- a/starts/meaning-vm/habit-starts/habit.hpp +++ b/starts/meaning-vm/level-2/sugar.hpp @@ -1,10 +1,9 @@ #pragma once #include <stdlib.h> // int rand(); void srand(int seed); -#include <time.h> // int time(0); +#include <time.h> // int time(0); int clock_gettime(CLOCK_REALTIME, struct timespec *tp{tv_sec,tv_nsec}) #include <unistd.h> // usleep(unsigned int usecs) -__attribute__ ((visibility ("hidden"))) int __seed = (srand(time(0)), time(0)); #define habitdelay \ static int thisdelay = (double(rand()) / RAND_MAX * 400000 + 200000); \ usleep(thisdelay) @@ -21,3 +20,10 @@ __attribute__ ((visibility ("hidden"))) int __seed = (srand(time(0)), time(0)); __VA_ARGS__ \ return intellect::level1::concepts::nothing; \ }); + +// seed random number generator statically, for habitdelay +namespace __internal { +static struct timespec __tp; +static int __timeres = clock_gettime(CLOCK_REALTIME, &__tp); +static int __seed = (srand(__tp.tv_nsec), __tp.tv_nsec); +} |