improve un/serialization API
[awesomized/ext-ion] / ion_arginfo.h
index 5e35620889feb53d5f55e04006eb7cf67de4ffbc..70d6ba95814aae92a523e9c9ad671579c2181897 100644 (file)
@@ -1,14 +1,14 @@
 /* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 8858d757806dc0cbd811e4873c9770c8676c606b */
+ * Stub hash: dbe7b15e163236e988ca574dafe2004a3f2f9b5b */
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ion_serialize, 0, 1, IS_STRING, 0)
        ZEND_ARG_TYPE_INFO(0, data, IS_MIXED, 0)
-       ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, options, ion\\Writer\\Options, 0, "null")
+       ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, serializer, ion\\Serializer, 1, "null")
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ion_unserialize, 0, 1, IS_MIXED, 0)
-       ZEND_ARG_TYPE_INFO(0, serialized, IS_MIXED, 0)
-       ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, options, ion\\Reader\\Options, 0, "null")
+       ZEND_ARG_TYPE_INFO(0, data, IS_MIXED, 0)
+       ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, unserializer, ion\\Unserializer, 1, "null")
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Symbol_ImportLocation___construct, 0, 0, 2)
@@ -16,8 +16,8 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Symbol_ImportLocation___construct, 0, 0
        ZEND_ARG_TYPE_INFO(0, location, IS_LONG, 0)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Symbol___construct, 0, 0, 1)
-       ZEND_ARG_TYPE_INFO(0, value, IS_STRING, 0)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Symbol___construct, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, value, IS_STRING, 1, "null")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, sid, IS_LONG, 0, "-1")
        ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, importLocation, ion\\Symbol\\ImportLocation, 1, "null")
 ZEND_END_ARG_INFO()
@@ -26,6 +26,15 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Symbol_equals, 0, 1, _
        ZEND_ARG_OBJ_INFO(0, symbol, ion\\Symbol, 0)
 ZEND_END_ARG_INFO()
 
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Symbol___toString, 0, 0, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_class_ion_Symbol_toString arginfo_class_ion_Symbol___toString
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Decimal_Context___construct, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, bits, IS_LONG, 0, "128")
+ZEND_END_ARG_INFO()
+
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Decimal___construct, 0, 0, 1)
        ZEND_ARG_TYPE_MASK(0, number, MAY_BE_STRING|MAY_BE_LONG, NULL)
        ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, context, ion\\Decimal\\Context, 1, "null")
@@ -35,41 +44,39 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Decimal_equals, 0, 1,
        ZEND_ARG_OBJ_INFO(0, decimal, ion\\Decimal, 0)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Decimal_zero, 0, 0, IS_VOID, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Decimal_isInt, 0, 0, _IS_BOOL, 0)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Decimal___toString, 0, 0, IS_STRING, 0)
-ZEND_END_ARG_INFO()
+#define arginfo_class_ion_Decimal___toString arginfo_class_ion_Symbol___toString
 
-#define arginfo_class_ion_Decimal_toString arginfo_class_ion_Decimal___toString
+#define arginfo_class_ion_Decimal_toString arginfo_class_ion_Symbol___toString
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Decimal_toInt, 0, 0, IS_LONG, 0)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Timestamp___construct, 0, 0, 1)
-       ZEND_ARG_TYPE_INFO(0, precision, IS_LONG, 0)
-       ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, format, IS_STRING, 0, "\"c\"")
-       ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, datetime, IS_STRING, 0, "\"now\"")
+       ZEND_ARG_OBJ_TYPE_MASK(0, precision, ion\\Timestamp\\Precision, MAY_BE_LONG, NULL)
+       ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, format, IS_STRING, 1, "null")
+       ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, datetime, IS_STRING, 1, "null")
        ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, timezone, DateTimeZone, 1, "null")
 ZEND_END_ARG_INFO()
 
-#define arginfo_class_ion_Timestamp___toString arginfo_class_ion_Decimal___toString
+#define arginfo_class_ion_Timestamp___toString arginfo_class_ion_Symbol___toString
 
 ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_class_ion_Reader_getType, 0, 0, ion\\Type, 0)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Reader_hasAnnotations, 0, 0, _IS_BOOL, 0)
-ZEND_END_ARG_INFO()
+#define arginfo_class_ion_Reader_hasAnnotations arginfo_class_ion_Decimal_isInt
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Reader_hasAnnotation, 0, 1, _IS_BOOL, 0)
        ZEND_ARG_TYPE_INFO(0, annotation, IS_STRING, 0)
 ZEND_END_ARG_INFO()
 
