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