Coverage Report

Created: 2020-02-15 09:57

/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
3.16k
getRewrittenOverloadedOperator(OverloadedOperatorKind Kind) {
37
3.16k
  switch (Kind) {
38
1.03k
  case OO_Less:
39
1.03k
  case OO_LessEqual:
40
1.03k
  case OO_Greater:
41
1.03k
  case OO_GreaterEqual:
42
1.03k
    return OO_Spaceship;
43
1.03k
44
1.03k
  case OO_ExclaimEqual:
45
311
    return OO_EqualEqual;
46
1.03k
47
1.81k
  default:
48
1.81k
    return OO_None;
49
3.16k
  }
50
3.16k
}
51
52
} // end namespace clang
53
54
#endif