1ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha//===- lib/Support/StringRefMemoryObject.cpp --------------------*- C++ -*-===// 2ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha// 3ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha// The LLVM Compiler Infrastructure 4ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha// 5ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha// This file is distributed under the University of Illinois Open Source 6ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha// License. See LICENSE.TXT for details. 7ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha// 8ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha//===----------------------------------------------------------------------===// 9ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha 10ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha#include "llvm/Support/StringRefMemoryObject.h" 11ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha 12ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougachausing namespace llvm; 13ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha 14ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougachaint StringRefMemoryObject::readByte(uint64_t Addr, uint8_t *Byte) const { 15ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha if (Addr >= Base + getExtent() || Addr < Base) 16ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha return -1; 17ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha *Byte = Bytes[Addr - Base]; 18ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha return 0; 19ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha} 20ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha 21ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougachaint StringRefMemoryObject::readBytes(uint64_t Addr, 22ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha uint64_t Size, 2349a6a8d8f2994249c81b7914b07015714748a55cBenjamin Kramer uint8_t *Buf) const { 24ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha uint64_t Offset = Addr - Base; 2549a6a8d8f2994249c81b7914b07015714748a55cBenjamin Kramer if (Addr >= Base + getExtent() || Offset + Size > getExtent() || Addr < Base) 2649a6a8d8f2994249c81b7914b07015714748a55cBenjamin Kramer return -1; 27ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha memcpy(Buf, Bytes.data() + Offset, Size); 28ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha return 0; 29ef99356dfebb96f6f90efb912c2877214bad060eAhmed Bougacha} 30