/* * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. * Distributed under the terms of the MIT License. */ #ifndef FILE_SOURCE_CODE_H #define FILE_SOURCE_CODE_H #include #include #include "SourceCode.h" class LocatableFile; class SourceFile; class FileSourceCode : public SourceCode { public: FileSourceCode(LocatableFile* file, SourceFile* sourceFile, SourceLanguage* language); virtual ~FileSourceCode(); status_t Init(); status_t AddSourceLocation( const SourceLocation& location); virtual bool Lock(); virtual void Unlock(); virtual SourceLanguage* GetSourceLanguage() const; virtual bool GetStatementLocationRange( const SourceLocation& location, SourceLocation& _start, SourceLocation& _end) const; virtual LocatableFile* GetSourceFile() const; // LineDataSource virtual int32 CountLines() const; virtual const char* LineAt(int32 index) const; virtual int32 LineLengthAt(int32 index) const; private: int32 _FindSourceLocationIndex( const SourceLocation& location, bool& _foundMatch) const; private: BLocker fLock; LocatableFile* fFile; SourceFile* fSourceFile; SourceLanguage* fLanguage; Array fSourceLocations; }; #endif // FILE_BASED_SOURCE_CODE_H