Package org.eclipse.cdt.core.dom.ast

## Interface IASTUnaryExpression

All Superinterfaces:
  `IASTExpression`, `IASTInitializerClause`, `IASTNode`

All Known Subinterfaces:
  `ICPPASTUnaryExpression`, `IGNUASTUnaryExpression`

    public interface IASTUnaryExpression
    extends IASTExpression

This interface is used to represent a unary expression in the AST.

Restriction:
  This interface is not intended to be implemented by clients.
Restriction:
  This interface is not intended to be extended by clients.

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.eclipse.cdt.core.dom.ast.IASTExpression

`IASTExpression.ValueCategory`

### Nested classes/interfaces inherited from interface org.eclipse.cdt.core.dom.ast.IASTNode

`IASTNode.CopyStyle`

### Field Summary

Fields
`static int` `op_alignOf` For GCC parsers, only.
`static int` `op_amper` Operator ampersand.
`static int` `op_bracketedPrimary` A bracketed expression.
`static int` `op_integerPack` For GCC parsers in C++ mode, only: '__integer_pack ( expression )'
`static int` `op_labelReference` For GCC parsers, only.
`static int` `op_minus` Operator minus.
`static int` `op_noexcept` For C++, only: noexcept ( expression )
`static int` `op_not` not.
`static int` `op_plus` Operator plus.
`static int` `op_postFixDecr` Postfix decrement.
`static int` `op_postFixIncr` Postfix increment.
`static int` `op_prefixDecr` Prefix decrement.
`static int` `op_prefixIncr` Prefix increment.
`static int` `op_sizeof` sizeof.
`static int` `op_sizeofParameterPack` For C++, only: 'sizeof...
`static int` `op_star` Operator star.
`static int` `op_throw` For C++, only.
`static int` `op_tilde` Operator tilde.
`static int` `op_typeid` For C++, only.
`static int` `op_typeof` Deprecated. Shall not be used, 'typeof something' is not an expression, it's a declaration specifier.
`static ASTNodeProperty` `OPERAND` `OPERAND` represents the relationship between an `IASTUnaryExpression` and it's nested `IASTExpression`.

### Fields inherited from interface org.eclipse.cdt.core.dom.ast.IASTExpression

`EMPTY_EXPRESSION_ARRAY`

### Fields inherited from interface org.eclipse.cdt.core.dom.ast.IASTNode

`EMPTY_NODE_ARRAY`

### Method Summary

All Methods Instance Methods Abstract Methods
`IASTUnaryExpression` `copy()` Returns a mutable copy of the tree rooted at this node.
`IASTUnaryExpression` `copy​(IASTNode.CopyStyle style)` Returns a mutable copy of the tree rooted at this node.
`IASTExpression` `getOperand()` Returns the operand.
`int` `getOperator()` Returns the operator/kind.
`void` `setOperand​(IASTExpression expression)` Sets the operand.
`void` `setOperator​(int operator)` Sets the operator/kind.

### Methods inherited from interface org.eclipse.cdt.core.dom.ast.IASTExpression

`getExpressionType, getValueCategory, isLValue`

### Methods inherited from interface org.eclipse.cdt.core.dom.ast.IASTNode

`accept, contains, getChildren, getContainingFilename, getFileLocation, getLeadingSyntax, getNodeLocations, getOriginalNode, getParent, getPropertyInParent, getRawSignature, getSyntax, getTrailingSyntax, getTranslationUnit, isActive, isFrozen, isPartOfTranslationUnitFile, setParent, setPropertyInParent`

### Field Detail

#### op_prefixIncr

    static final int op_prefixIncr

Prefix increment. `op_prefixIncr`: ++exp

See Also:
  Constant Field Values

#### op_prefixDecr

    static final int op_prefixDecr

Prefix decrement. `op_prefixDecr`: --exp

See Also:
  Constant Field Values

#### op_plus

    static final int op_plus

Operator plus. `op_plus`: +exp

See Also:
  Constant Field Values

#### op_minus

    static final int op_minus

Operator minus. `op_minux`: -exp

See Also:
  Constant Field Values

#### op_star

    static final int op_star

Operator star. `op_star`: *exp

See Also:
  Constant Field Values

#### op_amper

    static final int op_amper

Operator ampersand. `op_amper`: &exp

See Also:
  Constant Field Values

#### op_tilde

    static final int op_tilde

