CObjectHookGuardBase::CObjectHookGuardBase(const CObjectTypeInfo& info, const string& id, CReadChoiceVariantHook& hook, CObjectIStream* stream) : m_Hook(&hook), m_HookMode(eHook_Read), m_HookType(eHook_Variant), m_Id(id) { m_Stream.m_IStream = stream; CObjectTypeInfoVI variant = info.FindVariant(id); if ( stream ) { variant.SetLocalReadHook(*stream, &hook); } else { variant.SetGlobalReadHook(&hook); } }