1b8abbdc90f902a2c09c566193b900c2c45a46672Chris Lattner//===--- OperatorKinds.h - C++ Overloaded Operators -------------*- C++ -*-===//
21cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor//
31cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor//                     The LLVM Compiler Infrastructure
41cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor//
51cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor// This file is distributed under the University of Illinois Open Source
61cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor// License. See LICENSE.TXT for details.
71cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor//
81cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor//===----------------------------------------------------------------------===//
92f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett///
102f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// \file
112f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// \brief Defines an enumeration for C++ overloaded operators.
122f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett///
131cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor//===----------------------------------------------------------------------===//
141cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor
151cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor#ifndef LLVM_CLANG_BASIC_OPERATOR_KINDS_H
161cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor#define LLVM_CLANG_BASIC_OPERATOR_KINDS_H
171cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor
181cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregornamespace clang {
191cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor
20af50aab0c317462129d73ae8000c6394c718598dJames Dennett/// \brief Enumeration specifying the different kinds of C++ overloaded
21af50aab0c317462129d73ae8000c6394c718598dJames Dennett/// operators.
226bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesenum OverloadedOperatorKind : int {
2349fdccb4595862828aa5cadc1497d466a8031ddaDmitri Gribenko  OO_None,                ///< Not an overloaded operator
2402bcd4cd1a19121da12884aa4943226f72a81e6cDouglas Gregor#define OVERLOADED_OPERATOR(Name,Spelling,Token,Unary,Binary,MemberOnly) \
2502bcd4cd1a19121da12884aa4943226f72a81e6cDouglas Gregor  OO_##Name,
261cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor#include "clang/Basic/OperatorKinds.def"
271cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor  NUM_OVERLOADED_OPERATORS
281cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor};
291cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor
30ca1bdd7c269a2390d43c040a60511edd017ee130Douglas Gregor/// \brief Retrieve the spelling of the given overloaded operator, without
31ca1bdd7c269a2390d43c040a60511edd017ee130Douglas Gregor/// the preceding "operator" keyword.
32ca1bdd7c269a2390d43c040a60511edd017ee130Douglas Gregorconst char *getOperatorSpelling(OverloadedOperatorKind Operator);
33d1a32c328bce903fb1b17fc8147b646be818298eReid Kleckner
341cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor} // end namespace clang
351cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor
361cd1b1e987f5e2f060d7972b13d83239b36d77d6Douglas Gregor#endif
37