2017-02-18 19:37:24 +00:00
|
|
|
#include <cassert>
|
|
|
|
|
2017-02-16 09:35:30 +00:00
|
|
|
#include "SourceLocation.h"
|
|
|
|
#include "Utility.h"
|
|
|
|
|
|
|
|
namespace clang {
|
|
|
|
|
|
|
|
SourceLocation::SourceLocation(CXTranslationUnit &tu, const std::string &filepath, unsigned offset) {
|
|
|
|
CXFile file = clang_getFile(tu, filepath.c_str());
|
2017-02-18 19:37:24 +00:00
|
|
|
assert(false);
|
|
|
|
//cx_location = clang_getLocationForOffset(tu, file, offset);
|
2017-02-16 09:35:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
SourceLocation::SourceLocation(CXTranslationUnit &tu, const std::string &filepath, unsigned line, unsigned column) {
|
|
|
|
CXFile file = clang_getFile(tu, filepath.c_str());
|
2017-02-18 19:37:24 +00:00
|
|
|
assert(false);
|
|
|
|
//cx_location = clang_getLocation(tu, file, line, column);
|
2017-02-16 09:35:30 +00:00
|
|
|
}
|
|
|
|
|
2017-02-20 00:56:56 +00:00
|
|
|
SourceLocation::SourceLocation() {}
|
|
|
|
|
2017-02-18 19:37:24 +00:00
|
|
|
SourceLocation::SourceLocation(const CXSourceLocation& cx_location) {
|
|
|
|
//clang_getExpansionLocation
|
|
|
|
|
|
|
|
CXFile file;
|
|
|
|
clang_getSpellingLocation(cx_location, &file, &line, &column, &offset);
|
|
|
|
if (file != nullptr)
|
|
|
|
path = clang::ToString(clang_getFileName(file));
|
2017-02-16 09:35:30 +00:00
|
|
|
}
|
|
|
|
|
2017-02-20 00:56:56 +00:00
|
|
|
SourceLocation::SourceLocation(const CXIdxLoc& cx_location)
|
|
|
|
: SourceLocation(clang_indexLoc_getCXSourceLocation(cx_location)) {
|
|
|
|
}
|
|
|
|
|
|
|
|
bool SourceLocation::operator==(const SourceLocation& o) {
|
|
|
|
return path == o.path && line == o.line && column == o.column;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool SourceLocation::operator!=(const SourceLocation& o) {
|
|
|
|
return !(*this == o);
|
|
|
|
}
|
|
|
|
|
2017-02-18 19:37:24 +00:00
|
|
|
std::string SourceLocation::ToString() const {
|
|
|
|
return path + ":" + std::to_string(line) + ":" + std::to_string(column);
|
2017-02-16 09:35:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|