SDL standard library

Dependents:   H261_encoder

Committer:
miruga27
Date:
Wed Sep 07 18:46:53 2016 +0000
Revision:
0:dda4f4550403
7/09/2016;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
miruga27 0:dda4f4550403 1 /*
miruga27 0:dda4f4550403 2 Simple DirectMedia Layer
miruga27 0:dda4f4550403 3 Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
miruga27 0:dda4f4550403 4
miruga27 0:dda4f4550403 5 This software is provided 'as-is', without any express or implied
miruga27 0:dda4f4550403 6 warranty. In no event will the authors be held liable for any damages
miruga27 0:dda4f4550403 7 arising from the use of this software.
miruga27 0:dda4f4550403 8
miruga27 0:dda4f4550403 9 Permission is granted to anyone to use this software for any purpose,
miruga27 0:dda4f4550403 10 including commercial applications, and to alter it and redistribute it
miruga27 0:dda4f4550403 11 freely, subject to the following restrictions:
miruga27 0:dda4f4550403 12
miruga27 0:dda4f4550403 13 1. The origin of this software must not be misrepresented; you must not
miruga27 0:dda4f4550403 14 claim that you wrote the original software. If you use this software
miruga27 0:dda4f4550403 15 in a product, an acknowledgment in the product documentation would be
miruga27 0:dda4f4550403 16 appreciated but is not required.
miruga27 0:dda4f4550403 17 2. Altered source versions must be plainly marked as such, and must not be
miruga27 0:dda4f4550403 18 misrepresented as being the original software.
miruga27 0:dda4f4550403 19 3. This notice may not be removed or altered from any source distribution.
miruga27 0:dda4f4550403 20 */
miruga27 0:dda4f4550403 21
miruga27 0:dda4f4550403 22 /**
miruga27 0:dda4f4550403 23 * \file SDL_test_random.h
miruga27 0:dda4f4550403 24 *
miruga27 0:dda4f4550403 25 * Include file for SDL test framework.
miruga27 0:dda4f4550403 26 *
miruga27 0:dda4f4550403 27 * This code is a part of the SDL2_test library, not the main SDL library.
miruga27 0:dda4f4550403 28 */
miruga27 0:dda4f4550403 29
miruga27 0:dda4f4550403 30 /*
miruga27 0:dda4f4550403 31
miruga27 0:dda4f4550403 32 A "32-bit Multiply with carry random number generator. Very fast.
miruga27 0:dda4f4550403 33 Includes a list of recommended multipliers.
miruga27 0:dda4f4550403 34
miruga27 0:dda4f4550403 35 multiply-with-carry generator: x(n) = a*x(n-1) + carry mod 2^32.
miruga27 0:dda4f4550403 36 period: (a*2^31)-1
miruga27 0:dda4f4550403 37
miruga27 0:dda4f4550403 38 */
miruga27 0:dda4f4550403 39
miruga27 0:dda4f4550403 40 #ifndef _SDL_test_random_h
miruga27 0:dda4f4550403 41 #define _SDL_test_random_h
miruga27 0:dda4f4550403 42
miruga27 0:dda4f4550403 43 #include "begin_code.h"
miruga27 0:dda4f4550403 44 /* Set up for C function definitions, even when using C++ */
miruga27 0:dda4f4550403 45 #ifdef __cplusplus
miruga27 0:dda4f4550403 46 extern "C" {
miruga27 0:dda4f4550403 47 #endif
miruga27 0:dda4f4550403 48
miruga27 0:dda4f4550403 49 /* --- Definitions */
miruga27 0:dda4f4550403 50
miruga27 0:dda4f4550403 51 /*
miruga27 0:dda4f4550403 52 * Macros that return a random number in a specific format.
miruga27 0:dda4f4550403 53 */
miruga27 0:dda4f4550403 54 #define SDLTest_RandomInt(c) ((int)SDLTest_Random(c))
miruga27 0:dda4f4550403 55
miruga27 0:dda4f4550403 56 /*
miruga27 0:dda4f4550403 57 * Context structure for the random number generator state.
miruga27 0:dda4f4550403 58 */
miruga27 0:dda4f4550403 59 typedef struct {
miruga27 0:dda4f4550403 60 unsigned int a;
miruga27 0:dda4f4550403 61 unsigned int x;
miruga27 0:dda4f4550403 62 unsigned int c;
miruga27 0:dda4f4550403 63 unsigned int ah;
miruga27 0:dda4f4550403 64 unsigned int al;
miruga27 0:dda4f4550403 65 } SDLTest_RandomContext;
miruga27 0:dda4f4550403 66
miruga27 0:dda4f4550403 67
miruga27 0:dda4f4550403 68 /* --- Function prototypes */
miruga27 0:dda4f4550403 69
miruga27 0:dda4f4550403 70 /**
miruga27 0:dda4f4550403 71 * \brief Initialize random number generator with two integers.
miruga27 0:dda4f4550403 72 *
miruga27 0:dda4f4550403 73 * Note: The random sequence of numbers returned by ...Random() is the
miruga27 0:dda4f4550403 74 * same for the same two integers and has a period of 2^31.
miruga27 0:dda4f4550403 75 *
miruga27 0:dda4f4550403 76 * \param rndContext pointer to context structure
miruga27 0:dda4f4550403 77 * \param xi integer that defines the random sequence
miruga27 0:dda4f4550403 78 * \param ci integer that defines the random sequence
miruga27 0:dda4f4550403 79 *
miruga27 0:dda4f4550403 80 */
miruga27 0:dda4f4550403 81 void SDLTest_RandomInit(SDLTest_RandomContext * rndContext, unsigned int xi,
miruga27 0:dda4f4550403 82 unsigned int ci);
miruga27 0:dda4f4550403 83
miruga27 0:dda4f4550403 84 /**
miruga27 0:dda4f4550403 85 * \brief Initialize random number generator based on current system time.
miruga27 0:dda4f4550403 86 *
miruga27 0:dda4f4550403 87 * \param rndContext pointer to context structure
miruga27 0:dda4f4550403 88 *
miruga27 0:dda4f4550403 89 */
miruga27 0:dda4f4550403 90 void SDLTest_RandomInitTime(SDLTest_RandomContext *rndContext);
miruga27 0:dda4f4550403 91
miruga27 0:dda4f4550403 92
miruga27 0:dda4f4550403 93 /**
miruga27 0:dda4f4550403 94 * \brief Initialize random number generator based on current system time.
miruga27 0:dda4f4550403 95 *
miruga27 0:dda4f4550403 96 * Note: ...RandomInit() or ...RandomInitTime() must have been called
miruga27 0:dda4f4550403 97 * before using this function.
miruga27 0:dda4f4550403 98 *
miruga27 0:dda4f4550403 99 * \param rndContext pointer to context structure
miruga27 0:dda4f4550403 100 *
miruga27 0:dda4f4550403 101 * \returns A random number (32bit unsigned integer)
miruga27 0:dda4f4550403 102 *
miruga27 0:dda4f4550403 103 */
miruga27 0:dda4f4550403 104 unsigned int SDLTest_Random(SDLTest_RandomContext *rndContext);
miruga27 0:dda4f4550403 105
miruga27 0:dda4f4550403 106
miruga27 0:dda4f4550403 107 /* Ends C function definitions when using C++ */
miruga27 0:dda4f4550403 108 #ifdef __cplusplus
miruga27 0:dda4f4550403 109 }
miruga27 0:dda4f4550403 110 #endif
miruga27 0:dda4f4550403 111 #include "close_code.h"
miruga27 0:dda4f4550403 112
miruga27 0:dda4f4550403 113 #endif /* _SDL_test_random_h */
miruga27 0:dda4f4550403 114
miruga27 0:dda4f4550403 115 /* vi: set ts=4 sw=4 expandtab: */