xref: /haiku/headers/private/debugger/files/SourceFile.h (revision 02354704729d38c3b078c696adc1bbbd33cbcf72)
1 /*
2  * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef SOURCE_FILE_H
6 #define SOURCE_FILE_H
7 
8 #include <Referenceable.h>
9 
10 
11 class SourceFile;
12 
13 
14 class SourceFileOwner {
15 public:
16 	virtual						~SourceFileOwner();
17 
18 	virtual	void				SourceFileUnused(SourceFile* sourceFile) = 0;
19 	virtual	void				SourceFileDeleted(SourceFile* sourceFile) = 0;
20 };
21 
22 
23 
24 class SourceFile : public BReferenceable {
25 public:
26 								SourceFile(SourceFileOwner* owner);
27 								~SourceFile();
28 
29 			status_t			Init(const char* path);
30 
31 			int32				CountLines() const;
32 			const char*			LineAt(int32 index) const;
33 			int32				LineLengthAt(int32 index) const;
34 
35 protected:
36 	virtual	void				LastReferenceReleased();
37 
38 private:
39 			SourceFileOwner*	fOwner;
40 			char*				fFileContent;
41 			int32*				fLineOffsets;
42 			int32				fLineCount;
43 };
44 
45 
46 
47 #endif	// SOURCE_FILE_H
48