-#define arginfo_class_ion_Reader_isNull arginfo_class_ion_Reader_hasAnnotations
+#define arginfo_class_ion_Reader_isNull arginfo_class_ion_Decimal_isInt
 
-#define arginfo_class_ion_Reader_isInStruct arginfo_class_ion_Reader_hasAnnotations
+#define arginfo_class_ion_Reader_isInStruct arginfo_class_ion_Decimal_isInt
 
-#define arginfo_class_ion_Reader_getFieldName arginfo_class_ion_Decimal___toString
+#define arginfo_class_ion_Reader_getFieldName arginfo_class_ion_Symbol___toString
 
 ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_class_ion_Reader_getFieldNameSymbol, 0, 0, ion\\Symbol, 0)
 ZEND_END_ARG_INFO()
@@ -91,7 +98,7 @@ ZEND_END_ARG_INFO()
 
 #define arginfo_class_ion_Reader_readNull arginfo_class_ion_Reader_getType
 
-#define arginfo_class_ion_Reader_readBool arginfo_class_ion_Reader_hasAnnotations
+#define arginfo_class_ion_Reader_readBool arginfo_class_ion_Decimal_isInt
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_ion_Reader_readInt, 0, 0, MAY_BE_LONG|MAY_BE_STRING)
 ZEND_END_ARG_INFO()
@@ -107,14 +114,14 @@ ZEND_END_ARG_INFO()
 
 #define arginfo_class_ion_Reader_readSymbol arginfo_class_ion_Reader_getFieldNameSymbol
 
-#define arginfo_class_ion_Reader_readString arginfo_class_ion_Decimal___toString
+#define arginfo_class_ion_Reader_readString arginfo_class_ion_Symbol___toString
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Reader_readStringPart, 0, 1, _IS_BOOL, 0)
        ZEND_ARG_INFO(1, string)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, length, IS_LONG, 0, "0x1000")
 ZEND_END_ARG_INFO()
 
-#define arginfo_class_ion_Reader_readLob arginfo_class_ion_Decimal___toString
+#define arginfo_class_ion_Reader_readLob arginfo_class_ion_Symbol___toString
 
 #define arginfo_class_ion_Reader_readLobPart arginfo_class_ion_Reader_readStringPart
 
@@ -147,16 +154,17 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Reader_Options___construct, 0, 0, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, skipCharacterValidation, _IS_BOOL, 0, "false")
 ZEND_END_ARG_INFO()
 
-#define arginfo_class_ion_Reader_Reader_hasChildren arginfo_class_ion_Reader_hasAnnotations
+#define arginfo_class_ion_Reader_Reader_hasChildren arginfo_class_ion_Decimal_isInt
 
 ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_class_ion_Reader_Reader_getChildren, 0, 0, ion\\Reader, 0)
 ZEND_END_ARG_INFO()
 
-#define arginfo_class_ion_Reader_Reader_rewind arginfo_class_ion_Decimal_zero
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Reader_Reader_rewind, 0, 0, IS_VOID, 0)
+ZEND_END_ARG_INFO()
 
-#define arginfo_class_ion_Reader_Reader_next arginfo_class_ion_Decimal_zero
+#define arginfo_class_ion_Reader_Reader_next arginfo_class_ion_Reader_Reader_rewind
 
-#define arginfo_class_ion_Reader_Reader_valid arginfo_class_ion_Reader_hasAnnotations
+#define arginfo_class_ion_Reader_Reader_valid arginfo_class_ion_Decimal_isInt
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Reader_Reader_key, 0, 0, IS_MIXED, 0)
 ZEND_END_ARG_INFO()
@@ -165,15 +173,15 @@ ZEND_END_ARG_INFO()
 
 #define arginfo_class_ion_Reader_Reader_getType arginfo_class_ion_Reader_getType
 
-#define arginfo_class_ion_Reader_Reader_hasAnnotations arginfo_class_ion_Reader_hasAnnotations
+#define arginfo_class_ion_Reader_Reader_hasAnnotations arginfo_class_ion_Decimal_isInt
 
 #define arginfo_class_ion_Reader_Reader_hasAnnotation arginfo_class_ion_Reader_hasAnnotation
 
-#define arginfo_class_ion_Reader_Reader_isNull arginfo_class_ion_Reader_hasAnnotations
+#define arginfo_class_ion_Reader_Reader_isNull arginfo_class_ion_Decimal_isInt
 
