Lua: Fix type confusion between signed and unsigned
[lsnes.git] / include / library / crandom.hpp
blob18ff320a0ed6fe52daed08660807498f88c6ff44
1 #ifndef _library__random__hpp__included__
2 #define _library__random__hpp__included__
4 #include <cstdlib>
5 #include <cstdint>
7 namespace crandom
9 /**
10 * Initialize random number generator.
12 * Throws std::runtime_error: Can't initialize RNG.
14 void init();
15 /**
16 * Generate random bits. Automatically initializes the generator if not already initialized.
18 * Parameter buffer: The buffer to fill.
19 * Parameter buffersize: Number of bytes to fill.
20 * Throws std::runtime_error: Can't initialize RNG.
22 void generate(void* buffer, size_t buffersize);
23 /**
24 * Get random number from arch-specific RNG.
26 * Returns: Random number, or 0 if not supported.
28 * Note: Beware, the random numbers might be weak.
30 uint64_t arch_get_random();
31 /**
32 * Get processor TSC.
34 * Returns: TSC, or 0 if not supported.
36 uint64_t arch_get_tsc();
39 #endif