42 lines
867 B
C++
42 lines
867 B
C++
/*
|
|||
|
|
* Copyright 2009, Ingo Weinhold, [email protected].
|
||
|
|
* Distributed under the terms of the MIT License.
|
||
|
|
*/
|
||
|
|
#ifndef SOURCE_CODE_H
|
||
|
|
#define SOURCE_CODE_H
|
||
|
|
|
||
|
|||
#include <Referenceable.h>
|
|||
|
|
|
||
#include "LineDataSource.h"
|
|||
#include "TargetAddressRange.h"
|
|||
|
|||
|
|
|
||
class LocatableFile;
|
|||
class SourceLanguage;
|
|||
class SourceLocation;
|
|||
class Statement;
|
|||
|
|
|
||
|
|
|
||
class SourceCode : public LineDataSource {
|
|||
public:
|
|||
virtual ~SourceCode();
|
|||
|
|||
// Locking needed for GetStatementLocationRange(), since that might use
|
|||
|
|
// mutable data.
|
||
|
|
virtual bool Lock() = 0;
|
||
|
|
virtual void Unlock() = 0;
|
||
|
|
|
||
virtual SourceLanguage* GetSourceLanguage() const = 0;
|
|||
|
|
|
||
virtual bool GetStatementLocationRange(
|
|||
|
|
const SourceLocation& location,
|
||
|
|
SourceLocation& _start,
|
||
|
|
SourceLocation& _end) const = 0;
|
||
|
|
|
||
|
|
virtual LocatableFile* GetSourceFile() const = 0;
|
||
};
|
|||
|
|
|
||
|
|
|
||
|
|
#endif // SOURCE_CODE_H
|