mirror of
https://github.com/MaskRay/ccls.git
synced 2025-02-17 22:20:54 +00:00
Fix #518
This commit is contained in:
parent
cebd6bb7c7
commit
6cd339059f
@ -1,26 +1,17 @@
|
|||||||
#include "position.h"
|
#include "position.h"
|
||||||
|
|
||||||
namespace {
|
#include <stdlib.h>
|
||||||
// Skips until the character immediately following |skip_after|.
|
|
||||||
const char* SkipAfter(const char* input, char skip_after) {
|
|
||||||
while (*input && *input != skip_after)
|
|
||||||
++input;
|
|
||||||
++input;
|
|
||||||
return input;
|
|
||||||
}
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
Position::Position() : line(-1), column(-1) {}
|
Position::Position() : line(-1), column(-1) {}
|
||||||
|
|
||||||
Position::Position(int16_t line, int16_t column) : line(line), column(column) {}
|
Position::Position(int16_t line, int16_t column) : line(line), column(column) {}
|
||||||
|
|
||||||
Position::Position(const char* encoded) {
|
Position::Position(const char* encoded) {
|
||||||
assert(encoded);
|
char* p = const_cast<char*>(encoded);
|
||||||
line = (int16_t)atoi(encoded) - 1;
|
line = int16_t(strtol(p, &p, 10)) - 1;
|
||||||
|
assert(*p == ':');
|
||||||
encoded = SkipAfter(encoded, ':');
|
p++;
|
||||||
assert(encoded);
|
column = int16_t(strtol(p, &p, 10)) - 1;
|
||||||
column = (int16_t)atoi(encoded) - 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Position::ToString() {
|
std::string Position::ToString() {
|
||||||
@ -110,9 +101,8 @@ Range Range::RemovePrefix(Position position) const {
|
|||||||
std::string Range::ToString() {
|
std::string Range::ToString() {
|
||||||
// Output looks like this:
|
// Output looks like this:
|
||||||
//
|
//
|
||||||
// *1:2-3:4
|
// 1:2-3:4
|
||||||
//
|
//
|
||||||
// * => if present, range is interesting
|
|
||||||
// 1 => start line
|
// 1 => start line
|
||||||
// 2 => start column
|
// 2 => start column
|
||||||
// 3 => end line
|
// 3 => end line
|
||||||
|
Loading…
Reference in New Issue
Block a user