Viewing file: OperatorKinds.h (1.74 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
//===--- OperatorKinds.h - C++ Overloaded Operators -------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// /// \file /// Defines an enumeration for C++ overloaded operators. /// //===----------------------------------------------------------------------===//
#ifndef LLVM_CLANG_BASIC_OPERATORKINDS_H #define LLVM_CLANG_BASIC_OPERATORKINDS_H
namespace clang {
/// Enumeration specifying the different kinds of C++ overloaded /// operators. enum OverloadedOperatorKind : int { OO_None, ///< Not an overloaded operator #define OVERLOADED_OPERATOR(Name,Spelling,Token,Unary,Binary,MemberOnly) \ OO_##Name, #include "clang/Basic/OperatorKinds.def" NUM_OVERLOADED_OPERATORS };
/// Retrieve the spelling of the given overloaded operator, without /// the preceding "operator" keyword. const char *getOperatorSpelling(OverloadedOperatorKind Operator);
/// Get the other overloaded operator that the given operator can be rewritten /// into, if any such operator exists. inline OverloadedOperatorKind getRewrittenOverloadedOperator(OverloadedOperatorKind Kind) { switch (Kind) { case OO_Less: case OO_LessEqual: case OO_Greater: case OO_GreaterEqual: return OO_Spaceship;
case OO_ExclaimEqual: return OO_EqualEqual;
default: return OO_None; } }
/// Determine if this is a compound assignment operator. inline bool isCompoundAssignmentOperator(OverloadedOperatorKind Kind) { return Kind >= OO_PlusEqual && Kind <= OO_PipeEqual; }
} // end namespace clang
#endif
|