xref: /haiku/src/tools/restest/ResourceItem.h (revision 52a380120846174213ccce9c4aab0dda17c72083)
1*52a38012Sejakowatz // ResourceItem.h
2*52a38012Sejakowatz 
3*52a38012Sejakowatz #ifndef RESOURCE_ITEM_H
4*52a38012Sejakowatz #define RESOURCE_ITEM_H
5*52a38012Sejakowatz 
6*52a38012Sejakowatz #include <String.h>
7*52a38012Sejakowatz #include <SupportDefs.h>
8*52a38012Sejakowatz 
9*52a38012Sejakowatz class BPositionIO;
10*52a38012Sejakowatz 
11*52a38012Sejakowatz class ResourceItem {
12*52a38012Sejakowatz public:
13*52a38012Sejakowatz 	typedef int32 roff_t;
14*52a38012Sejakowatz 
15*52a38012Sejakowatz public:
16*52a38012Sejakowatz 								ResourceItem();
17*52a38012Sejakowatz 	virtual						~ResourceItem();
18*52a38012Sejakowatz 
19*52a38012Sejakowatz 			void				SetLocation(roff_t offset, roff_t size);
20*52a38012Sejakowatz 			void				SetIdentity(type_code type, int32 id,
21*52a38012Sejakowatz 											const char* name);
22*52a38012Sejakowatz 
23*52a38012Sejakowatz 			void				SetOffset(roff_t offset);
24*52a38012Sejakowatz 			roff_t				GetOffset() const;
25*52a38012Sejakowatz 
26*52a38012Sejakowatz 			void				SetSize(roff_t size);
27*52a38012Sejakowatz 			roff_t				GetSize() const;
28*52a38012Sejakowatz 
29*52a38012Sejakowatz 			void				SetType(type_code type);
30*52a38012Sejakowatz 			type_code			GetType() const;
31*52a38012Sejakowatz 
32*52a38012Sejakowatz 			void				SetID(int32 id);
33*52a38012Sejakowatz 			int32				GetID() const;
34*52a38012Sejakowatz 
35*52a38012Sejakowatz 			void				SetName(const char* name);
36*52a38012Sejakowatz 			const char*			GetName() const;
37*52a38012Sejakowatz 
38*52a38012Sejakowatz 			void				SetData(const void* data, roff_t size = -1);
39*52a38012Sejakowatz 			void				UnsetData();
40*52a38012Sejakowatz 			void*				AllocData(roff_t size = -1);
41*52a38012Sejakowatz 			void*				GetData() const;
42*52a38012Sejakowatz 
43*52a38012Sejakowatz 			status_t			LoadData(BPositionIO& file,
44*52a38012Sejakowatz 										 roff_t position = -1,
45*52a38012Sejakowatz 										 roff_t size = -1);
46*52a38012Sejakowatz 			status_t			WriteData(BPositionIO& file) const;
47*52a38012Sejakowatz 
48*52a38012Sejakowatz 			void				PrintToStream();
49*52a38012Sejakowatz 
50*52a38012Sejakowatz private:
51*52a38012Sejakowatz 			roff_t				fOffset;
52*52a38012Sejakowatz 			roff_t				fSize;
53*52a38012Sejakowatz 			type_code			fType;
54*52a38012Sejakowatz 			int32				fID;
55*52a38012Sejakowatz 			BString				fName;
56*52a38012Sejakowatz 			void*				fData;
57*52a38012Sejakowatz };
58*52a38012Sejakowatz 
59*52a38012Sejakowatz #endif	// RESOURCE_ITEM_H
60