/*******************************************************************************
* Copyright (c) 2004, 2011 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* John Camelon (IBM Rational Software) - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.dom.ast;
/**
* This interface is used to represent a unary expression in the AST.
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface IASTUnaryExpression extends IASTExpression {
/**
* Prefix increment.
* <code>op_prefixIncr</code> ++exp
*/
public static final int op_prefixIncr = 0;
/**
* Prefix decrement.
* <code>op_prefixDecr</code> --exp
*/
public static final int op_prefixDecr = 1;
/**
* Operator plus.
* <code>op_plus</code> ==> + exp
*/
public static final int op_plus = 2;
/**
* Operator minus.
* <code>op_minux</code> ==> -exp
*/
public static final int op_minus = 3;
/**
* Operator star.
* <code>op_star</code> ==> *exp
*/
public static final int op_star = 4;
/**
* Operator ampersand.
* <code>op_amper</code> ==> &exp
*/
public static final int op_amper = 5;
/**
* Operator tilde.
* <code>op_tilde</code> ==> ~exp
*/
public static final int op_tilde = 6;
/**
* not.
* <code>op_not</code> ==> ! exp
*/
public static final int op_not = 7;
/**
* sizeof.
* <code>op_sizeof</code> ==> sizeof exp
*/
public static final int op_sizeof = 8;
/**
* Postfix increment.
* <code>op_postFixIncr</code> ==> exp++
*/
public static final int op_postFixIncr = 9;
/**
* Postfix decrement.
* <code>op_bracketedPrimary</code> ==> exp--
*/
public static final int op_postFixDecr = 10;
/**
* A bracketed expression.
* <code>op_bracketedPrimary</code> ==> ( exp )
*/
public static final int op_bracketedPrimary = 11;
/**
* for c++, only. <code>op_throw</code> throw exp
*/
public static final int op_throw = 12;
/**
* for c++, only. <code>op_typeid</code> = typeid( exp )
*/
public static final int op_typeid = 13;
/**
* @deprecated Shall not be used, 'typeof something' is not an expression, it's a declaration specifier.
*/
@Deprecated
public static final int op_typeof = 14;
/**
* for gnu parsers, only. <code>op_alignOf</code> is used for __alignOf( unaryExpression ) type
* expressions.
*/
public static final int op_alignOf = 15;
/**
* For c++, only: 'sizeof...(parameterPack)'
* @since 5.2
*/
public static final int op_sizeofParameterPack = 16;
/**
* <code>op_last</code> is made available for subclasses.
* @deprecated all constants must be defined in this interface
*/
@Deprecated
public static final int op_last = op_alignOf;
/**
* Get the operator/kind.
*
* @return (int)
*/
public int getOperator();
/**
* Set the operator/kind.
*
* @param value (int) value
*/
public void setOperator(int value);
/**
* <code>OPERAND</code> represents the relationship between an <code>IASTUnaryExpression</code> and
* it's nested <code>IASTExpression</code>.
*/
public static final ASTNodeProperty OPERAND = new ASTNodeProperty("IASTUnaryExpression.OPERAND - IASTExpression (operand) for IASTUnaryExpression"); //$NON-NLS-1$
/**
* Get the operand.
*
* @return <code>IASTExpression</code>
*/
public IASTExpression getOperand();
/**
* Set the operand.
*
* @param expression <code>IASTExpression</code>
*/
public void setOperand(IASTExpression expression);
/**
* @since 5.1
*/
public IASTUnaryExpression copy();
/**
* @since 5.3
*/
public IASTUnaryExpression copy(CopyStyle style);
}