diff options
Diffstat (limited to 'uisimulator/yarandom.h')
-rw-r--r-- | uisimulator/yarandom.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/uisimulator/yarandom.h b/uisimulator/yarandom.h new file mode 100644 index 0000000000..0e1dfcfb76 --- /dev/null +++ b/uisimulator/yarandom.h | |||
@@ -0,0 +1,64 @@ | |||
1 | /* xscreensaver, Copyright (c) 1997, 1998 by Jamie Zawinski <jwz@jwz.org> | ||
2 | * | ||
3 | * Permission to use, copy, modify, distribute, and sell this software and its | ||
4 | * documentation for any purpose is hereby granted without fee, provided that | ||
5 | * the above copyright notice appear in all copies and that both that | ||
6 | * copyright notice and this permission notice appear in supporting | ||
7 | * documentation. No representations are made about the suitability of this | ||
8 | * software for any purpose. It is provided "as is" without express or | ||
9 | * implied warranty. | ||
10 | */ | ||
11 | |||
12 | #ifndef __YARANDOM_H__ | ||
13 | #define __YARANDOM_H__ | ||
14 | |||
15 | #undef random | ||
16 | #undef rand | ||
17 | #undef drand48 | ||
18 | #undef srandom | ||
19 | #undef srand | ||
20 | #undef srand48 | ||
21 | #undef frand | ||
22 | #undef RAND_MAX | ||
23 | |||
24 | #ifdef VMS | ||
25 | # include "vms-gtod.h" | ||
26 | #endif | ||
27 | |||
28 | extern unsigned int ya_random (void); | ||
29 | extern void ya_rand_init (unsigned int); | ||
30 | |||
31 | #define random() ya_random() | ||
32 | #define RAND_MAX 0x7FFFFFFF | ||
33 | |||
34 | /*#define srandom(i) ya_rand_init(0)*/ | ||
35 | |||
36 | /* Define these away to keep people from using the wrong APIs in xscreensaver. | ||
37 | */ | ||
38 | #define rand __ERROR_use_random_not_rand_in_xscreensaver__ | ||
39 | #define drand48 __ERROR_use_random_not_drand48_in_xscreensaver__ | ||
40 | #define srandom __ERROR_do_not_call_srandom_in_xscreensaver__ | ||
41 | #define srand __ERROR_do_not_call_srand_in_xscreensaver__ | ||
42 | #define srand48 __ERROR_do_not_call_srand48_in_xscreensaver__ | ||
43 | #define ya_rand_init __ERROR_do_not_call_ya_rand_init_in_xscreensaver__ | ||
44 | |||
45 | |||
46 | #if defined (__GNUC__) && (__GNUC__ >= 2) | ||
47 | /* Implement frand using GCC's statement-expression extension. */ | ||
48 | |||
49 | # define frand(f) \ | ||
50 | ({ double tmp = (((double) random()) / \ | ||
51 | (((double) ((unsigned int)~0)) / ((double) (f)))); \ | ||
52 | tmp < 0 ? (-tmp) : tmp; }) | ||
53 | |||
54 | #else /* not GCC2 - implement frand using a global variable.*/ | ||
55 | |||
56 | static double _frand_tmp_; | ||
57 | # define frand(f) \ | ||
58 | (_frand_tmp_ = (((double) random()) / \ | ||
59 | (((double) ((unsigned int)~0)) / ((double) (f)))), \ | ||
60 | _frand_tmp_ < 0 ? (-_frand_tmp_) : _frand_tmp_) | ||
61 | |||
62 | #endif /* not GCC2 */ | ||
63 | |||
64 | #endif /* __YARANDOM_H__ */ | ||