@@ -11,6 +11,7 @@ typedef struct {
11
11
long php_only ;
12
12
zend_bool assoc ;
13
13
zend_object object ;
14
+ zend_bool force_f32 ;
14
15
} php_msgpack_base_t ;
15
16
16
17
typedef struct {
@@ -178,6 +179,7 @@ static void php_msgpack_unpacker_free(zend_object *object) /* {{{ */ {
178
179
static ZEND_METHOD (msgpack , __construct ) /* {{{ */ {
179
180
zend_bool php_only = MSGPACK_G (php_only );
180
181
zend_bool assoc = MSGPACK_G (assoc );
182
+ zend_bool force_f32 = MSGPACK_G (force_f32 );
181
183
php_msgpack_base_t * base = Z_MSGPACK_BASE_P (getThis ());
182
184
183
185
if (zend_parse_parameters (ZEND_NUM_ARGS (), "|b" , & php_only ) == FAILURE ) {
@@ -186,6 +188,7 @@ static ZEND_METHOD(msgpack, __construct) /* {{{ */ {
186
188
187
189
base -> php_only = php_only ;
188
190
base -> assoc = assoc ;
191
+ base -> force_f32 = force_f32 ;
189
192
}
190
193
/* }}} */
191
194
@@ -205,6 +208,9 @@ static ZEND_METHOD(msgpack, setOption) /* {{{ */ {
205
208
case MSGPACK_CLASS_OPT_ASSOC :
206
209
base -> assoc = i_zend_is_true (value );
207
210
break ;
211
+ case MSGPACK_CLASS_OPT_FORCE_F32 :
212
+ base -> force_f32 = i_zend_is_true (value );
213
+ break ;
208
214
default :
209
215
MSGPACK_WARNING ("[msgpack] (MessagePack::setOption) "
210
216
"error setting msgpack option" );
@@ -221,6 +227,7 @@ static ZEND_METHOD(msgpack, pack) /* {{{ */ {
221
227
smart_str buf = {0 };
222
228
int php_only = MSGPACK_G (php_only );
223
229
zend_bool assoc = MSGPACK_G (assoc );
230
+ zend_bool force_f32 = MSGPACK_G (force_f32 );
224
231
php_msgpack_base_t * base = Z_MSGPACK_BASE_P (getThis ());
225
232
226
233
if (zend_parse_parameters (ZEND_NUM_ARGS (), "z" , & parameter ) == FAILURE ) {
@@ -229,11 +236,13 @@ static ZEND_METHOD(msgpack, pack) /* {{{ */ {
229
236
230
237
MSGPACK_G (php_only ) = base -> php_only ;
231
238
MSGPACK_G (assoc ) = base -> assoc ;
239
+ MSGPACK_G (force_f32 ) = base -> force_f32 ;
232
240
233
241
php_msgpack_serialize (& buf , parameter );
234
242
235
243
MSGPACK_G (php_only ) = php_only ;
236
244
MSGPACK_G (assoc ) = assoc ;
245
+ MSGPACK_G (force_f32 ) = force_f32 ;
237
246
if (buf .s ) {
238
247
smart_str_0 (& buf );
239
248
ZVAL_STR (return_value , buf .s );
@@ -512,6 +521,7 @@ void msgpack_init_class() /* {{{ */ {
512
521
513
522
zend_declare_class_constant_long (msgpack_ce , ZEND_STRS ("OPT_PHPONLY" ) - 1 , MSGPACK_CLASS_OPT_PHPONLY );
514
523
zend_declare_class_constant_long (msgpack_ce , ZEND_STRS ("OPT_ASSOC" ) - 1 , MSGPACK_CLASS_OPT_ASSOC );
524
+ zend_declare_class_constant_long (msgpack_ce , ZEND_STRS ("OPT_FORCE_F32" ) - 1 , MSGPACK_CLASS_OPT_FORCE_F32 );
515
525
516
526
/* unpacker */
517
527
INIT_CLASS_ENTRY (ce , "MessagePackUnpacker" , msgpack_unpacker_methods );
0 commit comments