Skip to content

Commit 8f9f004

Browse files
committed
add Xoshiro256StarStar
1 parent c5da93f commit 8f9f004

11 files changed

+1397
-164
lines changed

ext/random/php_random.h

+25-19
Original file line numberDiff line numberDiff line change
@@ -124,34 +124,30 @@ extern zend_module_entry random_module_entry;
124124
# define phpext_random_ptr &random_module_entry
125125

126126
extern PHPAPI zend_class_entry *random_ce_Random_Engine;
127-
extern PHPAPI zend_class_entry *random_ce_Random_Engine_XorShift128Plus;
128-
extern PHPAPI zend_class_entry *random_ce_Random_Engine_MersenneTwister;
129127
extern PHPAPI zend_class_entry *random_ce_Random_Engine_CombinedLCG;
128+
extern PHPAPI zend_class_entry *random_ce_Random_Engine_MersenneTwister;
130129
extern PHPAPI zend_class_entry *random_ce_Random_Engine_Secure;
130+
extern PHPAPI zend_class_entry *random_ce_Random_Engine_XorShift128Plus;
131+
extern PHPAPI zend_class_entry *random_ce_Random_Engine_Xoshiro256StarStar;
131132
extern PHPAPI zend_class_entry *random_ce_Random_Randomizer;
132133

133-
extern const php_random_engine_algo php_random_engine_algo_xorshift128plus;
134-
extern const php_random_engine_algo php_random_engine_algo_mersennetwister;
135134
extern const php_random_engine_algo php_random_engine_algo_combinedlcg;
135+
extern const php_random_engine_algo php_random_engine_algo_mersennetwister;
136136
extern const php_random_engine_algo php_random_engine_algo_secure;
137137
extern const php_random_engine_algo php_random_engine_algo_user;
138+
extern const php_random_engine_algo php_random_engine_algo_xorshift128plus;
139+
extern const php_random_engine_algo php_random_engine_algo_xoshiro256starstar;
138140

139141
typedef struct _php_random_engine {
140142
const php_random_engine_algo *algo;
141143
void *state;
142144
zend_object std;
143145
} php_random_engine;
144146

145-
typedef struct _php_random_randomizer {
146-
const php_random_engine_algo *algo;
147-
void *state;
148-
bool self_allocate;
149-
zend_object std;
150-
} php_random_randomizer;
151-
152-
typedef struct _php_random_engine_state_xorshift128plus {
153-
uint64_t s[2];
154-
} php_random_engine_state_xorshift128plus;
147+
typedef struct _php_random_engine_state_combinedlcg {
148+
int32_t s[2];
149+
bool seeded;
150+
} php_random_engine_state_combinedlcg;
155151

156152
typedef struct _php_random_engine_state_mersennetwister {
157153
uint32_t s[MT_N];
@@ -160,18 +156,28 @@ typedef struct _php_random_engine_state_mersennetwister {
160156
bool seeded;
161157
} php_random_engine_state_mersennetwister;
162158

163-
typedef struct _php_random_engine_state_combinedlcg {
164-
int32_t s[2];
165-
bool seeded;
166-
} php_random_engine_state_combinedlcg;
167-
168159
typedef struct _php_random_engine_state_user {
169160
zend_object *object;
170161
zend_function *size_method;
171162
zend_function *generate_method;
172163
size_t last_generate_size;
173164
} php_random_engine_state_user;
174165

166+
typedef struct _php_random_engine_state_xorshift128plus {
167+
uint64_t s[2];
168+
} php_random_engine_state_xorshift128plus;
169+
170+
typedef struct _php_random_engine_state_xoshiro256starstar {
171+
uint64_t s[4];
172+
} php_random_engine_state_xoshiro256starstar;
173+
174+
typedef struct _php_random_randomizer {
175+
const php_random_engine_algo *algo;
176+
void *state;
177+
bool self_allocate;
178+
zend_object std;
179+
} php_random_randomizer;
180+
175181
static inline php_random_engine *php_random_engine_from_obj(zend_object *obj) {
176182
return (php_random_engine *)((char *)(obj) - XtOffsetOf(php_random_engine, std));
177183
}

0 commit comments

Comments
 (0)