ModifiableElement MainObjectArrayPtr::MainObjectArray::GetModifiableElement( ArrayIndex p_MainObjectNumber, ArrayIndex p_ElementIndex) { MainObjectEntry BPAQuantumNumber; BigPointerBlockPtr BigPointerBlock; LittlePointerBlockPtr LittlePointerBlock; LeafBlockPtr ElementBlock; ArrayIndex BigPointerIndex; ArrayIndex LittlePointerIndex; QuantumNumber LPAQuantumNumber; ItemReference ElementRef; ModifiableElement Element; BPAQuantumNumber = Get(p_MainObjectNumber); BigPointerBlock = m_QuantumFile->MakeBigPointerBlockPtr(BPAQuantumNumber); BigPointerIndex = p_ElementIndex / ItemReferencesPerBlock; LPAQuantumNumber = BigPointerBlock->GetBigArrayElement(BigPointerIndex); LittlePointerBlock = m_QuantumFile->MakeLittlePointerBlockPtr(LPAQuantumNumber); LittlePointerIndex = p_ElementIndex % ItemReferencesPerBlock; ElementRef = LittlePointerBlock->GetLittleArrayElement(LittlePointerIndex); if (ElementRef.IsReference()) { ElementBlock = m_QuantumFile->MakeLeafBlockPtr(ElementRef.GetQuantumNumber()); Element = ElementBlock->GetModifiableItem(ElementRef.GetItemNumber()); } else Element = ModifiableElement(); return Element; }