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

## Interface IASTFunctionDefinition

All Superinterfaces:
  `IASTDeclaration`, `IASTNode`

All Known Subinterfaces:
  `ICPPASTFunctionDefinition`, `ICPPASTFunctionWithTryBlock`

    public interface IASTFunctionDefinition
    extends IASTDeclaration

This is a function definition, i.e. it has a body.

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.IASTNode

`IASTNode.CopyStyle`

### Field Summary

Fields
`static ASTNodeProperty` `DECL_SPECIFIER` `DECL_SPECIFIER` represents the relationship between a `IASTFunctionDefinition` and its `IASTDeclSpecifier`.
`static ASTNodeProperty` `DECLARATOR` `DECLARATOR` represents the relationship between a `IASTFunctionDefinition` and its `IASTFunctionDeclarator`.
`static ASTNodeProperty` `FUNCTION_BODY` `FUNCTION_BODY` represents the relationship between a `IASTFunctionDefinition` and its `IASTStatement`.

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

`EMPTY_DECLARATION_ARRAY`

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

`EMPTY_NODE_ARRAY`

### Method Summary

All Methods Instance Methods Abstract Methods
`IASTFunctionDefinition` `copy()` Returns a mutable copy of the tree rooted at this node.
`IASTFunctionDefinition` `copy​(IASTNode.CopyStyle style)` Returns a mutable copy of the tree rooted at this node.
`IASTStatement` `getBody()` Returns the body of the function.
`IASTFunctionDeclarator` `getDeclarator()` Returns the function declarator of the function.
`IASTDeclSpecifier` `getDeclSpecifier()` Returns the decl specifier for the function.
`IScope` `getScope()` Get the logical IScope that the function definition body represents.
`void` `setBody​(IASTStatement statement)` Sets the body of the function.
`void` `setDeclarator​(IASTFunctionDeclarator declarator)` Sets the declarator for the function.
`void` `setDeclSpecifier​(IASTDeclSpecifier declSpec)` Set the decl specifier for the function.

### 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

#### DECL_SPECIFIER

    static final ASTNodeProperty DECL_SPECIFIER

`DECL_SPECIFIER` represents the relationship between a `IASTFunctionDefinition` and its `IASTDeclSpecifier`.

#### DECLARATOR

    static final ASTNodeProperty DECLARATOR

`DECLARATOR` represents the relationship between a `IASTFunctionDefinition` and its `IASTFunctionDeclarator`.

#### FUNCTION_BODY

    static final ASTNodeProperty FUNCTION_BODY

`FUNCTION_BODY` represents the relationship between a `IASTFunctionDefinition` and its `IASTStatement`.

### Method Detail

#### getDeclSpecifier

    IASTDeclSpecifier getDeclSpecifier()

Returns the decl specifier for the function.

#### setDeclSpecifier

    void setDeclSpecifier​(IASTDeclSpecifier declSpec)

Set the decl specifier for the function.

Parameters:
  `declSpec` -

#### getDeclarator

    IASTFunctionDeclarator getDeclarator()

Returns the function declarator of the function. Note, that the function declarator may contain nested declarators and may also nest within another declarator. In the latter case this function definition is always the parent of the outermost declarator.

     void (f)(int a); // has nested declarator
     void (f(int a)); // is nested in another declarator

#### setDeclarator

    void setDeclarator​(IASTFunctionDeclarator declarator)

Sets the declarator for the function. Note, that the function declarator may contain nested declarators and may also nest within another declarator. In the latter case this function definition is set to be the parent of the outermost declarator.

     void (f)(int a); // has nested declarator
     void (f(int a)); // is nested in another declarator

Parameters:
  `declarator` -

#### getBody

    IASTStatement getBody()

Returns the body of the function. This is usually a compound statement but C++ also has a function try block.

#### setBody

    void setBody​(IASTStatement statement)

Sets the body of the function.

Parameters:
  `statement` -

#### getScope

    IScope getScope()

Get the logical IScope that the function definition body represents.

Returns:
  `IScope` representing function body.

#### copy

    IASTFunctionDefinition 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 `IASTDeclaration`
Specified by:
  `copy` in interface `IASTNode`
Since:
  5.1

#### copy

    IASTFunctionDefinition 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 `IASTDeclaration`
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