-#define arginfo_class_ion_Reader_Reader_isInStruct arginfo_class_ion_Reader_hasAnnotations
+#define arginfo_class_ion_Reader_Reader_isInStruct arginfo_class_ion_Decimal_isInt
 
-#define arginfo_class_ion_Reader_Reader_getFieldName arginfo_class_ion_Decimal___toString
+#define arginfo_class_ion_Reader_Reader_getFieldName arginfo_class_ion_Symbol___toString
 
 #define arginfo_class_ion_Reader_Reader_getFieldNameSymbol arginfo_class_ion_Reader_getFieldNameSymbol
 
@@ -189,7 +197,7 @@ ZEND_END_ARG_INFO()
 
 #define arginfo_class_ion_Reader_Reader_readNull arginfo_class_ion_Reader_getType
 
-#define arginfo_class_ion_Reader_Reader_readBool arginfo_class_ion_Reader_hasAnnotations
+#define arginfo_class_ion_Reader_Reader_readBool arginfo_class_ion_Decimal_isInt
 
 #define arginfo_class_ion_Reader_Reader_readInt arginfo_class_ion_Reader_readInt
 
@@ -201,11 +209,11 @@ ZEND_END_ARG_INFO()
 
 #define arginfo_class_ion_Reader_Reader_readSymbol arginfo_class_ion_Reader_getFieldNameSymbol
 
-#define arginfo_class_ion_Reader_Reader_readString arginfo_class_ion_Decimal___toString
+#define arginfo_class_ion_Reader_Reader_readString arginfo_class_ion_Symbol___toString
 
 #define arginfo_class_ion_Reader_Reader_readStringPart arginfo_class_ion_Reader_readStringPart
 
-#define arginfo_class_ion_Reader_Reader_readLob arginfo_class_ion_Decimal___toString
+#define arginfo_class_ion_Reader_Reader_readLob arginfo_class_ion_Symbol___toString
 
 #define arginfo_class_ion_Reader_Reader_readLobPart arginfo_class_ion_Reader_readStringPart
 
@@ -219,14 +227,14 @@ ZEND_END_ARG_INFO()
 
 #define arginfo_class_ion_Reader_Reader_getValueLength arginfo_class_ion_Decimal_toInt
 
-#define arginfo_class_ion_Reader_Buffer_getBuffer arginfo_class_ion_Decimal___toString
+#define arginfo_class_ion_Reader_Buffer_getBuffer arginfo_class_ion_Symbol___toString
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Reader_Buffer_Reader___construct, 0, 0, 1)
        ZEND_ARG_TYPE_INFO(0, buffer, IS_STRING, 0)
        ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, options, ion\\Reader\\Options, 1, "null")
 ZEND_END_ARG_INFO()
 
-#define arginfo_class_ion_Reader_Buffer_Reader_getBuffer arginfo_class_ion_Decimal___toString
+#define arginfo_class_ion_Reader_Buffer_Reader_getBuffer arginfo_class_ion_Symbol___toString
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Reader_Stream_getStream, 0, 0, 0)
 ZEND_END_ARG_INFO()
@@ -271,7 +279,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Writer_Options___construct, 0, 0, 0)
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, allocationPageSize, IS_LONG, 0, "0x1000")
 ZEND_END_ARG_INFO()
 
-#define arginfo_class_ion_Writer_writeNull arginfo_class_ion_Decimal_zero
+#define arginfo_class_ion_Writer_writeNull arginfo_class_ion_Reader_Reader_rewind
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Writer_writeTypedNull, 0, 1, IS_VOID, 0)
        ZEND_ARG_OBJ_INFO(0, type, ion\\Type, 0)
@@ -315,11 +323,11 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Writer_appendLob, 0, 1
        ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0)
 ZEND_END_ARG_INFO()
 
-#define arginfo_class_ion_Writer_finishLob arginfo_class_ion_Decimal_zero
+#define arginfo_class_ion_Writer_finishLob arginfo_class_ion_Reader_Reader_rewind
 
 #define arginfo_class_ion_Writer_startContainer arginfo_class_ion_Writer_writeTypedNull
 
-#define arginfo_class_ion_Writer_finishContainer arginfo_class_ion_Decimal_zero
+#define arginfo_class_ion_Writer_finishContainer arginfo_class_ion_Reader_Reader_rewind
 
 ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Writer_writeFieldName, 0, 1, IS_VOID, 0)
        ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0)
