You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
1.1 KiB

11 years ago
#ifndef SOURCELOCATION_H_
#define SOURCELOCATION_H_
#include <clang-c/Index.h>
#include <string>
11 years ago
namespace clangmm {
class Offset {
public:
bool operator==(const Offset &o) const {return line==o.line && index==o.index;}
bool operator!=(const Offset &o) const {return !(*this==o);}
bool operator<(const Offset &o) const {return line<o.line || (line==o.line && index<o.index);}
unsigned line;
unsigned index; //byte index in line (not char number)
};
11 years ago
class SourceLocation {
11 years ago
friend class TranslationUnit;
SourceLocation(CXTranslationUnit &tu, const std::string &filepath, unsigned offset);
SourceLocation(CXTranslationUnit &tu, const std::string &filepath, unsigned line, unsigned column);
11 years ago
public:
SourceLocation(const CXSourceLocation& cx_location) : cx_location(cx_location) {}
11 years ago
11 years ago
public:
std::string get_path();
clangmm::Offset get_offset();
11 years ago
CXSourceLocation cx_location;
11 years ago
private:
void get_data(std::string *path, unsigned *line, unsigned *column, unsigned *offset);
11 years ago
};
} // namespace clangmm
11 years ago
#endif // SOURCELOCATION_H_