buildIndex method

FormIndex? buildIndex(
  1. List<int> indexes,
  2. List<int> multiplicities,
  3. List<FormElement> elements
)

The index for the given path (multiplicities are kept for repeats only).

Implementation

FormIndex? buildIndex(
  List<int> indexes,
  List<int> multiplicities,
  List<FormElement> elements,
) {
  FormIndex? cur;
  final curMultiplicities = [...multiplicities];
  final curElements = [...elements];
  for (var i = indexes.length - 1; i >= 0; i--) {
    final element = elements[i];
    final mult = element is GroupDef && element.isRepeat
        ? multiplicities[i]
        : -1;
    cur = FormIndex(
      indexes[i],
      instanceIndex: mult,
      nextLevel: cur,
      reference: childInstanceRefOf(curElements, curMultiplicities),
    );
    curMultiplicities.removeLast();
    curElements.removeLast();
  }
  return cur;
}