1c397aae3SStephan Aßmus /* 2*26e9cdb7SStephan Aßmus * Copyright 2008, Haiku. All rights reserved. 3c397aae3SStephan Aßmus * Distributed under the terms of the MIT License. 4c397aae3SStephan Aßmus * 5c397aae3SStephan Aßmus * Authors: 6c397aae3SStephan Aßmus * Michael Pfeiffer <laplace@users.sourceforge.net> 7c397aae3SStephan Aßmus * Fredrik Modéen <fredrik@modeen.se> 8c397aae3SStephan Aßmus */ 9*26e9cdb7SStephan Aßmus #ifndef FILE_READ_WRITE_H 10*26e9cdb7SStephan Aßmus #define FILE_READ_WRITE_H 11c397aae3SStephan Aßmus 12c397aae3SStephan Aßmus #include <stdio.h> 13c397aae3SStephan Aßmus #include <File.h> 14c397aae3SStephan Aßmus #include <String.h> 15c397aae3SStephan Aßmus 16*26e9cdb7SStephan Aßmus 17c397aae3SStephan Aßmus class FileReadWrite { 18c397aae3SStephan Aßmus public: 19*26e9cdb7SStephan Aßmus FileReadWrite(BFile* file, 20*26e9cdb7SStephan Aßmus int32 sourceEncoding = -1); 21*26e9cdb7SStephan Aßmus // -1 means "default" encoding 22c397aae3SStephan Aßmus bool Next(BString& string); 23c397aae3SStephan Aßmus status_t Write(const BString& contents) const; 24c397aae3SStephan Aßmus void SetEncoding(int32 sourceEncoding); 25*26e9cdb7SStephan Aßmus uint32 GetEncoding() const; 26c397aae3SStephan Aßmus 27c397aae3SStephan Aßmus private: 28c397aae3SStephan Aßmus BFile* fFile; 29c397aae3SStephan Aßmus int32 fSourceEncoding; 30c397aae3SStephan Aßmus char fBuffer[4096]; 31c397aae3SStephan Aßmus off_t fPositionInBuffer; 32c397aae3SStephan Aßmus ssize_t fAmtRead; 33c397aae3SStephan Aßmus }; 34c397aae3SStephan Aßmus 35*26e9cdb7SStephan Aßmus #endif //FILE_READ_WRITE_H 36