//===- llvm/ADT/CachedHashString.h - Prehashed string/StringRef -*- 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 CachedHashString and CachedHashStringRef. These are /// owning and not-owning string types that store their hash in addition to /// their string data. /// /// Unlike std::string, CachedHashString can be used in DenseSet/DenseMap /// (because, unlike std::string, CachedHashString lets us have empty and /// tombstone values). /// //===----------------------------------------------------------------------===// #ifndef LLVM_ADT_CACHEDHASHSTRING_H #define LLVM_ADT_CACHEDHASHSTRING_H #include "llvm/ADT/DenseMapInfo.h" #include "llvm/ADT/StringRef.h" namespace llvm { /// A container which contains a StringRef plus a precomputed hash. class CachedHashStringRef { … }; template <> struct DenseMapInfo<CachedHashStringRef> { … }; /// A container which contains a string, which it owns, plus a precomputed hash. /// /// We do not null-terminate the string. class CachedHashString { … }; template <> struct DenseMapInfo<CachedHashString> { … }; } // namespace llvm #endif