| //===-- MSVCUndecoratedNameParser.h -----------------------------*- 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 | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_MSVCUNDECORATEDNAMEPARSER_H | |
| #define LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_MSVCUNDECORATEDNAMEPARSER_H | |
| #include <vector> | |
| #include "llvm/ADT/ArrayRef.h" | |
| #include "llvm/ADT/StringRef.h" | |
| class MSVCUndecoratedNameSpecifier { | |
| public: | |
| MSVCUndecoratedNameSpecifier(llvm::StringRef full_name, | |
| llvm::StringRef base_name) | |
| : m_full_name(full_name), m_base_name(base_name) {} | |
| llvm::StringRef GetFullName() const { return m_full_name; } | |
| llvm::StringRef GetBaseName() const { return m_base_name; } | |
| private: | |
| llvm::StringRef m_full_name; | |
| llvm::StringRef m_base_name; | |
| }; | |
| class MSVCUndecoratedNameParser { | |
| public: | |
| explicit MSVCUndecoratedNameParser(llvm::StringRef name); | |
| llvm::ArrayRef<MSVCUndecoratedNameSpecifier> GetSpecifiers() const { | |
| return m_specifiers; | |
| } | |
| static bool IsMSVCUndecoratedName(llvm::StringRef name); | |
| static bool ExtractContextAndIdentifier(llvm::StringRef name, | |
| llvm::StringRef &context, | |
| llvm::StringRef &identifier); | |
| static llvm::StringRef DropScope(llvm::StringRef name); | |
| private: | |
| std::vector<MSVCUndecoratedNameSpecifier> m_specifiers; | |
| }; | |
| #endif |