blob: 15bedc3eacfb4d7e2851051704ed11f2301bcb06 [file] [log] [blame]
// Copyright 2022 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef V8_DEBUG_LIVEEDIT_DIFF_H_
#define V8_DEBUG_LIVEEDIT_DIFF_H_
namespace v8 {
namespace internal {
// A general-purpose comparator between 2 arrays.
class Comparator {
public:
// Holds 2 arrays of some elements allowing to compare any pair of
// element from the first array and element from the second array.
class Input {
public:
virtual int GetLength1() = 0;
virtual int GetLength2() = 0;
virtual bool Equals(int index1, int index2) = 0;
protected:
virtual ~Input() = default;
};
// Receives compare result as a series of chunks.
class Output {
public:
// Puts another chunk in result list. Note that technically speaking
// only 3 arguments actually needed with 4th being derivable.
virtual void AddChunk(int pos1, int pos2, int len1, int len2) = 0;
protected:
virtual ~Output() = default;
};
// Finds the difference between 2 arrays of elements.
static void CalculateDifference(Input* input, Output* result_writer);
};
} // namespace internal
} // namespace v8
#endif // V8_DEBUG_LIVEEDIT_DIFF_H_