| //===- llvm/Testing/ADT/StringMap.h ---------------------------------------===// |
| // |
| // 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 |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_TESTING_ADT_STRINGMAP_H_ |
| #define LLVM_TESTING_ADT_STRINGMAP_H_ |
| |
| #include "llvm/ADT/STLExtras.h" |
| #include "llvm/ADT/StringMap.h" |
| #include "llvm/Support/FormatVariadic.h" |
| #include "llvm/Testing/ADT/StringMapEntry.h" |
| #include <ostream> |
| #include <sstream> |
| |
| namespace llvm { |
| |
| /// Support for printing to std::ostream, for use with e.g. producing more |
| /// useful error messages with Google Test. |
| template <typename T> |
| std::ostream &operator<<(std::ostream &OS, const StringMap<T> &M) { |
| if (M.empty()) { |
| return OS << "{ }"; |
| } |
| |
| std::vector<std::string> Lines; |
| for (const auto &E : M) { |
| std::ostringstream SS; |
| SS << E << ","; |
| Lines.push_back(SS.str()); |
| } |
| llvm::sort(Lines); |
| Lines.insert(Lines.begin(), "{"); |
| Lines.insert(Lines.end(), "}"); |
| |
| return OS << llvm::formatv("{0:$[\n]}", |
| make_range(Lines.begin(), Lines.end())) |
| .str(); |
| } |
| |
| } // namespace llvm |
| |
| #endif |