@@ -341,7 +349,7 @@ ZEND_END_ARG_INFO()
 
 #define arginfo_class_ion_Writer_writeAll arginfo_class_ion_Writer_writeOne
 
-#define arginfo_class_ion_Writer_Writer_writeNull arginfo_class_ion_Decimal_zero
+#define arginfo_class_ion_Writer_Writer_writeNull arginfo_class_ion_Reader_Reader_rewind
 
 #define arginfo_class_ion_Writer_Writer_writeTypedNull arginfo_class_ion_Writer_writeTypedNull
 
@@ -367,11 +375,11 @@ ZEND_END_ARG_INFO()
 
 #define arginfo_class_ion_Writer_Writer_appendLob arginfo_class_ion_Writer_appendLob
 
-#define arginfo_class_ion_Writer_Writer_finishLob arginfo_class_ion_Decimal_zero
+#define arginfo_class_ion_Writer_Writer_finishLob arginfo_class_ion_Reader_Reader_rewind
 
 #define arginfo_class_ion_Writer_Writer_startContainer arginfo_class_ion_Writer_writeTypedNull
 
-#define arginfo_class_ion_Writer_Writer_finishContainer arginfo_class_ion_Decimal_zero
+#define arginfo_class_ion_Writer_Writer_finishContainer arginfo_class_ion_Reader_Reader_rewind
 
 #define arginfo_class_ion_Writer_Writer_writeFieldName arginfo_class_ion_Writer_writeFieldName
 
@@ -387,14 +395,14 @@ ZEND_END_ARG_INFO()
 
 #define arginfo_class_ion_Writer_Writer_writeAll arginfo_class_ion_Writer_writeOne
 
-#define arginfo_class_ion_Writer_Buffer_getBuffer arginfo_class_ion_Decimal___toString
+#define arginfo_class_ion_Writer_Buffer_getBuffer arginfo_class_ion_Symbol___toString
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Writer_Buffer_Writer___construct, 0, 0, 1)
        ZEND_ARG_TYPE_INFO(1, buffer, IS_STRING, 1)
        ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, options, ion\\Writer\\Options, 1, "null")
 ZEND_END_ARG_INFO()
 
-#define arginfo_class_ion_Writer_Buffer_Writer_getBuffer arginfo_class_ion_Decimal___toString
+#define arginfo_class_ion_Writer_Buffer_Writer_getBuffer arginfo_class_ion_Symbol___toString
 
 #define arginfo_class_ion_Writer_Stream_getStream arginfo_class_ion_Reader_Stream_getStream
 
@@ -405,27 +413,33 @@ ZEND_END_ARG_INFO()
 
 #define arginfo_class_ion_Writer_Stream_Writer_getStream arginfo_class_ion_Reader_Stream_getStream
 
-ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_PHP_Serializer___construct, 0, 0, 1)
-       ZEND_ARG_OBJ_INFO(0, writer, ion\\Writer, 0)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Serializer___invoke, 0, 1, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, data, IS_MIXED, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_Unserializer___invoke, 0, 1, IS_MIXED, 0)
+       ZEND_ARG_INFO(0, data)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Serializer_PHP___construct, 0, 0, 0)
+       ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, writerOptions, ion\\Writer\\Options, 1, "null")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, callMagicSerialize, _IS_BOOL, 0, "true")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, callCustomSerialize, IS_STRING, 1, "null")
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ion_PHP_Serializer___invoke, 0, 1, IS_VOID, 0)
-       ZEND_ARG_TYPE_INFO(0, data, IS_MIXED, 0)
-ZEND_END_ARG_INFO()
+#define arginfo_class_ion_Serializer_PHP___invoke arginfo_class_ion_Serializer___invoke
 
-#define arginfo_class_ion_PHP_Serializer_serialize arginfo_class_ion_PHP_Serializer___invoke
+#define arginfo_class_ion_Serializer_PHP_serialize arginfo_class_ion_Serializer___invoke
 
-ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_PHP_Unserializer___construct, 0, 0, 1)
-       ZEND_ARG_OBJ_INFO(0, reader, ion\\Reader, 0)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ion_Unserializer_PHP___construct, 0, 0, 0)
+       ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, readerOptions, ion\\Reader\\Options, 1, "null")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, callMagicUnserialize, _IS_BOOL, 0, "true")
        ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, callCustomUnserialize, IS_STRING, 1, "null")
 ZEND_END_ARG_INFO()
 
