parseAsync method

  1. @override
void parseAsync(
  1. State<ChunkedData<I>> state,
  2. ResultCallback<(O1, O2, O3, O4, O5, O6)> onDone
)
override

Implementation

@override
void parseAsync(State<ChunkedData<I>> state,
    ResultCallback<(O1, O2, O3, O4, O5, O6)> onDone) {
  final input = state.input;
  final pos = state.pos;
  Result<O1>? r1;
  Result<O2>? r2;
  Result<O3>? r3;
  Result<O4>? r4;
  Result<O5>? r5;
  Result<O6>? r6;
  void parse6() {
    p6.parseAsync(state, (result) {
      if (result == null) {
        state.pos = pos;
        onDone(null);
      } else {
        r6 = result;
        onDone(Result((
          r1!.value,
          r2!.value,
          r3!.value,
          r4!.value,
          r5!.value,
          r6!.value,
        )));
      }
    });
  }

  void parse5() {
    p5.parseAsync(state, (result) {
      if (result == null) {
        state.pos = pos;
        onDone(null);
      } else {
        r5 = result;
        input.handle(parse6);
      }
    });
  }

  void parse4() {
    p4.parseAsync(state, (result) {
      if (result == null) {
        state.pos = pos;
        onDone(null);
      } else {
        r4 = result;
        input.handle(parse5);
      }
    });
  }

  void parse3() {
    p3.parseAsync(state, (result) {
      if (result == null) {
        state.pos = pos;
        onDone(null);
      } else {
        r3 = result;
        input.handle(parse4);
      }
    });
  }

  void parse2() {
    p2.parseAsync(state, (result) {
      if (result == null) {
        state.pos = pos;
        onDone(null);
      } else {
        r2 = result;
        input.handle(parse3);
      }
    });
  }

  void parse() {
    p1.parseAsync(state, (result) {
      if (result == null) {
        onDone(null);
      } else {
        r1 = result;
        input.handle(parse2);
      }
    });
  }

  parse();
}