int getNbEditUntil(VarDefBase varChildToFind, FoundFlag foundFlag) { int nNbEdit = 0; if (isEditInMapRedefine() && m_OccursDef == null) nNbEdit++; int nNbChildren = getNbChildren(); for (int n = 0; n < nNbChildren && !foundFlag.isFound(); n++) { VarDefBase varDefChild = getChild(n); if (varChildToFind == varDefChild) { foundFlag.setFound(); return nNbEdit; } if (!foundFlag.isFound()) { int nNbEditUnderChild = varDefChild.getNbEditUntil(varChildToFind, foundFlag); if (varDefChild.isVarInMapRedefine() && varDefChild.m_varDefRedefinOrigin != null) // we are a var redefine, and we know what we redefines { if (foundFlag.isFound()) // We found the edit serched as a child of the var redefine { int nNbEditAlredayCounted = varDefChild.m_varDefRedefinOrigin .getNbEdit(); // Number of items alreday counted in the var redefine origin: it // must not be taken into account nNbEdit = nNbEdit + nNbEditUnderChild - nNbEditAlredayCounted; return nNbEdit; } } else nNbEdit += nNbEditUnderChild; } } if (!foundFlag.isFound()) { if (isEditInMapRedefine() && m_OccursDef != null) { int nNbOccurs = m_OccursDef.getNbOccurs(); nNbEdit = nNbEdit * nNbOccurs; } } return nNbEdit; }