예제 #1
0
  private int getSumChildrenSize() {
    int nNbOccurs = getNbOccurs();

    int nSingleItemSize = getSingleItemRequiredStorageSize();
    int nSumChildrenSize = 0;
    if (isVarDefForm()) nSumChildrenSize = getHeaderLength();

    if (m_arrChildren != null) {
      int nNbChildren = m_arrChildren.size();
      for (int nChild = 0; nChild < nNbChildren; nChild++) {
        VarDefBase varDefChild = getChild(nChild);
        int nSize = varDefChild.calcSize();
        if (varDefChild.m_varDefRedefinOrigin == null || varDefChild.isEditInMapRedefine())
          nSumChildrenSize += nSize;
        else if (isVarInMapRedefine() && !m_varDefParent.isEditInMapRedefine())
          nSumChildrenSize += nSize;
      }
    }

    if (nSingleItemSize == 0) // We have no size defined for ourself
    {
      if (isEditInMapRedefine() && m_OccursDef != null) return nNbOccurs * nSumChildrenSize;
      if (m_varDefRedefinOrigin != null) // We are a redefine
      {
        int n = m_varDefRedefinOrigin.getTotalSize();
        return n; // do not count the number of occurances, because
      }
      return nNbOccurs * nSumChildrenSize;
    }
    return nNbOccurs * nSingleItemSize;
  }