1//===- lib/Support/StringRefMemoryObject.cpp --------------------*- 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#include "llvm/Support/StringRefMemoryObject.h" 11 12using namespace llvm; 13 14int StringRefMemoryObject::readByte(uint64_t Addr, uint8_t *Byte) const { 15 if (Addr >= Base + getExtent() || Addr < Base) 16 return -1; 17 *Byte = Bytes[Addr - Base]; 18 return 0; 19} 20 21int StringRefMemoryObject::readBytes(uint64_t Addr, 22 uint64_t Size, 23 uint8_t *Buf) const { 24 uint64_t Offset = Addr - Base; 25 if (Addr >= Base + getExtent() || Offset + Size > getExtent() || Addr < Base) 26 return -1; 27 memcpy(Buf, Bytes.data() + Offset, Size); 28 return 0; 29} 30