-#define arginfo_class_ion_PHP_Unserializer___invoke arginfo_class_ion_Reader_Reader_key
+#define arginfo_class_ion_Unserializer_PHP___invoke arginfo_class_ion_Unserializer___invoke
 
-#define arginfo_class_ion_PHP_Unserializer_unserialize arginfo_class_ion_Reader_Reader_key
+#define arginfo_class_ion_Unserializer_PHP_unserialize arginfo_class_ion_Unserializer___invoke
 
 
 ZEND_FUNCTION(ion_serialize);
@@ -433,9 +447,11 @@ ZEND_FUNCTION(ion_unserialize);
 ZEND_METHOD(ion_Symbol_ImportLocation, __construct);
 ZEND_METHOD(ion_Symbol, __construct);
 ZEND_METHOD(ion_Symbol, equals);
+ZEND_METHOD(ion_Symbol, __toString);
+ZEND_METHOD(ion_Decimal_Context, __construct);
 ZEND_METHOD(ion_Decimal, __construct);
 ZEND_METHOD(ion_Decimal, equals);
-ZEND_METHOD(ion_Decimal, zero);
+ZEND_METHOD(ion_Decimal, isInt);
 ZEND_METHOD(ion_Decimal, __toString);
 ZEND_METHOD(ion_Decimal, toInt);
 ZEND_METHOD(ion_Timestamp, __construct);
@@ -510,12 +526,12 @@ ZEND_METHOD(ion_Writer_Buffer_Writer, __construct);
 ZEND_METHOD(ion_Writer_Buffer_Writer, getBuffer);
 ZEND_METHOD(ion_Writer_Stream_Writer, __construct);
 ZEND_METHOD(ion_Writer_Stream_Writer, getStream);
