bool RecyclableObject::IsWritableDataOnlyDetectionBitSet() { if (DynamicType::Is(this->GetTypeId())) { DynamicObject* obj = DynamicObject::FromVar(this); return obj->GetTypeHandler()->IsWritableDataOnlyDetectionBitSet() || (obj->HasObjectArray() && obj->GetObjectArrayOrFlagsAsArray()->IsWritableDataOnlyDetectionBitSet()); } return false; }
bool RecyclableObject::HasOnlyWritableDataProperties() { if (DynamicType::Is(this->GetTypeId())) { DynamicObject* obj = DynamicObject::FromVar(this); return obj->GetTypeHandler()->GetHasOnlyWritableDataProperties() && (!obj->HasObjectArray() || obj->GetObjectArrayOrFlagsAsArray()->HasOnlyWritableDataProperties()); } return true; }
void RecyclableObject::ClearWritableDataOnlyDetectionBit() { if (DynamicType::Is(this->GetTypeId())) { DynamicObject* obj = DynamicObject::FromVar(this); obj->GetTypeHandler()->ClearWritableDataOnlyDetectionBit(); if (obj->HasObjectArray()) { obj->GetObjectArrayOrFlagsAsArray()->ClearWritableDataOnlyDetectionBit(); } } }