1/* 2 * Copyright 2008, Haiku, Inc. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Fran��ois Revol <revol@free.fr> 7 */ 8#ifndef CACHED_BLOCK_H 9#define CACHED_BLOCK_H 10 11 12#include "Volume.h" 13 14 15namespace FATFS { 16 17 18class CachedBlock { 19 public: 20 enum { 21 READ = 0x01, 22 CLEAR = 0x02, 23 FORCE = 0x04, 24 }; 25 26 public: 27 CachedBlock(Volume &volume); 28 CachedBlock(Volume &volume, off_t block); 29 ~CachedBlock(); 30 31 uint8 *SetTo(off_t block); 32 status_t SetTo(off_t blockNumber, uint32 flags); 33 status_t Flush(); 34 35 void Unset(); 36 37 uint8 *Block() const { return fBlock; } 38 off_t BlockNumber() const { return fBlockNumber; } 39 uint32 BlockSize() const { return fVolume.BlockSize(); } 40 uint32 BlockShift() const { return fVolume.BlockShift(); } 41 42 private: 43 Volume &fVolume; 44 off_t fBlockNumber; 45 uint8 *fBlock; 46}; 47 48 49inline void 50CachedBlock::Unset() 51{ 52 fBlockNumber = -1; 53} 54 55 56} // namespace FATFS 57 58 59#endif /* CACHED_BLOCK_H */ 60