Reflected vectors


ssize_t GetReflectedVectorSize(
    ReflectionByteCode rbc,
    const void* vec)

Returns the current number of elements in a xvector<T> variable at address 'vec'. rbc describes the element type T.


void* PushBackDefaultConstructedElementOntoReflectedVector(
    ReflectionByteCode rbc,
    void* vec)

Returns address of the element that was inserted


void ConcatReflectedVectorFromArray(
    ReflectionByteCode rbc,
    void* vec_lhs,
    const void* array_rhs,
    ssize_t array_rhs_size)

Concatenate array of T of size 'array_rhs_size' at address 'array_rhs' onto xvector<T> at address 'vec_lhs'. rbc describes the element type T.


void ConcatReflectedVector(
    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 ConcatReflectedVector(
    ReflectionByteCode rbc_lhs, void* vec_lhs,
    ReflectionByteCode rbc_rhs, const void* vec_rhs,
    bool allowExplicitConversions)


bool InsertFromArrayIntoReflectedVector(
    ReflectionByteCode rbc,
    void* dst,
    ssize_t d,
    const void* src,
    ssize_t src_n,
    ssize_t s1,
    ssize_t s2)

Insert elements copied from the range [s1,s2) from array in T of size src_n at address src into the xvector<T> at address dst at position d rbc describes the element type T. Returns false if any of d,s1 or s2 are invalid.


bool InsertIntoReflectedVector(
    ReflectionByteCode rbc,
    void* dst,
    ssize_t d,
    const void* src,
    ssize_t s1,
    ssize_t s2)

Insert elements copied from the range [s1,s2) from xvector<T> at address src into the xvector<T> at address dst at position d rbc describes the element type T. Returns false if any of d,s1 or s2 are invalid.


EReflectedVectorCode InsertIntoReflectedVector(
    ReflectionByteCode rbc_dst, void* dst, ssize_t d,
    ReflectionByteCode rbc_src, const void* src, ssize_t s1, ssize_t s2,
    bool allowExplicitConversions)

Returns RVC_OK, RVC_BAD_INDEX or RVC_TYPE_ERROR


bool ConstructReflectedVectorFromSliceOfArray(
    ReflectionByteCode rbc,
    void* dst,
    const void* src,
    ssize_t src_n,
    ssize_t s1,
    ssize_t s2)

Construct the xvector<T> at address dst from a copy of the slice [s1,s2) from the array in T of size src_n at src. rbc describes the element type T. Return false if [s1,s2) out of range


bool ConstructFromSliceOfReflectedVector(
    ReflectionByteCode rbc,
    void* dst,
    const void* src,
    ssize_t s1,
    ssize_t s2)

Construct the xvector<T> at address dst from a copy of the slice [s1,s2) from the xvector<T> at src. rbc describes the element type T. Return false if [s1,s2) out of range


void PushBackOntoReflectedVector(
    ReflectionByteCode rbc,
    void* vec,
    const void* x)

Perform push_back of the value of type T at address 'x' on the xvector<T> at address 'vec' rbc describes the element type T.


bool InsertElementIntoReflectedVector(
    ReflectionByteCode rbc,
    void* vec,
    ssize_t i,
    const void* x)

Insert value of type T at address 'x' into the xvector<T> at address 'vec', at index position i. rbc describes the element type T. Returns false if i is out of range.


void* GetElementOfReflectedArray(
    ReflectionByteCode rbc,
    void* array,
    ssize_t n,
    ssize_t i)

Returns the address of the ith element of the array of T of size n at address 'array' rbc describes the element type T. Returns nullptr if i is invalid.


void* GetElementOfReflectedVector(
    ReflectionByteCode rbc,
    void* vec,
    ssize_t i)

Returns the address of the ith element of the xvector<T> at address 'vec'. rbc describes the element type T. Returns nullptr if i is invalid.


bool EraseSliceInReflectedVector(
    ReflectionByteCode rbc,
    void* vec,
    ssize_t i1,
    ssize_t i2)

Erase the elements in the range [i1,i2) from the xvector<T> at address vec. rbc describes the element type T. Returns false if [i1,i2) is an invalid range.


void ReverseReflectedVector(
    ReflectionByteCode rbc,
    void* vec)

Reverse the elements of the xvector<T> as address vec rbc describes the element type T. Assumes that xvector elements are relocatable


ssize_t FindFirstElementInReflectedArray(
    ReflectionByteCode rbc,
    const void* array,
    ssize_t size,
    const void* elt)

Returns the index of the first element in the array in T of size 'size' at address 'array' that is equivalent in value to the variable of type T at address 'elt'. 'rbc' describes the element type T.


ssize_t FindFirstElementInReflectedVector(
    ReflectionByteCode rbc,
    const void* vec,
    const void* val)

Returns the index of the first element in the xvector<T> at address 'vec' that is equivalent in value to the variable of type T at address 'elt'. 'rbc' describes the element type T.


ssize_t GetElementFrequencyInReflectedArray(
    ReflectionByteCode rbc,
    const void* array,
    ssize_t size,
    const void* elt)

Returns the number of elements in the array in T of size 'size' at address 'array' that are equivalent in value to the variable of type T at address 'elt'. 'rbc' describes the element type T.


ssize_t GetElementFrequencyInReflectedVector(
    ReflectionByteCode rbc,
    const void* vec,
    const void* val)

Returns the number of elements in the xvector<T> at address vec that are equivalent in value to the variable of type T at address val. rbc describes the element type T.


void SortReflectedVector(
    ReflectionByteCode rbc,
    void* vec)

Sort the xvector<T> as address vec. rbc describes the element type T. Assumes that xvector elements are relocatable