File: Position.h

package info (click to toggle)
r-cran-sourcetools 0.1.7-1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 308 kB
  • sloc: cpp: 1,985; ansic: 505; sh: 10; makefile: 2
file content (77 lines) | stat: -rw-r--r-- 1,611 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#ifndef SOURCETOOLS_COLLECTION_POSITION_H
#define SOURCETOOLS_COLLECTION_POSITION_H

#include <ostream>
#include <cstddef>

namespace sourcetools {
namespace collections {

struct Position
{
  Position()
    : row(0), column(0)
  {
  }

  Position(std::size_t row, std::size_t column)
    : row(row), column(column)
  {
  }

  friend std::ostream& operator<<(std::ostream& os,
                                  const Position& position)
  {
    os << position.row << ":" << position.column;
    return os;
  }

  friend bool operator <(const Position& lhs, const Position& rhs)
  {
    return
      lhs.row < rhs.row ||
      (lhs.row == rhs.row && lhs.column < rhs.column);
  }

  friend bool operator <=(const Position& lhs, const Position& rhs)
  {
    return
      lhs.row < rhs.row ||
      (lhs.row == rhs.row && lhs.column <= rhs.column);
  }

  friend bool operator ==(const Position& lhs, const Position& rhs)
  {
    return
      lhs.row == rhs.row &&
      lhs.column == rhs.column;
  }

  friend bool operator >(const Position& lhs, const Position& rhs)
  {
    return
      lhs.row > rhs.row ||
      (lhs.row == rhs.row && lhs.column > rhs.column);
  }

  friend bool operator >=(const Position& lhs, const Position& rhs)
  {
    return
      lhs.row > rhs.row ||
      (lhs.row == rhs.row && lhs.column >= rhs.column);
  }

  friend Position operator +(const Position& lhs, std::size_t rhs)
  {
    return Position(lhs.row, lhs.column + rhs);
  }

  std::size_t row;
  std::size_t column;

};

} // namespace collections
} // namespace sourcetools

#endif /* SOURCETOOLS_COLLECTION_POSITION_H */