39. General prupose serialization¶
The archive module implements general purpose serialization infrastructure.
All functions and symbols are in “archive” module, use require to get access to it.
require daslib/archive
To correctly support serialization of the specific type, you need to define and implement serialize method for it. For example this is how DECS implements component serialization:
def public serialize ( var arch:Archive; var src:Component )
arch |> serialize(src.name)
arch |> serialize(src.hash)
arch |> serialize(src.stride)
arch |> serialize(src.info)
invoke(src.info.serializer, arch, src.data)
-
Archive
¶
Archive fields are
version |
uint |
reading |
bool |
stream |
|
Archive is a combination of serialization stream, and state (version, and reading status).
39.1. Classes¶
-
Serializer
¶
Base class for serializers.
it defines as follows
-
Serializer.
write
(self: Serializer; bytes: void? const implicit; size: int const)¶
write returns bool
argument |
argument type |
---|---|
self |
|
bytes |
void? const implicit |
size |
int const |
Write binary data to stream.
-
Serializer.
read
(self: Serializer; bytes: void? const implicit; size: int const)¶
read returns bool
argument |
argument type |
---|---|
self |
|
bytes |
void? const implicit |
size |
int const |
Read binary data from stream.
-
Serializer.
error
(self: Serializer; code: string const)¶
argument |
argument type |
---|---|
self |
|
code |
string const |
Report error to the archive
-
Serializer.
OK
(self: Serializer)¶
OK returns bool
Return status of the archive
-
MemSerializer : Serializer
¶
This serializer stores data in memory (in the array<uint8>)
it defines as follows
data : array<uint8>readOffset : intlastError : string
-
MemSerializer.
write
(self: Serializer; bytes: void? const implicit; size: int const)¶
write returns bool
argument |
argument type |
---|---|
self |
|
bytes |
void? const implicit |
size |
int const |
Appends bytes at the end of the data.
-
MemSerializer.
read
(self: Serializer; bytes: void? const implicit; size: int const)¶
read returns bool
argument |
argument type |
---|---|
self |
|
bytes |
void? const implicit |
size |
int const |
Reads bytes from data, advances the reading position.
-
MemSerializer.
error
(self: Serializer; code: string const)¶
argument |
argument type |
---|---|
self |
|
code |
string const |
Sets the last error code.
-
MemSerializer.
OK
(self: Serializer)¶
OK returns bool
Implements ‘OK’ method, which returns true if the serializer is in a valid state.
-
MemSerializer.
extractData
(self: MemSerializer)¶
extractData returns array<uint8>
Extract the data from the serializer.
-
MemSerializer.
getCopyOfData
(self: MemSerializer)¶
getCopyOfData returns array<uint8>
Returns copy of the data from the seiralizer.
-
MemSerializer.
getLastError
(self: MemSerializer)¶
getLastError returns string
Returns last serialization error.
39.2. Serialization¶
serialize (arch:archive::Archive -const;value:math::float3x3 -const) : void
serialize (arch:archive::Archive -const;value:math::float3x4 -const) : void
serialize (arch:archive::Archive -const;value:math::float4x4 -const) : void
serialize (arch:archive::Archive -const;value:string& -const) : void
serialize_raw (arch:archive::Archive -const;value:auto(TT)& -const) : auto
read_raw (arch:archive::Archive -const;value:auto(TT)& -const) : auto
write_raw (arch:archive::Archive -const;value:auto(TT)& -const) : auto
serialize (arch:archive::Archive -const;value:auto(TT)& -const) : auto
serialize (arch:archive::Archive -const;value:auto(TT)& -const) : auto
serialize (arch:archive::Archive -const;value:auto(TT)& -const) : auto
serialize (arch:archive::Archive -const;value:auto(TT)& -const) : auto
serialize (arch:archive::Archive -const;value:auto(TT)& -const) : auto
serialize (arch:archive::Archive -const;value:auto(TT)[] -const) : auto
serialize (arch:archive::Archive -const;value:array<auto(TT)> -const) : auto
serialize (arch:archive::Archive -const;value:table<auto(KT);auto(VT)> -const) : auto
serialize (arch:archive::Archive -const;value:auto(TT)? -const) : auto
-
serialize
(arch: Archive; value: float3x3)¶
argument |
argument type |
---|---|
arch |
|
value |
|
todo: implement preallocat string with raii
-
serialize
(arch: Archive; value: float3x4)
argument |
argument type |
---|---|
arch |
|
value |
|
todo: implement preallocat string with raii
-
serialize
(arch: Archive; value: float4x4)
argument |
argument type |
---|---|
arch |
|
value |
|
todo: implement preallocat string with raii
-
serialize
(arch: Archive; value: string&)
argument |
argument type |
---|---|
arch |
|
value |
string& |
todo: implement preallocat string with raii
-
serialize_raw
(arch: Archive; value: auto(TT)&)¶
serialize_raw returns auto
argument |
argument type |
---|---|
arch |
|
value |
auto(TT)& |
Serialize raw data (straight up bytes for raw pod)
-
read_raw
(arch: Archive; value: auto(TT)&)¶
read_raw returns auto
argument |
argument type |
---|---|
arch |
|
value |
auto(TT)& |
Read raw data (straight up bytes for raw pod)
-
write_raw
(arch: Archive; value: auto(TT)&)¶
write_raw returns auto
argument |
argument type |
---|---|
arch |
|
value |
auto(TT)& |
Write raw data (straight up bytes for raw pod)
-
serialize
(arch: Archive; value: auto(TT)&)
serialize returns auto
argument |
argument type |
---|---|
arch |
|
value |
auto(TT)& |
todo: implement preallocat string with raii
-
serialize
(arch: Archive; value: auto(TT)&)
serialize returns auto
argument |
argument type |
---|---|
arch |
|
value |
auto(TT)& |
todo: implement preallocat string with raii
-
serialize
(arch: Archive; value: auto(TT)&)
serialize returns auto
argument |
argument type |
---|---|
arch |
|
value |
auto(TT)& |
todo: implement preallocat string with raii
-
serialize
(arch: Archive; value: auto(TT)&)
serialize returns auto
argument |
argument type |
---|---|
arch |
|
value |
auto(TT)& |
todo: implement preallocat string with raii
-
serialize
(arch: Archive; value: auto(TT)&)
serialize returns auto
argument |
argument type |
---|---|
arch |
|
value |
auto(TT)& |
todo: implement preallocat string with raii
-
serialize
(arch: Archive; value: auto(TT)[])
serialize returns auto
argument |
argument type |
---|---|
arch |
|
value |
auto(TT)[-1] |
todo: implement preallocat string with raii
-
serialize
(arch: Archive; value: array<auto(TT)>)
serialize returns auto
argument |
argument type |
---|---|
arch |
|
value |
array<auto(TT)> |
todo: implement preallocat string with raii
-
serialize
(arch: Archive; value: table<auto(KT);auto(VT)>)
serialize returns auto
argument |
argument type |
---|---|
arch |
|
value |
table<auto(KT);auto(VT)> |
todo: implement preallocat string with raii
-
serialize
(arch: Archive; value: auto(TT)?)
serialize returns auto
argument |
argument type |
---|---|
arch |
|
value |
auto(TT)? |
todo: implement preallocat string with raii
39.3. Memory archive¶
-
mem_archive_save
(t: auto&)¶
mem_archive_save returns auto
argument |
argument type |
---|---|
t |
auto& |
Saves the object to a memory archive. Result is array<uint8> with the serialized data.
-
mem_archive_load
(data: array<uint8>; t: auto&; canfail: bool const)¶
mem_archive_load returns bool
argument |
argument type |
---|---|
data |
array<uint8> |
t |
auto& |
canfail |
bool const |
Loads the object from a memory archive. data is the array<uint8> with the serialized data, returned from mem_archive_save.