diff options
Diffstat (limited to 'contrib/llvm-project/clang/include/clang/ExtractAPI/APIIgnoresList.h')
| -rw-r--r-- | contrib/llvm-project/clang/include/clang/ExtractAPI/APIIgnoresList.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/contrib/llvm-project/clang/include/clang/ExtractAPI/APIIgnoresList.h b/contrib/llvm-project/clang/include/clang/ExtractAPI/APIIgnoresList.h new file mode 100644 index 000000000000..3eee8e336cb6 --- /dev/null +++ b/contrib/llvm-project/clang/include/clang/ExtractAPI/APIIgnoresList.h @@ -0,0 +1,76 @@ +//===- ExtractAPI/APIIgnoresList.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 +// +//===----------------------------------------------------------------------===// +/// +/// \file This file defines APIIgnoresList which is a type that allows querying +/// files containing symbols to ignore when extracting API information. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_API_IGNORES_LIST_H +#define LLVM_CLANG_API_IGNORES_LIST_H + +#include "clang/Basic/FileManager.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/Error.h" +#include "llvm/Support/raw_ostream.h" + +#include <memory> +#include <system_error> + +namespace llvm { +class MemoryBuffer; +} // namespace llvm + +namespace clang { +namespace extractapi { + +struct IgnoresFileNotFound : public llvm::ErrorInfo<IgnoresFileNotFound> { + std::string Path; + static char ID; + + explicit IgnoresFileNotFound(StringRef Path) : Path(Path) {} + + virtual void log(llvm::raw_ostream &os) const override; + + virtual std::error_code convertToErrorCode() const override; +}; + +/// A type that provides access to a new line separated list of symbol names to +/// ignore when extracting API information. +struct APIIgnoresList { + using FilePathList = std::vector<std::string>; + + /// The API to use for generating from the files at \p IgnoresFilePathList. + /// + /// \returns an initialized APIIgnoresList or an Error. + static llvm::Expected<APIIgnoresList> + create(const FilePathList &IgnoresFilePathList, FileManager &FM); + + APIIgnoresList() = default; + + /// Check if \p SymbolName is specified in the APIIgnoresList and if it should + /// therefore be ignored. + bool shouldIgnore(llvm::StringRef SymbolName) const; + +private: + using SymbolNameList = llvm::SmallVector<llvm::StringRef, 32>; + using BufferList = llvm::SmallVector<std::unique_ptr<llvm::MemoryBuffer>>; + + APIIgnoresList(SymbolNameList SymbolsToIgnore, BufferList Buffers) + : SymbolsToIgnore(std::move(SymbolsToIgnore)), + Buffers(std::move(Buffers)) {} + + SymbolNameList SymbolsToIgnore; + BufferList Buffers; +}; + +} // namespace extractapi +} // namespace clang + +#endif // LLVM_CLANG_API_IGNORES_LIST_H |
