xref: /aosp_15_r20/external/bsdiff/memory_file.cc (revision a3a45f308bd90ef1a6e6a5e8fb92fe449b895909)
1*a3a45f30SXin Li // Copyright 2016 The Chromium OS Authors. All rights reserved.
2*a3a45f30SXin Li // Use of this source code is governed by a BSD-style license that can be
3*a3a45f30SXin Li // found in the LICENSE file.
4*a3a45f30SXin Li 
5*a3a45f30SXin Li #include "bsdiff/memory_file.h"
6*a3a45f30SXin Li 
7*a3a45f30SXin Li #include <algorithm>
8*a3a45f30SXin Li #include <string.h>
9*a3a45f30SXin Li 
10*a3a45f30SXin Li namespace bsdiff {
11*a3a45f30SXin Li 
MemoryFile(const uint8_t * data,size_t size)12*a3a45f30SXin Li MemoryFile::MemoryFile(const uint8_t* data, size_t size)
13*a3a45f30SXin Li     : data_(data), size_(size) {}
14*a3a45f30SXin Li 
Read(void * buf,size_t count,size_t * bytes_read)15*a3a45f30SXin Li bool MemoryFile::Read(void* buf, size_t count, size_t* bytes_read) {
16*a3a45f30SXin Li   count = std::min(count, static_cast<size_t>(size_ - offset_));
17*a3a45f30SXin Li   memcpy(buf, data_ + offset_, count);
18*a3a45f30SXin Li   offset_ += count;
19*a3a45f30SXin Li   *bytes_read = count;
20*a3a45f30SXin Li   return true;
21*a3a45f30SXin Li }
22*a3a45f30SXin Li 
Write(const void * buf,size_t count,size_t * bytes_written)23*a3a45f30SXin Li bool MemoryFile::Write(const void* buf, size_t count, size_t* bytes_written) {
24*a3a45f30SXin Li   return false;
25*a3a45f30SXin Li }
26*a3a45f30SXin Li 
Seek(off_t pos)27*a3a45f30SXin Li bool MemoryFile::Seek(off_t pos) {
28*a3a45f30SXin Li   if (pos > static_cast<off_t>(size_) || pos < 0)
29*a3a45f30SXin Li     return false;
30*a3a45f30SXin Li   offset_ = pos;
31*a3a45f30SXin Li   return true;
32*a3a45f30SXin Li }
33*a3a45f30SXin Li 
Close()34*a3a45f30SXin Li bool MemoryFile::Close() {
35*a3a45f30SXin Li   return true;
36*a3a45f30SXin Li }
37*a3a45f30SXin Li 
GetSize(uint64_t * size)38*a3a45f30SXin Li bool MemoryFile::GetSize(uint64_t* size) {
39*a3a45f30SXin Li   *size = size_;
40*a3a45f30SXin Li   return true;
41*a3a45f30SXin Li }
42*a3a45f30SXin Li 
43*a3a45f30SXin Li }  // namespace bsdiff
44