xref: /haiku/src/bin/bfs_tools/lib/Bitmap.h (revision 820dca4df6c7bf955c46e8f6521b9408f50b2900)
1 /*
2  * Copyright 2001-2008, pinc Software. All Rights Reserved.
3  */
4 #ifndef BITMAP_H
5 #define BITMAP_H
6 
7 
8 #include <SupportDefs.h>
9 
10 class Disk;
11 class Inode;
12 
13 
14 class Bitmap {
15 	public:
16 		Bitmap(Disk *disk);
17 		Bitmap();
18 		~Bitmap();
19 
20 		status_t	SetTo(Disk *disk);
21 		status_t	InitCheck();
22 
23 		off_t		FreeBlocks() const;
24 		off_t		UsedBlocks() const { return fUsedBlocks; }
25 
26 		bool		UsedAt(off_t block) const;
27 		bool		BackupUsedAt(off_t block) const;
28 		bool		BackupSetAt(off_t block,bool used);
29 		void		BackupSet(Inode *inode,bool used);
30 
31 		status_t	Validate();
32 		status_t	CompareWithBackup();
33 		bool		TrustBlockContaining(off_t block) const;
34 
35 		size_t		Size() const { return fSize; }
36 
37 	private:
38 		Disk	*fDisk;
39 		uint32	*fBitmap;
40 		uint32	*fBackupBitmap;
41 		size_t	fSize;
42 		size_t	fByteSize;
43 		off_t	fUsedBlocks;
44 };
45 
46 #endif	/* BITMAP_H */
47