|
|
#pragma once |
|
|
#include <cstring> |
|
|
#include <caffe2/serialize/read_adapter_interface.h> |
|
|
|
|
|
|
|
|
namespace caffe2 { |
|
|
namespace serialize { |
|
|
|
|
|
class MemoryReadAdapter final : public caffe2::serialize::ReadAdapterInterface { |
|
|
public: |
|
|
explicit MemoryReadAdapter(const void* data, off_t size) |
|
|
: data_(data), size_(size) {} |
|
|
|
|
|
size_t size() const override { |
|
|
return size_; |
|
|
} |
|
|
|
|
|
size_t read(uint64_t pos, void* buf, size_t n, const char* what = "") |
|
|
const override { |
|
|
(void) what; |
|
|
memcpy(buf, (int8_t*)(data_) + pos, n); |
|
|
return n; |
|
|
} |
|
|
|
|
|
private: |
|
|
const void* data_; |
|
|
off_t size_; |
|
|
}; |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|