Operator tilde. `op_tilde`: ~exp

See Also:
  Constant Field Values

#### op_not

    static final int op_not

not. `op_not`: !exp

See Also:
  Constant Field Values

#### op_sizeof

    static final int op_sizeof

sizeof. `op_sizeof`: sizeof exp

See Also:
  Constant Field Values

#### op_postFixIncr

    static final int op_postFixIncr

Postfix increment. `op_postFixIncr`: exp++

See Also:
  Constant Field Values

#### op_postFixDecr

    static final int op_postFixDecr

Postfix decrement. `op_postFixDecr`: exp--

See Also:
  Constant Field Values

#### op_bracketedPrimary

    static final int op_bracketedPrimary

A bracketed expression. `op_bracketedPrimary`: ( exp )

See Also:
  Constant Field Values

#### op_throw

    static final int op_throw

For C++, only. `op_throw`: throw exp

See Also:
  Constant Field Values

#### op_typeid

    static final int op_typeid

For C++, only. `op_typeid`: typeid( exp )

See Also:
  Constant Field Values

#### op_typeof

    @Deprecated
    static final int op_typeof

Deprecated.
Shall not be used, 'typeof something' is not an expression, it's a declaration specifier.

See Also:
  Constant Field Values
Restriction:
  This field is not intended to be referenced by clients.

#### op_alignOf

    static final int op_alignOf

For GCC parsers, only. `op_alignOf` is used for __alignOf( unaryExpression ) type expressions.

See Also:
  Constant Field Values

#### op_sizeofParameterPack

    static final int op_sizeofParameterPack

For C++, only: 'sizeof... ( parameterPack )'

Since:
  5.2
See Also:
  Constant Field Values

#### op_noexcept

    static final int op_noexcept

For C++, only: noexcept ( expression )

Since:
  5.5
See Also:
  Constant Field Values

#### op_labelReference

    static final int op_labelReference

For GCC parsers, only. `op_labelReference` is used for &&label type expressions.

Since:
  5.8
See Also:
  Constant Field Values

#### op_integerPack

    static final int op_integerPack

For GCC parsers in C++ mode, only: '__integer_pack ( expression )'

Since:
  6.11
See Also:
  Constant Field Values

#### OPERAND

    static final ASTNodeProperty OPERAND

`OPERAND` represents the relationship between an `IASTUnaryExpression` and it's nested `IASTExpression`.

### Method Detail

#### getOperator

    int getOperator()

Returns the operator/kind.

Returns:
  the operator, one of `op_*` constants defined in this interface.

#### setOperator

    void setOperator​(int operator)

Sets the operator/kind.

Parameters:
  `operator` - the operator, one of `op_*` constants defined in this interface.

#### getOperand

    IASTExpression getOperand()

Returns the operand.

Returns:
  `IASTExpression`

#### setOperand

    void setOperand​(IASTExpression expression)

Sets the operand.

Parameters:
  `expression` - `IASTExpression`

#### copy

    IASTUnaryExpression copy()

Description copied from interface: `IASTNode`
Returns a mutable copy of the tree rooted at this node. The following postconditions hold:

     copy.getParent() == null
     copy.getPropertyInParent() == null
     copy.isFrozen() == false

Preprocessor nodes do not currently support being copied. Implicit name nodes are not copied, instead they can be regenerated if required.

Calling this method is equivalent to `copy(CopyStyle.withoutLocations)`.

Specified by:
  `copy` in interface `IASTExpression`
Specified by:
  `copy` in interface `IASTInitializerClause`
Specified by:
  `copy` in interface `IASTNode`
Since:
  5.1

#### copy

    IASTUnaryExpression copy​(IASTNode.CopyStyle style)

Description copied from interface: `IASTNode`
Returns a mutable copy of the tree rooted at this node. The following postconditions hold:

     copy.getParent() == null
     copy.getPropertyInParent() == null
     copy.isFrozen() == false

Preprocessor nodes do not currently support being copied. Implicit name nodes are not copied, instead they can be regenerated if required.

Specified by:
  `copy` in interface `IASTExpression`
Specified by:
  `copy` in interface `IASTInitializerClause`
Specified by:
  `copy` in interface `IASTNode`
Parameters:
  `style` - `IASTNode.CopyStyle` create a copy with or without locations. Please see `IASTNode.CopyStyle` for restrictions on copies with Locations.
Since:
  5.3