Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:42:57

0001 //===--- DataBufferLLVM.h ---------------------------------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 
0009 #ifndef LLDB_UTILITY_DATABUFFERLLVM_H
0010 #define LLDB_UTILITY_DATABUFFERLLVM_H
0011 
0012 #include "lldb/Utility/DataBuffer.h"
0013 #include "lldb/lldb-types.h"
0014 
0015 #include <cstdint>
0016 #include <memory>
0017 
0018 namespace llvm {
0019 class WritableMemoryBuffer;
0020 class MemoryBuffer;
0021 class Twine;
0022 } // namespace llvm
0023 
0024 namespace lldb_private {
0025 class FileSystem;
0026 
0027 class DataBufferLLVM : public DataBuffer {
0028 public:
0029   ~DataBufferLLVM() override;
0030 
0031   const uint8_t *GetBytesImpl() const override;
0032   lldb::offset_t GetByteSize() const override;
0033 
0034   /// LLVM RTTI support.
0035   /// {
0036   static char ID;
0037   bool isA(const void *ClassID) const override {
0038     return ClassID == &ID || DataBuffer::isA(ClassID);
0039   }
0040   static bool classof(const DataBuffer *data_buffer) {
0041     return data_buffer->isA(&ID);
0042   }
0043   /// }
0044 
0045   /// Construct a DataBufferLLVM from \p Buffer.  \p Buffer must be a valid
0046   /// pointer.
0047   explicit DataBufferLLVM(std::unique_ptr<llvm::MemoryBuffer> Buffer);
0048 
0049 protected:
0050   std::unique_ptr<llvm::MemoryBuffer> Buffer;
0051 };
0052 
0053 class WritableDataBufferLLVM : public WritableDataBuffer {
0054 public:
0055   ~WritableDataBufferLLVM() override;
0056 
0057   const uint8_t *GetBytesImpl() const override;
0058   lldb::offset_t GetByteSize() const override;
0059 
0060   /// LLVM RTTI support.
0061   /// {
0062   static char ID;
0063   bool isA(const void *ClassID) const override {
0064     return ClassID == &ID || WritableDataBuffer::isA(ClassID);
0065   }
0066   static bool classof(const DataBuffer *data_buffer) {
0067     return data_buffer->isA(&ID);
0068   }
0069   /// }
0070 
0071   /// Construct a DataBufferLLVM from \p Buffer.  \p Buffer must be a valid
0072   /// pointer.
0073   explicit WritableDataBufferLLVM(
0074       std::unique_ptr<llvm::WritableMemoryBuffer> Buffer);
0075 
0076 protected:
0077   std::unique_ptr<llvm::WritableMemoryBuffer> Buffer;
0078 };
0079 } // namespace lldb_private
0080 
0081 #endif