private void calcAbsolutePosition(SharedProgramInstanceData sharedProgramInstanceData) { m_nDefaultAbsolutePosition = 0; if (m_varDefRedefinOrigin != null) // We are a redefine { if (isVarInMapRedefine() && m_varDefRedefinOrigin.isEditInMapRedefine()) { // We are a var that redefines an edit; The var must point to the text part of the edit, not // in the attribute header m_nDefaultAbsolutePosition = m_varDefRedefinOrigin.m_nDefaultAbsolutePosition + m_varDefRedefinOrigin.getHeaderLength(); } else // no header to skip { m_nDefaultAbsolutePosition = m_varDefRedefinOrigin.m_nDefaultAbsolutePosition; // Set at the redefine origin position } } else // We are not a redefine { VarDefBase varDefPreviousSameLevelNonRedefine = getPreviousSameLevelNonRedefine(sharedProgramInstanceData); if (varDefPreviousSameLevelNonRedefine != null) m_nDefaultAbsolutePosition = varDefPreviousSameLevelNonRedefine.m_nDefaultAbsolutePosition + varDefPreviousSameLevelNonRedefine.getTotalSize(); else if (m_varDefParent != null) m_nDefaultAbsolutePosition = m_varDefParent.m_nDefaultAbsolutePosition + m_varDefParent.getHeaderLength(); } calcPositionsIntoBuffer(sharedProgramInstanceData); }