CObjectHookGuardBase::CObjectHookGuardBase(const CObjectTypeInfo& info, const string& id, CCopyChoiceVariantHook& hook, CObjectStreamCopier* stream) : m_Hook(&hook), m_HookMode(eHook_Copy), m_HookType(eHook_Variant), m_Id(id) { m_Stream.m_Copier = stream; CObjectTypeInfoVI variant = info.FindVariant(id); if ( stream ) { variant.SetLocalCopyHook(*stream, &hook); } else { variant.SetGlobalCopyHook(&hook); } }