Files
fx/fx.serial/ctx.c
T

78 lines
2.1 KiB
C

#include <fx/serial.h>
#include <stdlib.h>
#include <string.h>
/*** PRIVATE DATA *************************************************************/
/*** PRIVATE FUNCTIONS ********************************************************/
/*** PUBLIC FUNCTIONS *********************************************************/
/*** PUBLIC ALIAS FUNCTIONS ***************************************************/
/*** VIRTUAL FUNCTIONS ********************************************************/
static void serial_ctx_init(fx_object *obj, void *priv)
{
fx_serial_ctx_data *data
= fx_object_get_protected(obj, FX_TYPE_SERIAL_CTX);
data->ctx_streambuf = fx_stream_buffer_create_dynamic(2048);
}
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_stream_buffer_unref(data->ctx_streambuf);
}
/*** CLASS DEFINITION *********************************************************/
FX_TYPE_CLASS_DEFINITION_BEGIN(fx_serial_ctx)
FX_TYPE_CLASS_INTERFACE_BEGIN(fx_object, FX_TYPE_OBJECT)
FX_INTERFACE_ENTRY(to_string) = NULL;
FX_TYPE_CLASS_INTERFACE_END(fx_object, FX_TYPE_OBJECT)
FX_TYPE_CLASS_DEFINITION_END(fx_serial_ctx)
FX_TYPE_DEFINITION_BEGIN(fx_serial_ctx)
FX_TYPE_ID(0xc7c1039a, 0xf397, 0x4fda, 0xb473, 0x4d86fec85384);
FX_TYPE_CLASS(fx_serial_ctx_class);
FX_TYPE_INSTANCE_PROTECTED(fx_serial_ctx_data);
FX_TYPE_INSTANCE_INIT(serial_ctx_init);
FX_TYPE_INSTANCE_FINI(serial_ctx_fini);
FX_TYPE_DEFINITION_END(fx_serial_ctx)
/*** ITERATOR FUNCTIONS *******************************************************/
fx_result fx_serial_ctx_serialise(
fx_serial_ctx *ctx,
fx_object *src,
fx_stream *dest,
enum fx_serial_flags flags)
{
FX_CLASS_DISPATCH_VIRTUAL(
fx_serial_ctx,
FX_TYPE_SERIAL_CTX,
FX_RESULT_ERR(NOT_SUPPORTED),
s_serialise,
ctx,
src,
dest,
flags);
}
fx_result fx_serial_ctx_deserialise(
fx_serial_ctx *ctx,
fx_stream *src,
fx_object **dest,
enum fx_serial_flags flags)
{
FX_CLASS_DISPATCH_VIRTUAL(
fx_serial_ctx,
FX_TYPE_SERIAL_CTX,
FX_RESULT_ERR(NOT_SUPPORTED),
s_deserialise,
ctx,
src,
dest,
flags);
}