* Serializer interface, used to customize ion\serialize()'s behavior.
*/
interface Serializer {
- public function serialize(mixed $data, \ion\Writer|\ion\Writer\Options|array|null $writer = null) : mixed;
+ public function serialize(mixed $data, Writer|array|null $writer = null) : mixed;
}
/**
* Unserializer interface, used to customize ion\unserialize()'s behavior.
*/
interface Unserializer {
- /** @param \ion\Reader|string|resource $data */
+ /** @param Reader|string|resource $data */
public function unserialize($data) : mixed;
}
namespace ion\Reader;
/**
- * Reader options.
+ * Base implementation of ION readers.
*/
-class Options {
+abstract class Reader implements \ion\Reader {
+ /**
+ * @param string|resource $data The string or resource to read from.
+ */
public function __construct(
+ $data,
/**
* ION catalog to use for symbol lookup.
*/
*/
public readonly bool $skipCharacterValidation = false,
) {}
-}
-
-/**
- * Base implementation of ION readers.
- */
-abstract class Reader implements \ion\Reader {
- /**
- * Reader options.
- */
- public readonly ?Options $options;
public function hasChildren() : bool {}
public function getChildren() : \ion\Reader {}
*/
interface Buffer extends \ion\Reader {
/**
- * Get the buffer read from.
+ * Get the buffer being read from.
*
* @return string The buffer read from.
*/
*/
interface Stream extends \ion\Reader {
/**
- * Get the stream read from.
+ * Get the stream being read from.
*
* @return resource The stream read from.
*/
* ION buffer reader.
*/
class Reader extends \ion\Reader\Reader implements \ion\Reader\Buffer {
- /**
- * Create a new string buffer reader.
- *
- * @param string $buffer The buffer to read from.
- * @param \ion\Reader\Options|array|null $options Reader options.
- */
- public function __construct(
- string $buffer,
- \ion\Reader\Options|array|null $options = null,
- ) {}
public function getBuffer() : string {}
}
* ION stream reader.
*/
class Reader extends \ion\Reader\Reader implements \ion\Reader\Stream {
- /**
- * Create a new stream reader.
- *
- * @param resource $stream The stream to read from.
- * @param \ion\Reader\Options|array|null $options Reader options.
- */
- public function __construct(
- $stream,
- \ion\Reader\Options|array|null $options = null,
- ) {}
/**
* Get the stream read from.
namespace ion\Writer;
/**
- * ION writer options.
+ * Base implementation of common functionality of ION writers.
*/
-class Options {
+abstract class Writer implements \ion\Writer {
/**
- * Create custom ION writer options.
+ * Create custom ION writer.
*/
public function __construct(
/**
*/
public readonly int $tempBufferSize = 0x4000,
) {}
-}
-/**
- * Base implementation of common functionality of ION writers.
- */
-abstract class Writer implements \ion\Writer {
public function writeNull() : void {}
public function writeTypedNull(\ion\Type $type) : void {}
public function writeBool(bool $value) : void {}
namespace ion\Writer\Buffer;
/**
- * IO buffer writer.
+ * ION buffer writer.
*/
class Writer extends \ion\Writer\Writer implements \ion\Writer\Buffer {
- /**
- * Create a new buffer writer.
- *
- * @param \ion\Writer\Options|array|null $options Writer options.
- */
- public function __construct(
- \ion\Writer\Options|array|null $options = null,
- ) {}
public function getBuffer() : string {}
public function resetBuffer() : void {}
* Create a new stream writer.
*
* @param resource $stream The stream to write to.
- * @param \ion\Writer\Options|array|null $options Writer options.
*/
public function __construct(
$stream,
- \ion\Writer\Options|array|null $options = null,
+ /**
+ * ION catalog to use for symbol lookup.
+ */
+ public readonly ?\ion\Catalog $catalog = null,
+ /**
+ * Decimal context to use.
+ */
+ public readonly ?\ion\Decimal\Context $decimalContext = null,
+ /**
+ * Whether to output binary ION.
+ */
+ public readonly bool $outputBinary = false,
+ /**
+ * Whether to write doubles which fit in 32 bits as floats.
+ */
+ public readonly bool $compactFloats = false,
+ /**
+ * Whether to slash-escape all non ASCII bytes.
+ */
+ public readonly bool $escapeNonAscii = false,
+ /**
+ * Whether to produce pretty-printed output.
+ */
+ public readonly bool $prettyPrint = false,
+ /**
+ * Whether to indent with tabs, when pretty-printing.
+ */
+ public readonly bool $indentTabs = true,
+ /**
+ * The number of spaces to use for indentation instead of tabs, when pretty-printing.
+ */
+ public readonly int $indentSize = 2,
+ /**
+ * Whether to immediately flush every value written.
+ */
+ public readonly bool $flushEveryValue = false,
+ /**
+ * Maximum depth of nested containers.
+ */
+ public readonly int $maxContainerDepth = 10,
+ /**
+ * The maximum number of annotations allowed on a single value.
+ */
+ public readonly int $maxAnnotations = 10,
+ /**
+ * Temporary buffer size.
+ */
+ public readonly int $tempBufferSize = 0x4000,
) {}
/**
* @return resource
public readonly ?string $callCustomSerialize = null,
) {}
- public function serialize(mixed $data, \ion\Writer|\ion\Writer\Options|array|null $writer = null) : mixed {}
+ public function serialize(mixed $data, \ion\Writer|array|null $writer = null) : mixed {}
}
namespace ion\Unserializer;