summaryrefslogtreecommitdiff
path: root/src/buffer.hh
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-08-23 23:56:35 +0200
committerMaxime Coste <frrrwww@gmail.com>2012-08-23 23:56:35 +0200
commite4fd839ddaaf3fc68df2cb502a633a2ae6a9f86f (patch)
tree681b2a63eb9b9497b97697e3f1479a7b20270427 /src/buffer.hh
parent0d8cce272831cd896d0e69d7c86cc9afc521eb11 (diff)
use a strongly typed int CharCount for character counts
Diffstat (limited to 'src/buffer.hh')
-rw-r--r--src/buffer.hh31
1 files changed, 14 insertions, 17 deletions
diff --git a/src/buffer.hh b/src/buffer.hh
index 971c731f..7f3f95ac 100644
--- a/src/buffer.hh
+++ b/src/buffer.hh
@@ -17,12 +17,9 @@ namespace Kakoune
class Buffer;
class Window;
-typedef int BufferPos;
-typedef int BufferSize;
-
struct BufferCoord : LineAndColumn<BufferCoord>
{
- BufferCoord(LineCount line = 0, int column = 0)
+ BufferCoord(LineCount line = 0, CharCount column = 0)
: LineAndColumn(line, column) {}
template<typename T>
@@ -35,7 +32,7 @@ class BufferIterator
{
public:
typedef Character value_type;
- typedef BufferSize difference_type;
+ typedef size_t difference_type;
typedef const value_type* pointer;
typedef const value_type& reference;
typedef std::bidirectional_iterator_tag iterator_category;
@@ -51,13 +48,13 @@ public:
bool operator>= (const BufferIterator& iterator) const;
Character operator* () const;
- BufferSize operator- (const BufferIterator& iterator) const;
+ size_t operator- (const BufferIterator& iterator) const;
- BufferIterator operator+ (BufferSize size) const;
- BufferIterator operator- (BufferSize size) const;
+ BufferIterator operator+ (CharCount size) const;
+ BufferIterator operator- (CharCount size) const;
- BufferIterator& operator+= (BufferSize size);
- BufferIterator& operator-= (BufferSize size);
+ BufferIterator& operator+= (CharCount size);
+ BufferIterator& operator-= (CharCount size);
BufferIterator& operator++ ();
BufferIterator& operator-- ();
@@ -74,10 +71,10 @@ public:
const Buffer& buffer() const;
const BufferCoord& coord() const { return m_coord; }
LineCount line() const { return m_coord.line; }
- BufferSize column() const { return m_coord.column; }
+ CharCount column() const { return m_coord.column; }
private:
- BufferSize offset() const;
+ CharCount offset() const;
const Buffer* m_buffer;
BufferCoord m_coord;
@@ -130,7 +127,7 @@ public:
BufferIterator begin() const;
BufferIterator end() const;
- BufferSize character_count() const;
+ CharCount character_count() const;
LineCount line_count() const;
// returns an iterator at given coordinates. line_and_column is
@@ -187,10 +184,10 @@ private:
struct Line
{
- BufferPos start;
+ CharCount start;
String content;
- size_t length() const { return content.length(); }
+ CharCount length() const { return content.length(); }
};
struct LineList : std::vector<Line>
{
@@ -204,9 +201,9 @@ private:
LineList m_lines;
void do_insert(const BufferIterator& pos, const String& content);
- void do_erase(const BufferIterator& pos, BufferSize length);
+ void do_erase(const BufferIterator& pos, CharCount length);
- BufferSize line_length(LineCount line) const;
+ CharCount line_length(LineCount line) const;
String m_name;
const Type m_type;