summaryrefslogtreecommitdiff
path: root/packages/base/src/Internal/C/windows_random_r.h
blob: 4f4d32f1b6e9b29256b532e0314f2f721c89e208 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#if defined(_WIN32) || defined(WIN32)

#ifndef WINDOWS_RANDOM_R_H
#define WINDOWS_RANDOM_R_H

#include <stddef.h>

#define EINVAL 23

typedef int int32_t;

struct random_data
{
    int *fptr;          /* Front pointer.  */
    int *rptr;          /* Rear pointer.  */
    int *state;         /* Array of state values.  */
    int rand_type;      /* Type of random number generator.  */
    int rand_deg;       /* Degree of random number generator.  */
    int rand_sep;       /* Distance between front and rear.  */
    int *end_ptr;       /* Pointer behind state table.  */
};

extern int windows_random_r_errno;

static inline void __set_errno(int err) { windows_random_r_errno = err; };

int random_r (struct random_data *buf, int32_t *result);

int initstate_r (unsigned int seed,
        char *arg_state,
        /*unsigned long*/ size_t n,
        struct random_data *buf);

#endif
#endif