20#ifndef REALM_CUSTOM_SERDEZ_H
21#define REALM_CUSTOM_SERDEZ_H
56 class CustomSerdezExample {
58 typedef... FIELD_TYPE;
62 static size_t serialized_size(
const FIELD_TYPE &val);
67 static size_t serialize(
const FIELD_TYPE &val,
void *buffer);
75 static size_t deserialize(FIELD_TYPE &val,
const void *buffer);
78 static void destroy(FIELD_TYPE &val);
91 memcpy(buffer, val,
sizeof(T));
98 memcpy(val, buffer,
sizeof(T));
108 template <
typename T,
size_t MAX_SER_SIZE = 4096>
117 bool ok = (bcs << (*val));
125 size_t max_size = size_t(-1) -
reinterpret_cast<size_t>(buffer);
127 bool ok = (fbs << *val);
137 size_t max_size = size_t(-1) -
reinterpret_cast<size_t>(buffer);
139 bool ok = (fbd >> (*val));
155 template <
class SERDEZ>
167 size_t count)
const = 0;
172 virtual size_t serialize(
const void *field_ptr,
void *buffer)
const = 0;
173 virtual size_t serialize(
const void *field_ptr, ptrdiff_t stride,
size_t count,
174 void *buffer)
const = 0;
182 virtual size_t deserialize(
void *field_ptr,
const void *buffer)
const = 0;
183 virtual size_t deserialize(
void *field_ptr, ptrdiff_t stride,
size_t count,
184 const void *buffer)
const = 0;
187 virtual void destroy(
void *field_ptr)
const = 0;
188 virtual void destroy(
void *field_ptr, ptrdiff_t stride,
size_t count)
const = 0;
191 template <
typename T>
196#include "realm/custom_serdez.inl"
Definition custom_serdez.h:150
size_t sizeof_field_type
Definition custom_serdez.h:152
virtual size_t serialize(const void *field_ptr, void *buffer) const =0
size_t max_serialized_size
Definition custom_serdez.h:153
virtual size_t deserialize(void *field_ptr, ptrdiff_t stride, size_t count, const void *buffer) const =0
virtual CustomSerdezUntyped * clone(void) const =0
virtual size_t serialized_size(const void *field_ptr) const =0
virtual size_t serialized_size(const void *field_ptr, ptrdiff_t stride, size_t count) const =0
static CustomSerdezUntyped * create_custom_serdez(void)
virtual ~CustomSerdezUntyped(void)
virtual size_t serialize(const void *field_ptr, ptrdiff_t stride, size_t count, void *buffer) const =0
virtual void destroy(void *field_ptr) const =0
virtual size_t deserialize(void *field_ptr, const void *buffer) const =0
virtual void destroy(void *field_ptr, ptrdiff_t stride, size_t count) const =0
Definition custom_serdez.h:192
Definition custom_serdez.h:82
static void destroy(FIELD_TYPE &val)
Definition custom_serdez.h:102
static size_t serialized_size(const FIELD_TYPE &val)
Definition custom_serdez.h:87
T * FIELD_TYPE
Definition custom_serdez.h:84
static size_t deserialize(FIELD_TYPE &val, const void *buffer)
Definition custom_serdez.h:95
static const size_t MAX_SERIALIZED_SIZE
Definition custom_serdez.h:85
static size_t serialize(const FIELD_TYPE &val, void *buffer)
Definition custom_serdez.h:89
Definition serialize.h:171
size_t bytes_used(void) const
Definition serialize.h:191
ptrdiff_t bytes_left(void) const
Definition serialize.h:118
ptrdiff_t bytes_left(void) const
Definition custom_serdez.h:109
static const size_t MAX_SERIALIZED_SIZE
Definition custom_serdez.h:112
static size_t deserialize(FIELD_TYPE &val, const void *buffer)
Definition custom_serdez.h:133
static size_t serialize(const FIELD_TYPE &val, void *buffer)
Definition custom_serdez.h:122
static size_t serialized_size(const FIELD_TYPE &val)
Definition custom_serdez.h:114
T * FIELD_TYPE
Definition custom_serdez.h:111
static void destroy(FIELD_TYPE &val)
Definition custom_serdez.h:144
Definition activemsg.h:38
int CustomSerdezID
Definition custom_serdez.h:148
bool serialize(S &serdez, const ByteArrayRef &a)
bool deserialize(S &serdez, ByteArray &a)