Coverage Report

Created: 2019-03-22 08:08

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/tools/clang/include/clang/Edit/FileOffset.h
Line
Count
Source (jump to first uncovered line)
1
//===- FileOffset.h - Offset in a file --------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef LLVM_CLANG_EDIT_FILEOFFSET_H
10
#define LLVM_CLANG_EDIT_FILEOFFSET_H
11
12
#include "clang/Basic/SourceLocation.h"
13
#include <tuple>
14
15
namespace clang {
16
namespace edit {
17
18
class FileOffset {
19
  FileID FID;
20
  unsigned Offs = 0;
21
22
public:
23
34.3k
  FileOffset() = default;
24
8.11k
  FileOffset(FileID fid, unsigned offs) : FID(fid), Offs(offs) {}
25
26
0
  bool isInvalid() const { return FID.isInvalid(); }
27
28
9.01k
  FileID getFID() const { return FID; }
29
7.53k
  unsigned getOffset() const { return Offs; }
30
31
17.9k
  FileOffset getWithOffset(unsigned offset) const {
32
17.9k
    FileOffset NewOffs = *this;
33
17.9k
    NewOffs.Offs += offset;
34
17.9k
    return NewOffs;
35
17.9k
  }
36
37
5.21k
  friend bool operator==(FileOffset LHS, FileOffset RHS) {
38
5.21k
    return LHS.FID == RHS.FID && 
LHS.Offs == RHS.Offs5.21k
;
39
5.21k
  }
40
41
2.30k
  friend bool operator!=(FileOffset LHS, FileOffset RHS) {
42
2.30k
    return !(LHS == RHS);
43
2.30k
  }
44
45
87.0k
  friend bool operator<(FileOffset LHS, FileOffset RHS) {
46
87.0k
    return std::tie(LHS.FID, LHS.Offs) < std::tie(RHS.FID, RHS.Offs);
47
87.0k
  }
48
49
1.78k
  friend bool operator>(FileOffset LHS, FileOffset RHS) {
50
1.78k
    return RHS < LHS;
51
1.78k
  }
52
53
5.29k
  friend bool operator>=(FileOffset LHS, FileOffset RHS) {
54
5.29k
    return !(LHS < RHS);
55
5.29k
  }
56
57
42
  friend bool operator<=(FileOffset LHS, FileOffset RHS) {
58
42
    return !(RHS < LHS);
59
42
  }
60
};
61
62
} // namespace edit
63
} // namespace clang
64
65
#endif // LLVM_CLANG_EDIT_FILEOFFSET_H