Functions that generate operations supporting OT on vectors
It is currently assumed that the elements are simple types without need for constructors and destructors. Therefore (for example), copying an element only requires a memcpy.
void genop_ConcatVector(
ptr<IObject> ds,
const Path& path,
ReflectionByteCode rbc,
void* vec_lhs,
const void* vec_rhs)
Concatenate xvector<T> at address 'vec_rhs' onto xvector<T> at address 'vec_lhs'. rbc describes the element type T.
bool genop_ConcatVector(
ptr<IObject> ds,
const Path& path,
ReflectionByteCode rbc_lhs,
void* vec_lhs,
ReflectionByteCode rbc_rhs,
const void* vec_rhs,
bool allowExplicitConversions)
bool genop_InsertIntoVector(
ptr<IObject> ds,
const Path& path,
ReflectionByteCode rbc,
void* dst,
ssize_t d,
const void* src,
ssize_t s1,
ssize_t s2)
EReflectedVectorCode genop_InsertIntoVector(
ptr<IObject> ds,
const Path& path,
ReflectionByteCode rbc_dst,
void* dst,
ssize_t d,
ReflectionByteCode rbc_src,
const void* src,
ssize_t s1,
ssize_t s2,
bool allowExplicitConversions)
void genop_PushBackOntoVector(
ptr<IObject> ds,
const Path& path,
ReflectionByteCode rbc,
void* vec,
const void* x)
bool genop_InsertElementIntoVector(
ptr<IObject> ds,
const Path& path,
ReflectionByteCode rbc,
void* vec,
ssize_t i,
const void* x)
bool genop_EraseSliceInVector(
ptr<IObject> ds,
const Path& path,
ReflectionByteCode rbc,
void* vec,
ssize_t i1,
ssize_t i2)