ZEND_PARSE_PARAMETERS_NONE();
- int32_t count, max = php_ion_obj(reader_options, obj->opt)->opt.max_annotation_count;
+ int32_t count, max;
+ if (obj->opt) {
+ max = php_ion_obj(reader_options, obj->opt)->opt.max_annotation_count;
+ } else {
+ max = 10;
+ }
ION_SYMBOL *ptr = ecalloc(sizeof(*ptr), max);
iERR err = ion_reader_get_annotation_symbols(obj->reader, ptr, max, &count);
if (!err) {
ZEND_PARSE_PARAMETERS_NONE();
- ION_CHECK(ion_reader_read_double(obj->reader, &Z_DVAL_P(return_value)));
+ double dval;
+ ION_CHECK(ion_reader_read_double(obj->reader, &dval));
+ RETURN_DOUBLE(dval);
}
static ZEND_METHOD(ion_Reader_Reader, readDecimal)
{
zval *zstream;
zend_long length;
- ZEND_PARSE_PARAMETERS_START(1, 2);
+ ZEND_PARSE_PARAMETERS_START(2, 2);
Z_PARAM_RESOURCE(zstream);
Z_PARAM_LONG(length)
ZEND_PARSE_PARAMETERS_END();
SIZE flushed;
ION_CHECK(ion_writer_flush(obj->writer, &flushed));
- if (obj->type == BUFFER_WRITER) {
- smart_str_0(&obj->buffer.str);
- }
RETURN_LONG(flushed);
}
static ZEND_METHOD(ion_Writer_Writer, finish)
SIZE flushed;
ION_CHECK(ion_writer_finish(obj->writer, &flushed));
- if (obj->type == BUFFER_WRITER) {
- smart_str_0(&obj->buffer.str);
- }
RETURN_LONG(flushed);
}
static ZEND_METHOD(ion_Writer_Writer, writeOne)
php_ion_writer *obj = php_ion_obj(writer, Z_OBJ_P(ZEND_THIS));
PTR_CHECK(obj);
- zval *ref;
- ZEND_PARSE_PARAMETERS_START(1, 2)
- Z_PARAM_ZVAL(ref)
+ ZEND_PARSE_PARAMETERS_START(0, 1)
Z_PARAM_OPTIONAL
Z_PARAM_OBJ_OF_CLASS_OR_NULL(obj->opt, ce_Writer_Options)
ZEND_PARSE_PARAMETERS_END();
obj->type = BUFFER_WRITER;
- ZVAL_COPY(&obj->buffer.val, ref);
- zval_dtor(Z_REFVAL_P(ref));
-
php_ion_writer_ctor(obj);
}
static ZEND_METHOD(ion_Writer_Buffer_Writer, getBuffer)
ZEND_PARSE_PARAMETERS_NONE();
- RETVAL_STR(zend_string_dup(obj->buffer.str.s, 0));
+ RETVAL_STR(php_ion_writer_buffer_copy(obj));
+}
+static ZEND_METHOD(ion_Writer_Buffer_Writer, resetBuffer)
+{
+ php_ion_writer *obj = php_ion_obj(writer, Z_OBJ_P(ZEND_THIS));
+ OBJ_CHECK(obj);
+
+ ZEND_PARSE_PARAMETERS_NONE();
+
+ php_ion_writer_buffer_reset(obj);
}
static ZEND_METHOD(ion_Writer_Stream_Writer, __construct)
{