.github
CMakeModules
dist
externals
SDL
.github
VisualC
VisualC-WinRT
Xcode
Xcode-iOS
acinclude
android-project
android-project-ant
build-scripts
cmake
debian
docs
include
SDL.h
SDL_assert.h
SDL_atomic.h
SDL_audio.h
SDL_bits.h
SDL_blendmode.h
SDL_clipboard.h
SDL_config.h
SDL_config.h.cmake
SDL_config.h.in
SDL_config_android.h
SDL_config_iphoneos.h
SDL_config_macosx.h
SDL_config_minimal.h
SDL_config_os2.h
SDL_config_pandora.h
SDL_config_psp.h
SDL_config_windows.h
SDL_config_winrt.h
SDL_config_wiz.h
SDL_copying.h
SDL_cpuinfo.h
SDL_egl.h
SDL_endian.h
SDL_error.h
SDL_events.h
SDL_filesystem.h
SDL_gamecontroller.h
SDL_gesture.h
SDL_haptic.h
SDL_hints.h
SDL_joystick.h
SDL_keyboard.h
SDL_keycode.h
SDL_loadso.h
SDL_locale.h
SDL_log.h
SDL_main.h
SDL_messagebox.h
SDL_metal.h
SDL_misc.h
SDL_mouse.h
SDL_mutex.h
SDL_name.h
SDL_opengl.h
SDL_opengl_glext.h
SDL_opengles.h
SDL_opengles2.h
SDL_opengles2_gl2.h
SDL_opengles2_gl2ext.h
SDL_opengles2_gl2platform.h
SDL_opengles2_khrplatform.h
SDL_pixels.h
SDL_platform.h
SDL_power.h
SDL_quit.h
SDL_rect.h
SDL_render.h
SDL_revision.h
SDL_rwops.h
SDL_scancode.h
SDL_sensor.h
SDL_shape.h
SDL_stdinc.h
SDL_surface.h
SDL_system.h
SDL_syswm.h
SDL_test.h
SDL_test_assert.h
SDL_test_common.h
SDL_test_compare.h
SDL_test_crc32.h
SDL_test_font.h
SDL_test_fuzzer.h
SDL_test_harness.h
SDL_test_images.h
SDL_test_log.h
SDL_test_md5.h
SDL_test_memory.h
SDL_test_random.h
SDL_thread.h
SDL_timer.h
SDL_touch.h
SDL_types.h
SDL_version.h
SDL_video.h
SDL_vulkan.h
begin_code.h
close_code.h
src
test
visualtest
wayland-protocols
.gitignore
.hgignore
Android.mk
BUGS.txt
CMakeLists.txt
COPYING.txt
CREDITS.txt
INSTALL.txt
LICENSE.txt
Makefile.in
Makefile.minimal
Makefile.os2
Makefile.pandora
Makefile.psp
Makefile.wiz
README-SDL.txt
README.md
README.txt
SDL2.spec.in
SDL2Config.cmake
TODO.txt
VisualC.html
WhatsNew.txt
autogen.sh
cmake_uninstall.cmake.in
configure
configure.ac
sdl2-config-version.cmake.in
sdl2-config.cmake.in
sdl2-config.in
sdl2.m4
sdl2.pc.in
Vulkan-Headers
cmake-modules
cpp-httplib
cubeb
discord-rpc
dynarmic
ffmpeg
find-modules
getopt
glad
httplib
inih
libressl
libusb
libzip
mbedtls
microprofile
opus
sirit
soundtouch
xbyak
CMakeLists.txt
patches
src
CMakeLists.txt
LICENSE
README.md
license.txt
116 lines
3.1 KiB
C
Executable File
116 lines
3.1 KiB
C
Executable File
/*
|
|
Simple DirectMedia Layer
|
|
Copyright (C) 1997-2021 Sam Lantinga <slouken@libsdl.org>
|
|
|
|
This software is provided 'as-is', without any express or implied
|
|
warranty. In no event will the authors be held liable for any damages
|
|
arising from the use of this software.
|
|
|
|
Permission is granted to anyone to use this software for any purpose,
|
|
including commercial applications, and to alter it and redistribute it
|
|
freely, subject to the following restrictions:
|
|
|
|
1. The origin of this software must not be misrepresented; you must not
|
|
claim that you wrote the original software. If you use this software
|
|
in a product, an acknowledgment in the product documentation would be
|
|
appreciated but is not required.
|
|
2. Altered source versions must be plainly marked as such, and must not be
|
|
misrepresented as being the original software.
|
|
3. This notice may not be removed or altered from any source distribution.
|
|
*/
|
|
|
|
/**
|
|
* \file SDL_test_random.h
|
|
*
|
|
* Include file for SDL test framework.
|
|
*
|
|
* This code is a part of the SDL2_test library, not the main SDL library.
|
|
*/
|
|
|
|
/*
|
|
|
|
A "32-bit Multiply with carry random number generator. Very fast.
|
|
Includes a list of recommended multipliers.
|
|
|
|
multiply-with-carry generator: x(n) = a*x(n-1) + carry mod 2^32.
|
|
period: (a*2^31)-1
|
|
|
|
*/
|
|
|
|
#ifndef SDL_test_random_h_
|
|
#define SDL_test_random_h_
|
|
|
|
#include "begin_code.h"
|
|
/* Set up for C function definitions, even when using C++ */
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* --- Definitions */
|
|
|
|
/*
|
|
* Macros that return a random number in a specific format.
|
|
*/
|
|
#define SDLTest_RandomInt(c) ((int)SDLTest_Random(c))
|
|
|
|
/*
|
|
* Context structure for the random number generator state.
|
|
*/
|
|
typedef struct {
|
|
unsigned int a;
|
|
unsigned int x;
|
|
unsigned int c;
|
|
unsigned int ah;
|
|
unsigned int al;
|
|
} SDLTest_RandomContext;
|
|
|
|
|
|
/* --- Function prototypes */
|
|
|
|
/**
|
|
* \brief Initialize random number generator with two integers.
|
|
*
|
|
* Note: The random sequence of numbers returned by ...Random() is the
|
|
* same for the same two integers and has a period of 2^31.
|
|
*
|
|
* \param rndContext pointer to context structure
|
|
* \param xi integer that defines the random sequence
|
|
* \param ci integer that defines the random sequence
|
|
*
|
|
*/
|
|
void SDLTest_RandomInit(SDLTest_RandomContext * rndContext, unsigned int xi,
|
|
unsigned int ci);
|
|
|
|
/**
|
|
* \brief Initialize random number generator based on current system time.
|
|
*
|
|
* \param rndContext pointer to context structure
|
|
*
|
|
*/
|
|
void SDLTest_RandomInitTime(SDLTest_RandomContext *rndContext);
|
|
|
|
|
|
/**
|
|
* \brief Initialize random number generator based on current system time.
|
|
*
|
|
* Note: ...RandomInit() or ...RandomInitTime() must have been called
|
|
* before using this function.
|
|
*
|
|
* \param rndContext pointer to context structure
|
|
*
|
|
* \returns A random number (32bit unsigned integer)
|
|
*
|
|
*/
|
|
unsigned int SDLTest_Random(SDLTest_RandomContext *rndContext);
|
|
|
|
|
|
/* Ends C function definitions when using C++ */
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#include "close_code.h"
|
|
|
|
#endif /* SDL_test_random_h_ */
|
|
|
|
/* vi: set ts=4 sw=4 expandtab: */
|