@@ -96,79 +96,80 @@ PHPAPI zend_long php_mt_rand_common(zend_long min, zend_long max);
9696PHPAPI int php_random_bytes (void * bytes , size_t size , bool should_throw );
9797PHPAPI int php_random_int (zend_long min , zend_long max , zend_long * result , bool should_throw );
9898
99- typedef struct _php_random_numbergenerator_algo {
100- const size_t generate_size ;
99+ typedef struct _php_random_engine_algo {
101100 const size_t state_size ;
101+ size_t (* size )(void * state );
102102 uint64_t (* generate )(void * state );
103103 void (* seed )(void * state , const uint64_t seed ); /* nullable */
104104 int (* serialize )(void * state , HashTable * data ); /* nullable */
105105 int (* unserialize )(void * state , HashTable * data ); /* nullable */
106- } php_random_numbergenerator_algo ;
106+ } php_random_engine_algo ;
107107
108- PHPAPI const php_random_numbergenerator_algo * php_random_numbergenerator_get_default_algo (void );
109- PHPAPI void * php_random_numbergenerater_get_default_state (void );
108+ PHPAPI const php_random_engine_algo * php_random_engine_get_default_algo (void );
109+ PHPAPI void * php_random_engine_get_default_state (void );
110110
111- PHPAPI zend_long php_random_numbergenerator_range (const php_random_numbergenerator_algo * algo , void * state , zend_long min , zend_long max );
111+ PHPAPI zend_long php_random_engine_range (const php_random_engine_algo * algo , void * state , zend_long min , zend_long max );
112112
113113extern zend_module_entry random_module_entry ;
114114# define phpext_random_ptr &random_module_entry
115115
116- extern PHPAPI zend_class_entry * random_ce_Random_NumberGenerator ;
117- extern PHPAPI zend_class_entry * random_ce_Random_NumberGenerator_XorShift128Plus ;
118- extern PHPAPI zend_class_entry * random_ce_Random_NumberGenerator_MersenneTwister ;
119- extern PHPAPI zend_class_entry * random_ce_Random_NumberGenerator_CombinedLCG ;
120- extern PHPAPI zend_class_entry * random_ce_Random_NumberGenerator_Secure ;
116+ extern PHPAPI zend_class_entry * random_ce_Random_Engine ;
117+ extern PHPAPI zend_class_entry * random_ce_Random_Engine_XorShift128Plus ;
118+ extern PHPAPI zend_class_entry * random_ce_Random_Engine_MersenneTwister ;
119+ extern PHPAPI zend_class_entry * random_ce_Random_Engine_CombinedLCG ;
120+ extern PHPAPI zend_class_entry * random_ce_Random_Engine_Secure ;
121121extern PHPAPI zend_class_entry * random_ce_Random_Randomizer ;
122122
123- extern const php_random_numbergenerator_algo php_random_numbergenerator_algo_xorshift128plus ;
124- extern const php_random_numbergenerator_algo php_random_numbergenerator_algo_mersennetwister ;
125- extern const php_random_numbergenerator_algo php_random_numbergenerator_algo_combinedlcg ;
126- extern const php_random_numbergenerator_algo php_random_numbergenerator_algo_secure ;
127- extern const php_random_numbergenerator_algo php_random_numbergenerator_algo_user ;
123+ extern const php_random_engine_algo php_random_engine_algo_xorshift128plus ;
124+ extern const php_random_engine_algo php_random_engine_algo_mersennetwister ;
125+ extern const php_random_engine_algo php_random_engine_algo_combinedlcg ;
126+ extern const php_random_engine_algo php_random_engine_algo_secure ;
127+ extern const php_random_engine_algo php_random_engine_algo_user ;
128128
129- typedef struct _php_random_numbergenerator {
130- const php_random_numbergenerator_algo * algo ;
129+ typedef struct _php_random_engine {
130+ const php_random_engine_algo * algo ;
131131 void * state ;
132132 zend_object std ;
133- } php_random_numbergenerator ;
133+ } php_random_engine ;
134134
135135typedef struct _php_random_randomizer {
136- const php_random_numbergenerator_algo * algo ;
136+ const php_random_engine_algo * algo ;
137137 void * state ;
138138 bool self_allocate ;
139139 zend_object std ;
140140} php_random_randomizer ;
141141
142- typedef struct _php_random_numbergenerator_state_xorshift128plus {
142+ typedef struct _php_random_engine_state_xorshift128plus {
143143 uint64_t s [2 ];
144- } php_random_numbergenerator_state_xorshift128plus ;
144+ } php_random_engine_state_xorshift128plus ;
145145
146- typedef struct _php_random_numbergenerator_state_mersennetwister {
146+ typedef struct _php_random_engine_state_mersennetwister {
147147 uint32_t s [MT_N ];
148148 int cnt ;
149149 zend_long mode ;
150150 bool seeded ;
151- } php_random_numbergenerator_state_mersennetwister ;
151+ } php_random_engine_state_mersennetwister ;
152152
153- typedef struct _php_random_numbergenerator_state_combinedlcg {
153+ typedef struct _php_random_engine_state_combinedlcg {
154154 int32_t s [2 ];
155155 bool seeded ;
156- } php_random_numbergenerator_state_combinedlcg ;
156+ } php_random_engine_state_combinedlcg ;
157157
158- typedef struct _php_random_numbergenerator_state_user {
158+ typedef struct _php_random_engine_state_user {
159159 zend_object * object ;
160- zend_function * method ;
161- } php_random_numbergenerator_state_user ;
160+ zend_function * size_method ;
161+ zend_function * generate_method ;
162+ } php_random_engine_state_user ;
162163
163- static inline php_random_numbergenerator * php_random_numbergenerator_from_obj (zend_object * obj ) {
164- return (php_random_numbergenerator * )((char * )(obj ) - XtOffsetOf (php_random_numbergenerator , std ));
164+ static inline php_random_engine * php_random_engine_from_obj (zend_object * obj ) {
165+ return (php_random_engine * )((char * )(obj ) - XtOffsetOf (php_random_engine , std ));
165166}
166167
167168static inline php_random_randomizer * php_random_randomizer_from_obj (zend_object * obj ) {
168169 return (php_random_randomizer * )((char * )(obj ) - XtOffsetOf (php_random_randomizer , std ));
169170}
170171
171- # define Z_RANDOM_NUMBERGENERATOR_P (zval ) php_random_numbergenerator_from_obj (Z_OBJ_P(zval))
172+ # define Z_RANDOM_ENGINE_P (zval ) php_random_engine_from_obj (Z_OBJ_P(zval))
172173
173174# define Z_RANDOM_RANDOMIZER_P (zval ) php_random_randomizer_from_obj(Z_OBJ_P(zval))
174175
@@ -177,8 +178,8 @@ PHP_MSHUTDOWN_FUNCTION(random);
177178PHP_RINIT_FUNCTION (random );
178179
179180ZEND_BEGIN_MODULE_GLOBALS (random )
180- php_random_numbergenerator_state_combinedlcg clcg ; /* Combined LCG global state */
181- php_random_numbergenerator_state_mersennetwister mt ; /* MT global state */
181+ php_random_engine_state_combinedlcg clcg ; /* Combined LCG global state */
182+ php_random_engine_state_mersennetwister mt ; /* MT global state */
182183 int random_fd ; /* random file discriptor */
183184ZEND_END_MODULE_GLOBALS (random )
184185
0 commit comments