1198090Srdivacky//===- MemoryObject.cpp - Abstract memory interface -----------------------===//
2198090Srdivacky//
3198090Srdivacky//                     The LLVM Compiler Infrastructure
4198090Srdivacky//
5198090Srdivacky// This file is distributed under the University of Illinois Open Source
6198090Srdivacky// License. See LICENSE.TXT for details.
7198090Srdivacky//
8198090Srdivacky//===----------------------------------------------------------------------===//
9198090Srdivacky
10198090Srdivacky#include "llvm/Support/MemoryObject.h"
11198090Srdivackyusing namespace llvm;
12198090Srdivacky
13198090SrdivackyMemoryObject::~MemoryObject() {
14198090Srdivacky}
15198090Srdivacky
16198090Srdivackyint MemoryObject::readBytes(uint64_t address,
17198090Srdivacky                            uint64_t size,
18263508Sdim                            uint8_t* buf) const {
19198090Srdivacky  uint64_t current = address;
20198090Srdivacky  uint64_t limit = getBase() + getExtent();
21226633Sdim
22226633Sdim  if (current + size > limit)
23226633Sdim    return -1;
24226633Sdim
25226633Sdim  while (current - address < size) {
26198090Srdivacky    if (readByte(current, &buf[(current - address)]))
27198090Srdivacky      return -1;
28198090Srdivacky
29198090Srdivacky    current++;
30198090Srdivacky  }
31198090Srdivacky
32198090Srdivacky  return 0;
33198090Srdivacky}
34