serial: implement returning fx_result values from (de)serialisers

This commit is contained in:
2026-04-20 22:04:29 +01:00
parent c76008e498
commit 6a26e00438
4 changed files with 290 additions and 213 deletions
+10 -6
View File
@@ -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
View File
@@ -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);
} }
+20 -8
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff