brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 37b4282 Raw
110 lines · cpp
1//===- DiagnosticBuilderWrappers.cpp ----------------------------*- C++-*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "DiagnosticBuilderWrappers.h"10#include "llvm/ADT/STLExtras.h"11#include "llvm/Support/raw_ostream.h"12#include "llvm/TextAPI/Platform.h"13 14using clang::DiagnosticBuilder;15 16namespace llvm {17namespace MachO {18const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,19                                    const Architecture &Arch) {20  DB.AddString(getArchitectureName(Arch));21  return DB;22}23 24const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,25                                    const ArchitectureSet &ArchSet) {26  DB.AddString(std::string(ArchSet));27  return DB;28}29 30const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,31                                    const PlatformType &Platform) {32  DB.AddString(getPlatformName(Platform));33  return DB;34}35 36const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,37                                    const PlatformVersionSet &Platforms) {38  std::string PlatformAsString;39  raw_string_ostream Stream(PlatformAsString);40 41  Stream << "[ ";42  llvm::interleaveComma(43      Platforms, Stream,44      [&Stream](const std::pair<PlatformType, VersionTuple> &PV) {45        Stream << getPlatformName(PV.first);46        if (!PV.second.empty())47          Stream << PV.second.getAsString();48      });49  Stream << " ]";50  DB.AddString(PlatformAsString);51  return DB;52}53 54const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,55                                    const FileType &Type) {56  switch (Type) {57  case FileType::MachO_Bundle:58    DB.AddString("mach-o bundle");59    return DB;60  case FileType::MachO_DynamicLibrary:61    DB.AddString("mach-o dynamic library");62    return DB;63  case FileType::MachO_DynamicLibrary_Stub:64    DB.AddString("mach-o dynamic library stub");65    return DB;66  case FileType::TBD_V1:67    DB.AddString("tbd-v1");68    return DB;69  case FileType::TBD_V2:70    DB.AddString("tbd-v2");71    return DB;72  case FileType::TBD_V3:73    DB.AddString("tbd-v3");74    return DB;75  case FileType::TBD_V4:76    DB.AddString("tbd-v4");77    return DB;78  case FileType::TBD_V5:79    DB.AddString("tbd-v5");80    return DB;81  case FileType::Invalid:82  case FileType::All:83    break;84  }85  llvm_unreachable("Unexpected file type for diagnostics.");86}87 88const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB,89                                    const PackedVersion &Version) {90  std::string VersionString;91  raw_string_ostream OS(VersionString);92  OS << Version;93  DB.AddString(VersionString);94  return DB;95}96 97const clang::DiagnosticBuilder &98operator<<(const clang::DiagnosticBuilder &DB,99           const clang::installapi::LibAttrs::Entry &LibAttr) {100  std::string Entry;101  raw_string_ostream OS(Entry);102 103  OS << LibAttr.first << " [ " << LibAttr.second << " ]";104  DB.AddString(Entry);105  return DB;106}107 108} // namespace MachO109} // namespace llvm110