/*
* This file is part of the X10 project (http://x10-lang.org).
*
* This file is licensed to You under the Eclipse Public License (EPL);
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.opensource.org/licenses/eclipse-1.0.php
*
* (C) Copyright IBM Corporation 2006-2010.
*/
package x10.ast;
import polyglot.types.Name;
/**
* A factored out list of standard operator names (unary and binary).
*/
public class OperatorNames {
public static final Name PLUS = Name.make("operator+");
public static final Name MINUS = Name.make("operator-");
public static final Name STAR = Name.make("operator*");
public static final Name SLASH = Name.make("operator/");
public static final Name PERCENT = Name.make("operator%");
public static final Name LT = Name.make("operator<");
public static final Name GT = Name.make("operator>");
public static final Name LE = Name.make("operator<=");
public static final Name GE = Name.make("operator>=");
public static final Name LEFT = Name.make("operator<<");
public static final Name RIGHT = Name.make("operator>>");
public static final Name RRIGHT = Name.make("operator>>>");
public static final Name AMPERSAND = Name.make("operator&");
public static final Name BAR = Name.make("operator|");
public static final Name CARET = Name.make("operator^");
public static final Name TILDE = Name.make("operator~");
public static final Name NTILDE = Name.make("operator!~");
public static final Name AND = Name.make("operator&&");
public static final Name OR = Name.make("operator||");
public static final Name BANG = Name.make("operator!");
public static final Name EQ = Name.make("operator==");
public static final Name NE = Name.make("operator!=");
public static final Name RANGE = Name.makeUnchecked("operator..");
public static final Name ARROW = Name.make("operator->");
public static final Name LARROW = Name.make("operator<-");
public static final Name FUNNEL = Name.make("operator-<");
public static final Name LFUNNEL = Name.make("operator>-");
public static final Name DIAMOND = Name.make("operator<>");
public static final Name BOWTIE = Name.make("operator><");
public static final Name STARSTAR = Name.make("operator**");
public static final Name APPLY = Name.make("operator()");
public static final Name SET = Name.make("operator()=");
public static final Name AS = Name.makeUnchecked("operator_as");
public static final Name IMPLICIT_AS = Name.makeUnchecked("implicit_operator_as");
public static final String INVERSE_OPERATOR_PREFIX = "inverse_";
public static Name inverse(Name name) {
if (name == null) return null;
return Name.makeUnchecked(INVERSE_OPERATOR_PREFIX + name.toString());
}
public static boolean is_inverse(Name name) {
return name != null && name.toString().startsWith(INVERSE_OPERATOR_PREFIX);
}
}