Coverage Report

Created: 2022-01-22 13:19

/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/include/clang/Basic/OperatorKinds.h
Line
Count
Source (jump to first uncovered line)
1
//===--- OperatorKinds.h - C++ Overloaded Operators -------------*- 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
/// \file
10
/// Defines an enumeration for C++ overloaded operators.
11
///
12
//===----------------------------------------------------------------------===//
13
14
#ifndef LLVM_CLANG_BASIC_OPERATORKINDS_H
15
#define LLVM_CLANG_BASIC_OPERATORKINDS_H
16
17
namespace clang {
18
19
/// Enumeration specifying the different kinds of C++ overloaded
20
/// operators.
21
enum OverloadedOperatorKind : int {
22
  OO_None,                ///< Not an overloaded operator
23
#define OVERLOADED_OPERATOR(Name,Spelling,Token,Unary,Binary,MemberOnly) \
24
  OO_##Name,
25
#include "clang/Basic/OperatorKinds.def"
26
  NUM_OVERLOADED_OPERATORS
27
};
28
29
/// Retrieve the spelling of the given overloaded operator, without
30
/// the preceding "operator" keyword.
31
const char *getOperatorSpelling(OverloadedOperatorKind Operator);
32
33
/// Get the other overloaded operator that the given operator can be rewritten
34
/// into, if any such operator exists.
35
inline OverloadedOperatorKind
36
6.32k
getRewrittenOverloadedOperator(OverloadedOperatorKind Kind) {
37
6.32k
  switch (Kind) {
38
655
  case OO_Less:
39
933
  case OO_LessEqual:
40
1.36k
  case OO_Greater:
41
1.64k
  case OO_GreaterEqual:
42
1.64k
    return OO_Spaceship;
43
44
978
  case OO_ExclaimEqual:
45
978
    return OO_EqualEqual;
46
47
3.70k
  default:
48
3.70k
    return OO_None;
49
6.32k
  }
50
6.32k
}
51
52
/// Determine if this is a compound assignment operator.
53
58.6k
inline bool isCompoundAssignmentOperator(OverloadedOperatorKind Kind) {
54
58.6k
  return Kind >= OO_PlusEqual && 
Kind <= OO_PipeEqual9.05k
;
55
58.6k
}
56
57
} // end namespace clang
58
59
#endif