#include "DiffEngine.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TextAPI/InterfaceFile.h"
#include "llvm/TextAPI/Symbol.h"
#include "llvm/TextAPI/Target.h"
#include <iterator>
usingnamespacellvm;
usingnamespaceMachO;
usingnamespaceobject;
StringRef setOrderIndicator(InterfaceInputOrder Order) { … }
namespace llvm {
template <typename T, DiffAttrKind U>
inline void DiffScalarVal<T, U>::print(raw_ostream &OS, std::string Indent) { … }
template <>
inline void
DiffScalarVal<StringRef, AD_Diff_Scalar_Str>::print(raw_ostream &OS,
std::string Indent) { … }
template <>
inline void
DiffScalarVal<uint8_t, AD_Diff_Scalar_Unsigned>::print(raw_ostream &OS,
std::string Indent) { … }
template <>
inline void
DiffScalarVal<bool, AD_Diff_Scalar_Bool>::print(raw_ostream &OS,
std::string Indent) { … }
}
StringLiteral SymScalar::getSymbolNamePrefix(MachO::EncodeKind Kind) { … }
std::string SymScalar::getFlagString(const MachO::Symbol *Sym) { … }
void SymScalar::print(raw_ostream &OS, std::string Indent, MachO::Target Targ) { … }
bool checkSymbolEquality(llvm::MachO::InterfaceFile::const_symbol_range LHS,
llvm::MachO::InterfaceFile::const_symbol_range RHS) { … }
template <typename TargetVecT, typename ValTypeT, typename V>
void addDiffForTargSlice(V Val, Target Targ, DiffOutput &Diff,
InterfaceInputOrder Order) { … }
DiffOutput getSingleAttrDiff(const std::vector<InterfaceFileRef> &IRefVec,
std::string Name, InterfaceInputOrder Order) { … }
DiffOutput
getSingleAttrDiff(const std::vector<std::pair<Target, std::string>> &PairVec,
std::string Name, InterfaceInputOrder Order) { … }
DiffOutput getSingleAttrDiff(InterfaceFile::const_symbol_range SymRange,
std::string Name, InterfaceInputOrder Order) { … }
template <typename T>
DiffOutput getSingleAttrDiff(T SingleAttr, std::string Attribute) { … }
template <typename T, DiffAttrKind U>
void diffAttribute(std::string Name, std::vector<DiffOutput> &Output,
DiffScalarVal<T, U> Attr) { … }
template <typename T>
void diffAttribute(std::string Name, std::vector<DiffOutput> &Output,
const T &Val, InterfaceInputOrder Order) { … }
std::vector<DiffOutput> getSingleIF(InterfaceFile *Interface,
InterfaceInputOrder Order) { … }
void findAndAddDiff(const std::vector<InterfaceFileRef> &CollectedIRefVec,
const std::vector<InterfaceFileRef> &LookupIRefVec,
DiffOutput &Result, InterfaceInputOrder Order) { … }
void findAndAddDiff(
const std::vector<std::pair<Target, std::string>> &CollectedPairs,
const std::vector<std::pair<Target, std::string>> &LookupPairs,
DiffOutput &Result, InterfaceInputOrder Order) { … }
void findAndAddDiff(InterfaceFile::const_symbol_range CollectedSyms,
InterfaceFile::const_symbol_range LookupSyms,
DiffOutput &Result, InterfaceInputOrder Order) { … }
template <typename T>
DiffOutput recordDifferences(T LHS, T RHS, std::string Attr) { … }
template <typename T>
DiffOutput recordDifferences(const std::vector<T> &LHS,
const std::vector<T> &RHS, std::string Attr) { … }
DiffOutput recordDifferences(llvm::MachO::InterfaceFile::const_symbol_range LHS,
llvm::MachO::InterfaceFile::const_symbol_range RHS,
std::string Attr) { … }
std::vector<DiffOutput>
DiffEngine::findDifferences(const InterfaceFile *IFLHS,
const InterfaceFile *IFRHS) { … }
template <typename T>
void printSingleVal(std::string Indent, const DiffOutput &Attr,
raw_ostream &OS) { … }
template <typename T>
T *castValues(const std::unique_ptr<AttributeDiff> &RawAttr) { … }
template <typename T> void sortTargetValues(std::vector<T> &TargValues) { … }
template <typename T>
void printVecVal(std::string Indent, const DiffOutput &Attr, raw_ostream &OS) { … }
template <>
void printVecVal<DiffSymVec>(std::string Indent, const DiffOutput &Attr,
raw_ostream &OS) { … }
void DiffEngine::printDifferences(raw_ostream &OS,
const std::vector<DiffOutput> &Diffs,
int IndentCounter) { … }
bool DiffEngine::compareFiles(raw_ostream &OS) { … }