ccls/src/position.h

51 lines
1.2 KiB
C
Raw Normal View History

2017-04-05 08:06:18 +00:00
#pragma once
#include <cassert>
#include <cstdint>
#include <string>
2017-05-19 07:02:01 +00:00
#include "serializer.h"
2017-04-05 08:06:18 +00:00
struct Position {
int16_t line = -1;
int16_t column = -1;
2017-04-05 08:06:18 +00:00
Position();
Position(int16_t line, int16_t column);
2017-04-05 08:06:18 +00:00
explicit Position(const char* encoded);
std::string ToString();
std::string ToPrettyString(const std::string& filename);
// Compare two Positions and check if they are equal. Ignores the value of
// |interesting|.
bool operator==(const Position& that) const;
bool operator!=(const Position& that) const;
bool operator<(const Position& that) const;
};
static_assert(sizeof(Position) == 4, "Investigate, Position should be 32-bits for indexer size reasons");
2017-04-05 08:06:18 +00:00
struct Range {
Position start;
Position end;
Range();
2017-05-15 03:51:53 +00:00
explicit Range(Position position);
Range(Position start, Position end);
2017-04-05 08:06:18 +00:00
explicit Range(const char* encoded);
bool Contains(int line, int column) const;
2017-04-05 08:06:18 +00:00
std::string ToString();
bool operator==(const Range& that) const;
bool operator!=(const Range& that) const;
bool operator<(const Range& that) const;
2017-05-19 07:02:01 +00:00
};
// Reflection
void Reflect(Reader& visitor, Position& value);
void Reflect(Writer& visitor, Position& value);
void Reflect(Reader& visitor, Range& value);
void Reflect(Writer& visitor, Range& value);