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