/* * Copyright 2005, Haiku. * Distributed under the terms of the MIT License. * * Authors: * Michael Lotz */ /* A BMallocIO similar structure but with less overhead */ #ifndef _SIMPLE_MALLOC_IO_H_ #define _SIMPLE_MALLOC_IO_H_ #include namespace BPrivate { class BSimpleMallocIO { public: BSimpleMallocIO(size_t size) : fSize(size) { fBuffer = (char *)malloc(size); } ~BSimpleMallocIO() { free(fBuffer); } void Read(void *buffer) { memcpy(buffer, fBuffer, fSize); } void Read(void *buffer, size_t size) { memcpy(buffer, fBuffer, size); } void ReadAt(off_t pos, void *buffer, size_t size) { memcpy(buffer, fBuffer + pos, size); } void Write(const void *buffer) { memcpy(fBuffer, buffer, fSize); } void Write(const void *buffer, size_t size) { memcpy(fBuffer, buffer, size); } void WriteAt(off_t pos, const void *buffer, size_t size) { memcpy(fBuffer + pos, buffer, size); } status_t SetSize(off_t size) { fBuffer = (char *)realloc(fBuffer, size); if (!fBuffer) return B_NO_MEMORY; fSize = size; return B_OK; } char *Buffer() { return fBuffer; } size_t BufferLength() { return fSize; } private: char *fBuffer; size_t fSize; }; } // namespace BPivate #endif // _SIMPLE_MALLOC_IO_H_