Coerce reflected variables

Copy construction and copy assignment with coercion.


bool CopyConstructReflectedVariable(
    ReflectionByteCode lhs_rbc, void* lhs,
    ReflectionByteCode rhs_rbc, const void* rhs,
    bool allowExplicitConversions)

Copy construct a variable at address 'lhs' of type 'lhs_rbc' from a variable at address 'rhs' of type 'rhs_rbc'. Returns false if coercion not possible


bool CopyConstructReflectedClassVariable(
    const ReflectedClass& lhs_rc, void* lhs,
    const ReflectedClass& rhs_rc, const void* rhs,
    bool allowExplicitConversions)


bool AssignReflectedVariable(
    ReflectionByteCode lhs_rbc, void* lhs,
    ReflectionByteCode rhs_rbc, const void* rhs,
    bool allowExplicitConversions)


bool AssignReflectedClassVariable(
    const ReflectedClass& lhs_rc, void* lhs,
    const ReflectedClass& rhs_rc, const void* rhs,
    bool allowExplicitConversions)


AssignReflectedVariantVariable(
    const ReflectedVariant& lhs_rv, void* lhs,
    const ReflectedVariant& rhs_rv, const void* rhs,
    bool allowExplicitConversions)


bool Coerce(
    bool& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type bool then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to bool


bool Coerce(
    int8& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type int8 then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to int8


bool Coerce(
    int16& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type int16 then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to int16


bool Coerce(
    int32& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type int32 then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to int32


bool Coerce(
    int64& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type int64 then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to int64


bool Coerce(
    uint8& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type uint8 then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to uint8


bool Coerce(
    uint16& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type uint16 then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to uint16


bool Coerce(
    uint32& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type uint32 then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to uint32


bool Coerce(
    uint64& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type uint64 then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to uint64


bool Coerce(
    float32& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type float32 then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to float32


bool Coerce(
    float64& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type float64 then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to float64


bool Coerce(
    string8& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type string8 then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to string8


bool Coerce(
    string16& v,
    ReflectionByteCode rbc,
    const void* addr,
    bool allowExplicitConversions = false)

If the variable of type rbc at addr can be interpreted as a variable of type string16 then assign the value to v and return true, otherwise return false. If allowExplicitConversions is true then enable coercions to string16