clang 20.0.0 (based on r547379) from build 12806354. Bug: http://b/379133546 Test: N/A Change-Id: I2eb8938af55d809de674be63cb30cf27e801862b Upstream-Commit: ad834e67b1105d15ef907f6255d4c96e8e733f57
73 lines
2.5 KiB
C++
73 lines
2.5 KiB
C++
//===-- ReplacementsYaml.h -- Serialiazation for Replacements ---*- 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
///
|
|
/// \file
|
|
/// This file defines the structure of a YAML document for serializing
|
|
/// replacements.
|
|
///
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_CLANG_TOOLING_REPLACEMENTSYAML_H
|
|
#define LLVM_CLANG_TOOLING_REPLACEMENTSYAML_H
|
|
|
|
#include "clang/Tooling/Refactoring.h"
|
|
#include "llvm/Support/YAMLTraits.h"
|
|
#include <string>
|
|
|
|
LLVM_YAML_IS_SEQUENCE_VECTOR(clang::tooling::Replacement)
|
|
|
|
namespace llvm {
|
|
namespace yaml {
|
|
|
|
/// Specialized MappingTraits to describe how a Replacement is
|
|
/// (de)serialized.
|
|
template <> struct MappingTraits<clang::tooling::Replacement> {
|
|
/// Helper to (de)serialize a Replacement since we don't have direct
|
|
/// access to its data members.
|
|
struct NormalizedReplacement {
|
|
NormalizedReplacement(const IO &) : Offset(0), Length(0) {}
|
|
|
|
NormalizedReplacement(const IO &, const clang::tooling::Replacement &R)
|
|
: FilePath(R.getFilePath()), Offset(R.getOffset()),
|
|
Length(R.getLength()), ReplacementText(R.getReplacementText()) {}
|
|
|
|
clang::tooling::Replacement denormalize(const IO &) {
|
|
return clang::tooling::Replacement(FilePath, Offset, Length,
|
|
ReplacementText);
|
|
}
|
|
|
|
std::string FilePath;
|
|
unsigned int Offset;
|
|
unsigned int Length;
|
|
std::string ReplacementText;
|
|
};
|
|
|
|
static void mapping(IO &Io, clang::tooling::Replacement &R) {
|
|
MappingNormalization<NormalizedReplacement, clang::tooling::Replacement>
|
|
Keys(Io, R);
|
|
Io.mapRequired("FilePath", Keys->FilePath);
|
|
Io.mapRequired("Offset", Keys->Offset);
|
|
Io.mapRequired("Length", Keys->Length);
|
|
Io.mapRequired("ReplacementText", Keys->ReplacementText);
|
|
}
|
|
};
|
|
|
|
/// Specialized MappingTraits to describe how a
|
|
/// TranslationUnitReplacements is (de)serialized.
|
|
template <> struct MappingTraits<clang::tooling::TranslationUnitReplacements> {
|
|
static void mapping(IO &Io,
|
|
clang::tooling::TranslationUnitReplacements &Doc) {
|
|
Io.mapRequired("MainSourceFile", Doc.MainSourceFile);
|
|
Io.mapRequired("Replacements", Doc.Replacements);
|
|
}
|
|
};
|
|
} // end namespace yaml
|
|
} // end namespace llvm
|
|
|
|
#endif
|