Package org.eclipse.cdt.core.model

# Interface ISourceManipulation

All Known Subinterfaces:
  `IAsmLabel`, `IBinaryFunction`, `IBinaryVariable`, `IConcept`, `IDeclaration`, `IEnumeration`, `IEnumerator`, `IField`, `IFunction`, `IFunctionDeclaration`, `IFunctionTemplate`, `IFunctionTemplateDeclaration`, `IInclude`, `IMacro`, `IMember`, `IMethod`, `IMethodDeclaration`, `IMethodTemplate`, `IMethodTemplateDeclaration`, `INamespace`, `IPragma`, `IStructure`, `IStructureDeclaration`, `IStructureTemplate`, `IStructureTemplateDeclaration`, `ITranslationUnit`, `ITypeDef`, `IUsing`, `IVariable`, `IVariableDeclaration`, `IWorkingCopy`

public interface ISourceManipulation
Common protocol for C elements that support source code manipulations such as copy, move, rename, and delete.

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

## Method Summary

Modifier and Type
Method
Description
`void`
`copy(ICElement container, ICElement sibling, String rename, boolean replace, org.eclipse.core.runtime.IProgressMonitor monitor)`
Copies this element to the given container.
`void`
`delete(boolean force, org.eclipse.core.runtime.IProgressMonitor monitor)`
Deletes this element, forcing if specified and necessary.
`void`
`move(ICElement container, ICElement sibling, String rename, boolean replace, org.eclipse.core.runtime.IProgressMonitor monitor)`
Moves this element to the given container.
`void`
`rename(String name, boolean replace, org.eclipse.core.runtime.IProgressMonitor monitor)`
Renames this element to the given name.

## Method Details

### copy

void copy(ICElement container, ICElement sibling, String rename, boolean replace, org.eclipse.core.runtime.IProgressMonitor monitor) throws CModelException
Copies this element to the given container.

Parameters:
  `container` - the container
  `sibling` - the sibling element before which the copy should be inserted, or `null` if the copy should be inserted as the last child of the container
  `rename` - the new name for the element, or `null` if the copy retains the name of this element
  `replace` - `true` if any existing child in the container with the target name should be replaced, and `false` to throw an exception in the event of a name collision
  `monitor` - a progress monitor
Throws:
  `CModelException` - if this element could not be copied. Reasons include:
  - This C element, container element, or sibling does not exist (ELEMENT_DOES_NOT_EXIST)
  - A `CoreException` occurred while updating an underlying resource
  - The container is of an incompatible type (INVALID_DESTINATION)
  - The sibling is not a child of the given container (INVALID_SIBLING)
  - The new name is invalid (INVALID_NAME)
  - A child in the container already exists with the same name (NAME_COLLISION) and `replace` has been specified as `false`
  - The container or this element is read-only (READ_ONLY)
  `IllegalArgumentException` - if container is `null`

### delete

void delete(boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws CModelException
Deletes this element, forcing if specified and necessary.

Parameters:
  `force` - a flag controlling whether underlying resources that are not in sync with the local file system will be tolerated (same as the force flag in IResource operations).
  `monitor` - a progress monitor
Throws:
  `CModelException` - if this element could not be deleted. Reasons include:
  - This C element does not exist (ELEMENT_DOES_NOT_EXIST)
  - A `CoreException` occurred while updating an underlying resource (CORE_EXCEPTION)
  - This element is read-only (READ_ONLY)

### move

void move(ICElement container, ICElement sibling, String rename, boolean replace, org.eclipse.core.runtime.IProgressMonitor monitor) throws CModelException
Moves this element to the given container.

Parameters:
  `container` - the container
  `sibling` - the sibling element before which the element should be inserted, or `null` if the element should be inserted as the last child of the container
  `rename` - the new name for the element, or `null` if the element retains its name
  `replace` - `true` if any existing child in the container with the target name should be replaced, and `false` to throw an exception in the event of a name collision
  `monitor` - a progress monitor
Throws:
  `CModelException` - if this element could not be moved. Reasons include:
  - This C element, container element, or sibling does not exist (ELEMENT_DOES_NOT_EXIST)
  - A `CoreException` occurred while updating an underlying resource
  - The container is of an incompatible type (INVALID_DESTINATION)
  - The sibling is not a child of the given container (INVALID_SIBLING)
  - The new name is invalid (INVALID_NAME)
  - A child in the container already exists with the same name (NAME_COLLISION) and `replace` has been specified as `false`
  - The container or this element is read-only (READ_ONLY)
  `IllegalArgumentException` - if container is `null`

### rename

void rename(String name, boolean replace, org.eclipse.core.runtime.IProgressMonitor monitor) throws CModelException
Renames this element to the given name.

Parameters:
  `name` - the new name for the element
  `replace` - `true` if any existing element with the target name should be replaced, and `false` to throw an exception in the event of a name collision
  `monitor` - a progress monitor
Throws:
  `CModelException` - if this element could not be renamed. Reasons include:
  - This C element does not exist (ELEMENT_DOES_NOT_EXIST)
  - A `CoreException` occurred while updating an underlying resource
  - The new name is invalid (INVALID_NAME)
  - A child in the container already exists with the same name (NAME_COLLISION) and `replace` has been specified as `false`
  - This element is read-only (READ_ONLY)