+}
+
+php_ion_decl(writer, Writer_Writer, php_ion_writer_dtor(obj));
+
+typedef struct php_ion_serializer_php {
+ php_ion_serializer serializer;
+ zend_object *opt, std;
+} php_ion_serializer_php;
+
+static inline void php_ion_serializer_php_ctor(php_ion_serializer_php *ser_obj)
+{
+ php_ion_serializer *global_ser = &php_ion_globals.serializer;
+ ser_obj->serializer.ids = global_ser->ids;
+ ser_obj->serializer.tmp = global_ser->tmp;
+
+ zend_update_property_bool(ser_obj->std.ce, &ser_obj->std, ZEND_STRL("callMagicSerialize"),
+ ser_obj->serializer.call_magic);
+ if (ser_obj->serializer.call_custom) {
+ zend_update_property_str(ser_obj->std.ce, &ser_obj->std, ZEND_STRL("callCustomSerialize"),
+ ser_obj->serializer.call_custom);
+ ser_obj->serializer.call_custom = zend_string_tolower(ser_obj->serializer.call_custom);
+ } else {
+ zend_update_property_null(ser_obj->std.ce, &ser_obj->std, ZEND_STRL("callCustomSerialize"));
+ }
+ if (ser_obj->opt) {
+ php_ion_writer_options *o_woptions = php_ion_obj(writer_options, ser_obj->opt);
+ ser_obj->serializer.options = &o_woptions->opt;
+ update_property_obj(&ser_obj->std, ZEND_STRL("writerOptions"), ser_obj->opt);
+ } else {
+ zend_update_property_null(ser_obj->std.ce, &ser_obj->std, ZEND_STRL("writerOptions"));