//===- 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 #include namespace llvm { /// Support for printing to std::ostream, for use with e.g. producing more /// useful error messages with Google Test. template std::ostream &operator<<(std::ostream &OS, const StringMap &M) { if (M.empty()) { return OS << "{ }"; } std::vector 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