serial: implement returning fx_result values from (de)serialisers
This commit is contained in:
+10
-6
@@ -3,18 +3,22 @@
|
|||||||
|
|
||||||
/*** VIRTUAL FUNCTIONS ********************************************************/
|
/*** VIRTUAL FUNCTIONS ********************************************************/
|
||||||
|
|
||||||
static enum fx_status bitcode_serialise(
|
static struct fx_error *bitcode_serialise(
|
||||||
fx_serial_ctx *serial, fx_object *src, fx_stream *dest,
|
fx_serial_ctx *serial,
|
||||||
|
fx_object *src,
|
||||||
|
fx_stream *dest,
|
||||||
enum fx_serial_flags flags)
|
enum fx_serial_flags flags)
|
||||||
{
|
{
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_RESULT_ERR(NOT_SUPPORTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum fx_status bitcode_deserialise(
|
static struct fx_error *bitcode_deserialise(
|
||||||
fx_serial_ctx *serial, fx_stream *src, fx_object **dest,
|
fx_serial_ctx *serial,
|
||||||
|
fx_stream *src,
|
||||||
|
fx_object **dest,
|
||||||
enum fx_serial_flags flags)
|
enum fx_serial_flags flags)
|
||||||
{
|
{
|
||||||
return FX_ERR_NOT_SUPPORTED;
|
return FX_RESULT_ERR(NOT_SUPPORTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bitcode_serial_ctx_init(fx_object *obj, void *priv)
|
static void bitcode_serial_ctx_init(fx_object *obj, void *priv)
|
||||||
|
|||||||
+30
-10
@@ -10,14 +10,16 @@
|
|||||||
|
|
||||||
static void serial_ctx_init(fx_object *obj, void *priv)
|
static void serial_ctx_init(fx_object *obj, void *priv)
|
||||||
{
|
{
|
||||||
fx_serial_ctx_data *data = fx_object_get_protected(obj, FX_TYPE_SERIAL_CTX);
|
fx_serial_ctx_data *data
|
||||||
|
= fx_object_get_protected(obj, FX_TYPE_SERIAL_CTX);
|
||||||
|
|
||||||
data->ctx_streambuf = fx_stream_buffer_create_dynamic(2048);
|
data->ctx_streambuf = fx_stream_buffer_create_dynamic(2048);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void serial_ctx_fini(fx_object *obj, void *priv)
|
static void serial_ctx_fini(fx_object *obj, void *priv)
|
||||||
{
|
{
|
||||||
fx_serial_ctx_data *data = fx_object_get_protected(obj, FX_TYPE_SERIAL_CTX);
|
fx_serial_ctx_data *data
|
||||||
|
= fx_object_get_protected(obj, FX_TYPE_SERIAL_CTX);
|
||||||
|
|
||||||
fx_stream_buffer_unref(data->ctx_streambuf);
|
fx_stream_buffer_unref(data->ctx_streambuf);
|
||||||
}
|
}
|
||||||
@@ -40,18 +42,36 @@ FX_TYPE_DEFINITION_END(fx_serial_ctx)
|
|||||||
|
|
||||||
/*** ITERATOR FUNCTIONS *******************************************************/
|
/*** ITERATOR FUNCTIONS *******************************************************/
|
||||||
|
|
||||||
enum fx_status fx_serial_ctx_serialise(
|
fx_result fx_serial_ctx_serialise(
|
||||||
fx_serial_ctx *ctx, fx_object *src, fx_stream *dest, enum fx_serial_flags flags)
|
fx_serial_ctx *ctx,
|
||||||
|
fx_object *src,
|
||||||
|
fx_stream *dest,
|
||||||
|
enum fx_serial_flags flags)
|
||||||
{
|
{
|
||||||
FX_CLASS_DISPATCH_VIRTUAL(
|
FX_CLASS_DISPATCH_VIRTUAL(
|
||||||
fx_serial_ctx, FX_TYPE_SERIAL_CTX, FX_ERR_NOT_SUPPORTED,
|
fx_serial_ctx,
|
||||||
s_serialise, ctx, src, dest, flags);
|
FX_TYPE_SERIAL_CTX,
|
||||||
|
FX_RESULT_ERR(NOT_SUPPORTED),
|
||||||
|
s_serialise,
|
||||||
|
ctx,
|
||||||
|
src,
|
||||||
|
dest,
|
||||||
|
flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum fx_status fx_serial_ctx_deserialise(
|
fx_result fx_serial_ctx_deserialise(
|
||||||
fx_serial_ctx *ctx, fx_stream *src, fx_object **dest, enum fx_serial_flags flags)
|
fx_serial_ctx *ctx,
|
||||||
|
fx_stream *src,
|
||||||
|
fx_object **dest,
|
||||||
|
enum fx_serial_flags flags)
|
||||||
{
|
{
|
||||||
FX_CLASS_DISPATCH_VIRTUAL(
|
FX_CLASS_DISPATCH_VIRTUAL(
|
||||||
fx_serial_ctx, FX_TYPE_SERIAL_CTX, FX_ERR_NOT_SUPPORTED,
|
fx_serial_ctx,
|
||||||
s_deserialise, ctx, src, dest, flags);
|
FX_TYPE_SERIAL_CTX,
|
||||||
|
FX_RESULT_ERR(NOT_SUPPORTED),
|
||||||
|
s_deserialise,
|
||||||
|
ctx,
|
||||||
|
src,
|
||||||
|
dest,
|
||||||
|
flags);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,10 +19,16 @@ typedef enum fx_serial_flags {
|
|||||||
FX_DECLARE_TYPE(fx_serial_ctx);
|
FX_DECLARE_TYPE(fx_serial_ctx);
|
||||||
|
|
||||||
FX_TYPE_CLASS_DECLARATION_BEGIN(fx_serial_ctx)
|
FX_TYPE_CLASS_DECLARATION_BEGIN(fx_serial_ctx)
|
||||||
fx_status (*s_serialise)(
|
fx_result (*s_serialise)(
|
||||||
fx_serial_ctx *, fx_object *, fx_stream *, fx_serial_flags);
|
fx_serial_ctx *,
|
||||||
fx_status (*s_deserialise)(
|
fx_object *,
|
||||||
fx_serial_ctx *, fx_stream *, fx_object **, fx_serial_flags);
|
fx_stream *,
|
||||||
|
fx_serial_flags);
|
||||||
|
fx_result (*s_deserialise)(
|
||||||
|
fx_serial_ctx *,
|
||||||
|
fx_stream *,
|
||||||
|
fx_object **,
|
||||||
|
fx_serial_flags);
|
||||||
FX_TYPE_CLASS_DECLARATION_END(fx_serial_ctx)
|
FX_TYPE_CLASS_DECLARATION_END(fx_serial_ctx)
|
||||||
|
|
||||||
typedef struct fx_serial_ctx_data {
|
typedef struct fx_serial_ctx_data {
|
||||||
@@ -31,11 +37,17 @@ typedef struct fx_serial_ctx_data {
|
|||||||
|
|
||||||
FX_API fx_type fx_serial_ctx_get_type(void);
|
FX_API fx_type fx_serial_ctx_get_type(void);
|
||||||
|
|
||||||
FX_API fx_status fx_serial_ctx_serialise(
|
FX_API fx_result fx_serial_ctx_serialise(
|
||||||
fx_serial_ctx *ctx, fx_object *src, fx_stream *dest, fx_serial_flags flags);
|
fx_serial_ctx *ctx,
|
||||||
|
fx_object *src,
|
||||||
|
fx_stream *dest,
|
||||||
|
fx_serial_flags flags);
|
||||||
|
|
||||||
FX_API fx_status fx_serial_ctx_deserialise(
|
FX_API fx_result fx_serial_ctx_deserialise(
|
||||||
fx_serial_ctx *ctx, fx_stream *src, fx_object **dest, fx_serial_flags flags);
|
fx_serial_ctx *ctx,
|
||||||
|
fx_stream *src,
|
||||||
|
fx_object **dest,
|
||||||
|
fx_serial_flags flags);
|
||||||
|
|
||||||
FX_DECLS_END;
|
FX_DECLS_END;
|
||||||
|
|
||||||
|
|||||||
+230
-189
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user