void CObjectHookGuardBase::ResetHook(const CObjectTypeInfo& info) { switch (m_HookType) { case eHook_Object: switch (m_HookMode) { case eHook_Read: if ( m_Stream.m_IStream ) { info.ResetLocalReadHook(*m_Stream.m_IStream); } else { info.ResetGlobalReadHook(); } break; case eHook_Write: if ( m_Stream.m_OStream ) { info.ResetLocalWriteHook(*m_Stream.m_OStream); } else { info.ResetGlobalWriteHook(); } break; case eHook_Skip: if ( m_Stream.m_IStream ) { info.ResetLocalSkipHook(*m_Stream.m_IStream); } break; case eHook_Copy: if ( m_Stream.m_Copier ) { info.ResetLocalCopyHook(*m_Stream.m_Copier); } else { info.ResetGlobalCopyHook(); } break; default: break; } break; case eHook_Member: { CObjectTypeInfoMI member = info.FindMember(m_Id); switch (m_HookMode) { case eHook_Read: if ( m_Stream.m_IStream ) { member.ResetLocalReadHook(*m_Stream.m_IStream); } else { member.ResetGlobalReadHook(); } break; case eHook_Write: if ( m_Stream.m_OStream ) { member.ResetLocalWriteHook(*m_Stream.m_OStream); } else { member.ResetGlobalWriteHook(); } break; case eHook_Skip: if ( m_Stream.m_IStream ) { member.ResetLocalSkipHook(*m_Stream.m_IStream); } break; case eHook_Copy: if ( m_Stream.m_Copier ) { member.ResetLocalCopyHook(*m_Stream.m_Copier); } else { member.ResetGlobalCopyHook(); } break; default: break; } break; } case eHook_Variant: { CObjectTypeInfoVI variant = info.FindVariant(m_Id); switch (m_HookMode) { case eHook_Read: if ( m_Stream.m_IStream ) { variant.ResetLocalReadHook(*m_Stream.m_IStream); } else { variant.ResetGlobalReadHook(); } break; case eHook_Write: if ( m_Stream.m_OStream ) { variant.ResetLocalWriteHook(*m_Stream.m_OStream); } else { variant.ResetGlobalWriteHook(); } break; case eHook_Skip: if ( m_Stream.m_IStream ) { variant.ResetLocalSkipHook(*m_Stream.m_IStream); } break; case eHook_Copy: if ( m_Stream.m_Copier ) { variant.ResetLocalCopyHook(*m_Stream.m_Copier); } else { variant.ResetGlobalCopyHook(); } break; default: break; } break; } case eHook_Element: case eHook_Null: default: break; } m_HookMode = eHook_None; m_HookType = eHook_Null; }