List<Signature> Scan(List<int> data, int length, List<Signature> signatures)

Returns a list of found signatures.

var results = SignatureFinder.Scan(buffer, buffer.length, signatures);

Source

static List<Signature> Scan(
    List<int> data, int length, List<Signature> signatures) {
  int tempOffset;

  List<Signature> found = [];
  List<Signature> sigs = new List<Signature>.from(signatures);

  for (int i = 0; i < sigs.length; i++) {
    tempOffset = PatternFinder.Find_B(data, length, sigs[i].Pattern);
    if (tempOffset != -1) {
      sigs[i].FoundOffset = tempOffset;
      if (sigs[i].ExecFunc != null) {
        try {
          sigs[i].ExecFunc(tempOffset);
        } on NoSuchMethodError {
          sigs[i].ExecFunc();
        } catch (e) {
          throw new Exception('Incorrectly formed signature function');
        }
      }
      // add to found signatures array
      found.add(sigs[i]);
    } // end if
  } // end for

  return found;
}