1//===- llvm/Support/StringRefMemoryObject.h ---------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file contains the declaration of the StringRefMemObject class, a simple 11// wrapper around StringRef implementing the MemoryObject interface. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_SUPPORT_STRINGREFMEMORYOBJECT_H 16#define LLVM_SUPPORT_STRINGREFMEMORYOBJECT_H 17 18#include "llvm/ADT/StringRef.h" 19#include "llvm/Support/Compiler.h" 20#include "llvm/Support/MemoryObject.h" 21 22namespace llvm { 23 24/// StringRefMemoryObject - Simple StringRef-backed MemoryObject 25class StringRefMemoryObject : public MemoryObject { 26 StringRef Bytes; 27 uint64_t Base; 28public: 29 StringRefMemoryObject(StringRef Bytes, uint64_t Base = 0) 30 : Bytes(Bytes), Base(Base) {} 31 32 uint64_t getBase() const override { return Base; } 33 uint64_t getExtent() const override { return Bytes.size(); } 34 35 int readByte(uint64_t Addr, uint8_t *Byte) const override; 36 int readBytes(uint64_t Addr, uint64_t Size, uint8_t *Buf) const override; 37}; 38 39} 40 41#endif 42