6 #ifndef DMLC_MEMORY_IO_H_ 7 #define DMLC_MEMORY_IO_H_ 14 #include "./logging.h" 29 : p_buffer_(reinterpret_cast<char*>(p_buffer)),
30 buffer_size_(buffer_size) {
33 virtual size_t Read(
void *ptr,
size_t size) {
34 CHECK(curr_ptr_ + size <= buffer_size_);
35 size_t nread = std::min(buffer_size_ - curr_ptr_, size);
36 if (nread != 0) std::memcpy(ptr, p_buffer_ + curr_ptr_, nread);
40 virtual void Write(
const void *ptr,
size_t size) {
41 if (size == 0)
return;
42 CHECK(curr_ptr_ + size <= buffer_size_);
43 std::memcpy(p_buffer_ + curr_ptr_, ptr, size);
46 virtual void Seek(
size_t pos) {
47 curr_ptr_ =
static_cast<size_t>(pos);
49 virtual size_t Tell(
void) {
73 : p_buffer_(p_buffer) {
76 virtual size_t Read(
void *ptr,
size_t size) {
77 CHECK(curr_ptr_ <= p_buffer_->length());
78 size_t nread = std::min(p_buffer_->length() - curr_ptr_, size);
79 if (nread != 0) std::memcpy(ptr, &(*p_buffer_)[0] + curr_ptr_, nread);
83 virtual void Write(
const void *ptr,
size_t size) {
84 if (size == 0)
return;
85 if (curr_ptr_ + size > p_buffer_->length()) {
86 p_buffer_->resize(curr_ptr_+size);
88 std::memcpy(&(*p_buffer_)[0] + curr_ptr_, ptr, size);
91 virtual void Seek(
size_t pos) {
92 curr_ptr_ =
static_cast<size_t>(pos);
94 virtual size_t Tell(
void) {
100 std::string *p_buffer_;
105 #endif // DMLC_MEMORY_IO_H_ virtual void Seek(size_t pos)
seek to certain position of the file
Definition: memory_io.h:46
virtual void Write(const void *ptr, size_t size)
writes data to a stream
Definition: memory_io.h:40
virtual void Seek(size_t pos)
seek to certain position of the file
Definition: memory_io.h:91
MemoryFixedSizeStream(void *p_buffer, size_t buffer_size)
constructor
Definition: memory_io.h:28
A in memory stream that is backed by std::string. This class allows us to read/write from/to a std::s...
Definition: memory_io.h:66
virtual void Write(const void *ptr, size_t size)
writes data to a stream
Definition: memory_io.h:83
namespace for dmlc
Definition: array_view.h:12
virtual size_t Read(void *ptr, size_t size)
reads data from a stream
Definition: memory_io.h:33
virtual size_t Tell(void)
tell the position of the stream
Definition: memory_io.h:49
interface of i/o stream that support seek
Definition: io.h:109
virtual size_t Tell(void)
tell the position of the stream
Definition: memory_io.h:94
virtual size_t Read(void *ptr, size_t size)
reads data from a stream
Definition: memory_io.h:76
A Stream that operates on fixed region of memory This class allows us to read/write from/to a fixed m...
Definition: memory_io.h:21
MemoryStringStream(std::string *p_buffer)
constructor
Definition: memory_io.h:72