@@ -11,6 +11,7 @@ typedef struct {
1111 long php_only ;
1212 zend_bool assoc ;
1313 zend_object object ;
14+ zend_bool force_f32 ;
1415} php_msgpack_base_t ;
1516
1617typedef struct {
@@ -178,6 +179,7 @@ static void php_msgpack_unpacker_free(zend_object *object) /* {{{ */ {
178179static ZEND_METHOD (msgpack , __construct ) /* {{{ */ {
179180 zend_bool php_only = MSGPACK_G (php_only );
180181 zend_bool assoc = MSGPACK_G (assoc );
182+ zend_bool force_f32 = MSGPACK_G (force_f32 );
181183 php_msgpack_base_t * base = Z_MSGPACK_BASE_P (getThis ());
182184
183185 if (zend_parse_parameters (ZEND_NUM_ARGS (), "|b" , & php_only ) == FAILURE ) {
@@ -186,6 +188,7 @@ static ZEND_METHOD(msgpack, __construct) /* {{{ */ {
186188
187189 base -> php_only = php_only ;
188190 base -> assoc = assoc ;
191+ base -> force_f32 = force_f32 ;
189192}
190193/* }}} */
191194
@@ -205,6 +208,9 @@ static ZEND_METHOD(msgpack, setOption) /* {{{ */ {
205208 case MSGPACK_CLASS_OPT_ASSOC :
206209 base -> assoc = i_zend_is_true (value );
207210 break ;
211+ case MSGPACK_CLASS_OPT_FORCE_F32 :
212+ base -> force_f32 = i_zend_is_true (value );
213+ break ;
208214 default :
209215 MSGPACK_WARNING ("[msgpack] (MessagePack::setOption) "
210216 "error setting msgpack option" );
@@ -221,6 +227,7 @@ static ZEND_METHOD(msgpack, pack) /* {{{ */ {
221227 smart_str buf = {0 };
222228 int php_only = MSGPACK_G (php_only );
223229 zend_bool assoc = MSGPACK_G (assoc );
230+ zend_bool force_f32 = MSGPACK_G (force_f32 );
224231 php_msgpack_base_t * base = Z_MSGPACK_BASE_P (getThis ());
225232
226233 if (zend_parse_parameters (ZEND_NUM_ARGS (), "z" , & parameter ) == FAILURE ) {
@@ -229,11 +236,13 @@ static ZEND_METHOD(msgpack, pack) /* {{{ */ {
229236
230237 MSGPACK_G (php_only ) = base -> php_only ;
231238 MSGPACK_G (assoc ) = base -> assoc ;
239+ MSGPACK_G (force_f32 ) = base -> force_f32 ;
232240
233241 php_msgpack_serialize (& buf , parameter );
234242
235243 MSGPACK_G (php_only ) = php_only ;
236244 MSGPACK_G (assoc ) = assoc ;
245+ MSGPACK_G (force_f32 ) = force_f32 ;
237246 if (buf .s ) {
238247 smart_str_0 (& buf );
239248 ZVAL_STR (return_value , buf .s );
@@ -512,6 +521,7 @@ void msgpack_init_class() /* {{{ */ {
512521
513522 zend_declare_class_constant_long (msgpack_ce , ZEND_STRS ("OPT_PHPONLY" ) - 1 , MSGPACK_CLASS_OPT_PHPONLY );
514523 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 );
515525
516526 /* unpacker */
517527 INIT_CLASS_ENTRY (ce , "MessagePackUnpacker" , msgpack_unpacker_methods );
0 commit comments