003 File Manager
Current Path:
/usr/src/contrib/llvm-project/clang/include/clang/Serialization
usr
/
src
/
contrib
/
llvm-project
/
clang
/
include
/
clang
/
Serialization
/
📁
..
📄
ASTBitCodes.h
(63.63 KB)
📄
ASTDeserializationListener.h
(2.35 KB)
📄
ASTReader.h
(85.29 KB)
📄
ASTRecordReader.h
(11.28 KB)
📄
ASTRecordWriter.h
(8.88 KB)
📄
ASTWriter.h
(29.38 KB)
📄
ContinuousRangeMap.h
(4.38 KB)
📄
GlobalModuleIndex.h
(6.7 KB)
📄
InMemoryModuleCache.h
(3.79 KB)
📄
ModuleFile.h
(16.46 KB)
📄
ModuleFileExtension.h
(4.88 KB)
📄
ModuleManager.h
(11.85 KB)
📄
PCHContainerOperations.h
(4 KB)
📄
SerializationDiagnostic.h
(545 B)
📄
TypeBitCodes.def
(3.02 KB)
Editing: PCHContainerOperations.h
//===--- Serialization/PCHContainerOperations.h - PCH Containers --*- 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 LLVM_CLANG_SERIALIZATION_PCHCONTAINEROPERATIONS_H #define LLVM_CLANG_SERIALIZATION_PCHCONTAINEROPERATIONS_H #include "clang/Basic/Module.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/StringMap.h" #include "llvm/Support/MemoryBuffer.h" #include <memory> namespace llvm { class raw_pwrite_stream; } namespace clang { class ASTConsumer; class CodeGenOptions; class DiagnosticsEngine; class CompilerInstance; struct PCHBuffer { ASTFileSignature Signature; llvm::SmallVector<char, 0> Data; bool IsComplete; }; /// This abstract interface provides operations for creating /// containers for serialized ASTs (precompiled headers and clang /// modules). class PCHContainerWriter { public: virtual ~PCHContainerWriter() = 0; virtual llvm::StringRef getFormat() const = 0; /// Return an ASTConsumer that can be chained with a /// PCHGenerator that produces a wrapper file format containing a /// serialized AST bitstream. virtual std::unique_ptr<ASTConsumer> CreatePCHContainerGenerator(CompilerInstance &CI, const std::string &MainFileName, const std::string &OutputFileName, std::unique_ptr<llvm::raw_pwrite_stream> OS, std::shared_ptr<PCHBuffer> Buffer) const = 0; }; /// This abstract interface provides operations for unwrapping /// containers for serialized ASTs (precompiled headers and clang /// modules). class PCHContainerReader { public: virtual ~PCHContainerReader() = 0; /// Equivalent to the format passed to -fmodule-format= virtual llvm::StringRef getFormat() const = 0; /// Returns the serialized AST inside the PCH container Buffer. virtual llvm::StringRef ExtractPCH(llvm::MemoryBufferRef Buffer) const = 0; }; /// Implements write operations for a raw pass-through PCH container. class RawPCHContainerWriter : public PCHContainerWriter { llvm::StringRef getFormat() const override { return "raw"; } /// Return an ASTConsumer that can be chained with a /// PCHGenerator that writes the module to a flat file. std::unique_ptr<ASTConsumer> CreatePCHContainerGenerator(CompilerInstance &CI, const std::string &MainFileName, const std::string &OutputFileName, std::unique_ptr<llvm::raw_pwrite_stream> OS, std::shared_ptr<PCHBuffer> Buffer) const override; }; /// Implements read operations for a raw pass-through PCH container. class RawPCHContainerReader : public PCHContainerReader { llvm::StringRef getFormat() const override { return "raw"; } /// Simply returns the buffer contained in Buffer. llvm::StringRef ExtractPCH(llvm::MemoryBufferRef Buffer) const override; }; /// A registry of PCHContainerWriter and -Reader objects for different formats. class PCHContainerOperations { llvm::StringMap<std::unique_ptr<PCHContainerWriter>> Writers; llvm::StringMap<std::unique_ptr<PCHContainerReader>> Readers; public: /// Automatically registers a RawPCHContainerWriter and /// RawPCHContainerReader. PCHContainerOperations(); void registerWriter(std::unique_ptr<PCHContainerWriter> Writer) { Writers[Writer->getFormat()] = std::move(Writer); } void registerReader(std::unique_ptr<PCHContainerReader> Reader) { Readers[Reader->getFormat()] = std::move(Reader); } const PCHContainerWriter *getWriterOrNull(llvm::StringRef Format) { return Writers[Format].get(); } const PCHContainerReader *getReaderOrNull(llvm::StringRef Format) { return Readers[Format].get(); } const PCHContainerReader &getRawReader() { return *getReaderOrNull("raw"); } }; } #endif
Upload File
Create Folder