-ZEND_METHOD(ion_PHP_Serializer, __construct);
-ZEND_METHOD(ion_PHP_Serializer, __invoke);
-ZEND_METHOD(ion_PHP_Serializer, serialize);
-ZEND_METHOD(ion_PHP_Unserializer, __construct);
-ZEND_METHOD(ion_PHP_Unserializer, __invoke);
-ZEND_METHOD(ion_PHP_Unserializer, unserialize);
+ZEND_METHOD(ion_Serializer_PHP, __construct);
+ZEND_METHOD(ion_Serializer_PHP, __invoke);
+ZEND_METHOD(ion_Serializer_PHP, serialize);
+ZEND_METHOD(ion_Unserializer_PHP, __construct);
+ZEND_METHOD(ion_Unserializer_PHP, __invoke);
+ZEND_METHOD(ion_Unserializer_PHP, unserialize);
 
 
 static const zend_function_entry ext_functions[] = {
@@ -554,6 +570,8 @@ static const zend_function_entry class_ion_Symbol_System_SID_methods[] = {
 static const zend_function_entry class_ion_Symbol_methods[] = {
        ZEND_ME(ion_Symbol, __construct, arginfo_class_ion_Symbol___construct, ZEND_ACC_PUBLIC)
        ZEND_ME(ion_Symbol, equals, arginfo_class_ion_Symbol_equals, ZEND_ACC_PUBLIC)
+       ZEND_ME(ion_Symbol, __toString, arginfo_class_ion_Symbol___toString, ZEND_ACC_PUBLIC)
+       ZEND_MALIAS(ion_Symbol, toString, __toString, arginfo_class_ion_Symbol_toString, ZEND_ACC_PUBLIC)
        ZEND_FE_END
 };
 
@@ -573,10 +591,16 @@ static const zend_function_entry class_ion_Collection_methods[] = {
 };
 
 
+static const zend_function_entry class_ion_Decimal_Context_methods[] = {
+       ZEND_ME(ion_Decimal_Context, __construct, arginfo_class_ion_Decimal_Context___construct, ZEND_ACC_PUBLIC)
+       ZEND_FE_END
+};
+
+
 static const zend_function_entry class_ion_Decimal_methods[] = {
        ZEND_ME(ion_Decimal, __construct, arginfo_class_ion_Decimal___construct, ZEND_ACC_PUBLIC)
        ZEND_ME(ion_Decimal, equals, arginfo_class_ion_Decimal_equals, ZEND_ACC_PUBLIC)
-       ZEND_ME(ion_Decimal, zero, arginfo_class_ion_Decimal_zero, ZEND_ACC_PUBLIC)
+       ZEND_ME(ion_Decimal, isInt, arginfo_class_ion_Decimal_isInt, ZEND_ACC_PUBLIC)
        ZEND_ME(ion_Decimal, __toString, arginfo_class_ion_Decimal___toString, ZEND_ACC_PUBLIC)
        ZEND_MALIAS(ion_Decimal, toString, __toString, arginfo_class_ion_Decimal_toString, ZEND_ACC_PUBLIC)
        ZEND_ME(ion_Decimal, toInt, arginfo_class_ion_Decimal_toInt, ZEND_ACC_PUBLIC)
@@ -584,7 +608,7 @@ static const zend_function_entry class_ion_Decimal_methods[] = {
 };
 
 
-static const zend_function_entry class_ion_Decimal_Context_methods[] = {
+static const zend_function_entry class_ion_Timestamp_Precision_methods[] = {
        ZEND_FE_END
 };
 
@@ -793,18 +817,30 @@ static const zend_function_entry class_ion_Writer_Stream_Writer_methods[] = {
 };
 
 
-static const zend_function_entry class_ion_PHP_Serializer_methods[] = {
-       ZEND_ME(ion_PHP_Serializer, __construct, arginfo_class_ion_PHP_Serializer___construct, ZEND_ACC_PUBLIC)
-       ZEND_ME(ion_PHP_Serializer, __invoke, arginfo_class_ion_PHP_Serializer___invoke, ZEND_ACC_PUBLIC)
-       ZEND_ME(ion_PHP_Serializer, serialize, arginfo_class_ion_PHP_Serializer_serialize, ZEND_ACC_PROTECTED)
+static const zend_function_entry class_ion_Serializer_methods[] = {
+       ZEND_ABSTRACT_ME_WITH_FLAGS(ion_Serializer, __invoke, arginfo_class_ion_Serializer___invoke, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
        ZEND_FE_END
 };
 
 
-static const zend_function_entry class_ion_PHP_Unserializer_methods[] = {
-       ZEND_ME(ion_PHP_Unserializer, __construct, arginfo_class_ion_PHP_Unserializer___construct, ZEND_ACC_PUBLIC)
-       ZEND_ME(ion_PHP_Unserializer, __invoke, arginfo_class_ion_PHP_Unserializer___invoke, ZEND_ACC_PUBLIC)
-       ZEND_ME(ion_PHP_Unserializer, unserialize, arginfo_class_ion_PHP_Unserializer_unserialize, ZEND_ACC_PROTECTED)
+static const zend_function_entry class_ion_Unserializer_methods[] = {
+       ZEND_ABSTRACT_ME_WITH_FLAGS(ion_Unserializer, __invoke, arginfo_class_ion_Unserializer___invoke, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
+       ZEND_FE_END
+};
+
+
+static const zend_function_entry class_ion_Serializer_PHP_methods[] = {
+       ZEND_ME(ion_Serializer_PHP, __construct, arginfo_class_ion_Serializer_PHP___construct, ZEND_ACC_PUBLIC)
+       ZEND_ME(ion_Serializer_PHP, __invoke, arginfo_class_ion_Serializer_PHP___invoke, ZEND_ACC_PUBLIC)
+       ZEND_ME(ion_Serializer_PHP, serialize, arginfo_class_ion_Serializer_PHP_serialize, ZEND_ACC_PROTECTED)
+       ZEND_FE_END
+};
+
+
+static const zend_function_entry class_ion_Unserializer_PHP_methods[] = {
+       ZEND_ME(ion_Unserializer_PHP, __construct, arginfo_class_ion_Unserializer_PHP___construct, ZEND_ACC_PUBLIC)
+       ZEND_ME(ion_Unserializer_PHP, __invoke, arginfo_class_ion_Unserializer_PHP___invoke, ZEND_ACC_PUBLIC)
+       ZEND_ME(ion_Unserializer_PHP, unserialize, arginfo_class_ion_Unserializer_PHP_unserialize, ZEND_ACC_PROTECTED)
        ZEND_FE_END
 };
 
@@ -1063,7 +1099,7 @@ static zend_class_entry *register_class_ion_Symbol(void)
        zval property_value_default_value;
        ZVAL_UNDEF(&property_value_default_value);
        zend_string *property_value_name = zend_string_init("value", sizeof("value") - 1, 1);
-       zend_declare_typed_property(class_entry, property_value_name, &property_value_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
+       zend_declare_typed_property(class_entry, property_value_name, &property_value_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_NULL));
        zend_string_release(property_value_name);
 
        zval property_sid_default_value;
@@ -1112,6 +1148,22 @@ static zend_class_entry *register_class_ion_Collection(void)
        return class_entry;
 }
 
+static zend_class_entry *register_class_ion_Decimal_Context(void)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_NS_CLASS_ENTRY(ce, "ion\\Decimal", "Context", class_ion_Decimal_Context_methods);
+       class_entry = zend_register_internal_class_ex(&ce, NULL);
+
+       zval property_bits_default_value;
+       ZVAL_UNDEF(&property_bits_default_value);
+       zend_string *property_bits_name = zend_string_init("bits", sizeof("bits") - 1, 1);
+       zend_declare_typed_property(class_entry, property_bits_name, &property_bits_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_LONG));
+       zend_string_release(property_bits_name);
+
+       return class_entry;
+}
+
 static zend_class_entry *register_class_ion_Decimal(void)
 {
        zend_class_entry ce, *class_entry;
@@ -1119,6 +1171,12 @@ static zend_class_entry *register_class_ion_Decimal(void)
        INIT_NS_CLASS_ENTRY(ce, "ion", "Decimal", class_ion_Decimal_methods);
        class_entry = zend_register_internal_class_ex(&ce, NULL);
 
+       zval property_number_default_value;
+       ZVAL_UNDEF(&property_number_default_value);
+       zend_string *property_number_name = zend_string_init("number", sizeof("number") - 1, 1);
+       zend_declare_typed_property(class_entry, property_number_name, &property_number_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING|MAY_BE_LONG));
+       zend_string_release(property_number_name);
+
        zend_string *property_context_class_ion_Decimal_Context = zend_string_init("ion\\Decimal\\Context", sizeof("ion\\Decimal\\Context")-1, 1);
        zval property_context_default_value;
        ZVAL_UNDEF(&property_context_default_value);
@@ -1129,12 +1187,33 @@ static zend_class_entry *register_class_ion_Decimal(void)
        return class_entry;
 }
 
-static zend_class_entry *register_class_ion_Decimal_Context(void)
+static zend_class_entry *register_class_ion_Timestamp_Precision(void)
 {
-       zend_class_entry ce, *class_entry;
+       zend_class_entry *class_entry = zend_register_internal_enum("ion\\Timestamp\\Precision", IS_LONG, class_ion_Timestamp_Precision_methods);
 
-       INIT_NS_CLASS_ENTRY(ce, "ion\\Decimal", "Context", class_ion_Decimal_Context_methods);
-       class_entry = zend_register_internal_class_ex(&ce, NULL);
+       zval enum_case_Year_value;
+       ZVAL_LONG(&enum_case_Year_value, 1);
+       zend_enum_add_case_cstr(class_entry, "Year", &enum_case_Year_value);
+
+       zval enum_case_Month_value;
+       ZVAL_LONG(&enum_case_Month_value, 3);
+       zend_enum_add_case_cstr(class_entry, "Month", &enum_case_Month_value);
+
+       zval enum_case_Day_value;
+       ZVAL_LONG(&enum_case_Day_value, 7);
+       zend_enum_add_case_cstr(class_entry, "Day", &enum_case_Day_value);
+
+       zval enum_case_Min_value;
+       ZVAL_LONG(&enum_case_Min_value, 23);
+       zend_enum_add_case_cstr(class_entry, "Min", &enum_case_Min_value);
+
+       zval enum_case_Sec_value;
+       ZVAL_LONG(&enum_case_Sec_value, 55);
+       zend_enum_add_case_cstr(class_entry, "Sec", &enum_case_Sec_value);
+
+       zval enum_case_Frac_value;
+       ZVAL_LONG(&enum_case_Frac_value, 119);
+       zend_enum_add_case_cstr(class_entry, "Frac", &enum_case_Frac_value);
 
        return class_entry;
 }
@@ -1494,19 +1573,40 @@ static zend_class_entry *register_class_ion_Writer_Stream_Writer(zend_class_entr
        return class_entry;
 }
 
-static zend_class_entry *register_class_ion_PHP_Serializer(void)
+static zend_class_entry *register_class_ion_Serializer(void)
 {
        zend_class_entry ce, *class_entry;
 
-       INIT_NS_CLASS_ENTRY(ce, "ion\\PHP", "Serializer", class_ion_PHP_Serializer_methods);
+       INIT_NS_CLASS_ENTRY(ce, "ion", "Serializer", class_ion_Serializer_methods);
+       class_entry = zend_register_internal_interface(&ce);
+
+       return class_entry;
+}
+
+static zend_class_entry *register_class_ion_Unserializer(void)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_NS_CLASS_ENTRY(ce, "ion", "Unserializer", class_ion_Unserializer_methods);
+       class_entry = zend_register_internal_interface(&ce);
+
+       return class_entry;
+}
+
+static zend_class_entry *register_class_ion_Serializer_PHP(zend_class_entry *class_entry_ion_Serializer)
+{
+       zend_class_entry ce, *class_entry;
+
+       INIT_NS_CLASS_ENTRY(ce, "ion\\Serializer", "PHP", class_ion_Serializer_PHP_methods);
        class_entry = zend_register_internal_class_ex(&ce, NULL);
+       zend_class_implements(class_entry, 1, class_entry_ion_Serializer);
 
-       zend_string *property_writer_class_ion_Writer = zend_string_init("ion\\Writer", sizeof("ion\\Writer")-1, 1);
-       zval property_writer_default_value;
-       ZVAL_UNDEF(&property_writer_default_value);
-       zend_string *property_writer_name = zend_string_init("writer", sizeof("writer") - 1, 1);
-       zend_declare_typed_property(class_entry, property_writer_name, &property_writer_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_writer_class_ion_Writer, 0, 0));
-       zend_string_release(property_writer_name);
+       zend_string *property_writerOptions_class_ion_Writer_Options = zend_string_init("ion\\Writer\\Options", sizeof("ion\\Writer\\Options")-1, 1);
+       zval property_writerOptions_default_value;
+       ZVAL_UNDEF(&property_writerOptions_default_value);
+       zend_string *property_writerOptions_name = zend_string_init("writerOptions", sizeof("writerOptions") - 1, 1);
+       zend_declare_typed_property(class_entry, property_writerOptions_name, &property_writerOptions_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_writerOptions_class_ion_Writer_Options, 0, MAY_BE_NULL));
+       zend_string_release(property_writerOptions_name);
 
        zval property_callMagicSerialize_default_value;
        ZVAL_UNDEF(&property_callMagicSerialize_default_value);
@@ -1523,19 +1623,20 @@ static zend_class_entry *register_class_ion_PHP_Serializer(void)
        return class_entry;
 }
 
-static zend_class_entry *register_class_ion_PHP_Unserializer(void)
+static zend_class_entry *register_class_ion_Unserializer_PHP(zend_class_entry *class_entry_ion_Unserializer)
 {
        zend_class_entry ce, *class_entry;
 
-       INIT_NS_CLASS_ENTRY(ce, "ion\\PHP", "Unserializer", class_ion_PHP_Unserializer_methods);
+       INIT_NS_CLASS_ENTRY(ce, "ion\\Unserializer", "PHP", class_ion_Unserializer_PHP_methods);
        class_entry = zend_register_internal_class_ex(&ce, NULL);
-
-       zend_string *property_reader_class_ion_Reader = zend_string_init("ion\\Reader", sizeof("ion\\Reader")-1, 1);
-       zval property_reader_default_value;
-       ZVAL_UNDEF(&property_reader_default_value);
-       zend_string *property_reader_name = zend_string_init("reader", sizeof("reader") - 1, 1);
-       zend_declare_typed_property(class_entry, property_reader_name, &property_reader_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_reader_class_ion_Reader, 0, 0));
-       zend_string_release(property_reader_name);
+       zend_class_implements(class_entry, 1, class_entry_ion_Unserializer);
+
+       zend_string *property_readerOptions_class_ion_Reader_Options = zend_string_init("ion\\Reader\\Options", sizeof("ion\\Reader\\Options")-1, 1);
+       zval property_readerOptions_default_value;
+       ZVAL_UNDEF(&property_readerOptions_default_value);
+       zend_string *property_readerOptions_name = zend_string_init("readerOptions", sizeof("readerOptions") - 1, 1);
+       zend_declare_typed_property(class_entry, property_readerOptions_name, &property_readerOptions_default_value, ZEND_ACC_PUBLIC|ZEND_ACC_READONLY, NULL, (zend_type) ZEND_TYPE_INIT_CLASS(property_readerOptions_class_ion_Reader_Options, 0, MAY_BE_NULL));
+       zend_string_release(property_readerOptions_name);
 
        zval property_callMagicUnserialize_default_value;
        ZVAL_UNDEF(&property_callMagicUnserialize_default_value);