//===- Strings.h ------------------------------------------------*- C++ -*-===// // // The LLVM Linker // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef LLD_STRINGS_H #define LLD_STRINGS_H #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/Optional.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/GlobPattern.h" #include #include namespace lld { // Returns a demangled C++ symbol name. If Name is not a mangled // name, it returns Optional::None. llvm::Optional demangleItanium(llvm::StringRef Name); llvm::Optional demangleMSVC(llvm::StringRef S); std::vector parseHex(llvm::StringRef S); bool isValidCIdentifier(llvm::StringRef S); // Write the contents of the a buffer to a file void saveBuffer(llvm::StringRef Buffer, const llvm::Twine &Path); // This class represents multiple glob patterns. class StringMatcher { public: StringMatcher() = default; explicit StringMatcher(llvm::ArrayRef Pat); bool match(llvm::StringRef S) const; private: std::vector Patterns; }; } // namespace lld #endif