//===-- DiffEngine.h - File comparator --------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This header defines the interface to the llvm-tapi difference engine, // which structurally compares two tbd files. // //===----------------------------------------------------------------------===/ #ifndef LLVM_TOOLS_LLVM_TAPI_DIFF_DIFFENGINE_H #define LLVM_TOOLS_LLVM_TAPI_DIFF_DIFFENGINE_H #include "llvm/Object/TapiUniversal.h" #include "llvm/Support/raw_ostream.h" #include "llvm/TextAPI/Symbol.h" #include "llvm/TextAPI/Target.h" namespace llvm { /// InterfaceInputOrder determines from which file the diff attribute belongs /// to. enum InterfaceInputOrder { … }; /// DiffAttrKind is the enum that holds the concrete bases for RTTI. enum DiffAttrKind { … }; /// AttributeDiff is the abstract class for RTTI. class AttributeDiff { … }; /// DiffOutput is the representation of a diff for a single attribute. struct DiffOutput { … }; /// DiffScalarVal is a template class for the different types of scalar values. template <class T, DiffAttrKind U> class DiffScalarVal : public AttributeDiff { … }; /// SymScalar is the diff symbol and the order. class SymScalar { … }; class DiffStrVec : public AttributeDiff { … }; class DiffSymVec : public AttributeDiff { … }; /// InlineDoc represents an inlined framework/library in a TBD File. class InlineDoc : public AttributeDiff { … }; /// DiffEngine contains the methods to compare the input files and print the /// output of the differences found in the files. class DiffEngine { … }; } // namespace llvm #endif