Package org.eclipse.cdt.core.settings.model

# Interface ICSettingsStorage

All Known Subinterfaces:
  `ICConfigurationDescription`, `ICMultiConfigDescription`, `ICProjectDescription`

public interface ICSettingsStorage
This interface represents the settings storage that can be used as the root of a settings tree of name-attribute-value holder elements (`ICStorageElement`s).
In real terms this is a specialised node in the project description tree. It is specialised in that it can only contain ICStorageElements as children and has no associated attributes or value. The Xml model implements this as an element called 'storageModule' which contains other arbitrary Xml ICStorageElements.
Both `ICProjectDescription` and `ICConfigurationDescription` implement this interface thus providing the capabilities to store custom project-wide and configuration-specific data in the storage file
The format of the storage file is left up to the implementor. It may be an XML file (.cproject) a relational database (.cprojectdb) or any other format of the extenders choosing.
These capabilities are used by the build system for persisting build configuration data as well as by the CoreModel `ICConfigurationDescription` storage trees. See `CConfigurationDataProvider.loadConfiguration(ICConfigurationDescription, IProgressMonitor)` and `CConfigurationDataProvider.applyConfiguration(ICConfigurationDescription, ICConfigurationDescription, CConfigurationData, IProgressMonitor)`

See Also:
  - `ICStorageElement`
  - `ICProjectDescription`
  - `ICConfigurationDescription`
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
`ICStorageElement`
`getStorage(String id, boolean create)`
returns the storage of the specified id
`ICStorageElement`
`importStorage(String id, ICStorageElement el)`
Import an existing ICStorageElement storage module into the ICSettingsStorage Returns a handle on the newly imported ICSettingsStorage NB Storage IDs are unique in an ICSettingsStorage.
`boolean`
`isModified()`
Returns whether any non-persisted changes exist in this tree
`boolean`
`isReadOnly()`
Return whether this Settings Storage is currently read only
`void`
`removeStorage(String id)`
Remove the storage module with the given ID from this ICSettingsStorage
`void`
`setReadOnly(boolean readOnly, boolean keepModify)`
Mark this Settings Storage as read only.

## Method Details

### getStorage

ICStorageElement getStorage(String id, boolean create) throws org.eclipse.core.runtime.CoreException
returns the storage of the specified id

Parameters:
  `id` - any custom string value uniquely representing the storage
Returns:
  `ICStorageElement` if the settings storage does not contain the information of the specified id an empty storage is created and returned
Throws:
  `org.eclipse.core.runtime.CoreException`
See Also:
  - `ICStorageElement`

### removeStorage

void removeStorage(String id) throws org.eclipse.core.runtime.CoreException
Remove the storage module with the given ID from this ICSettingsStorage

Parameters:
  `id` -
Throws:
  `org.eclipse.core.runtime.CoreException`

### importStorage

ICStorageElement importStorage(String id, ICStorageElement el) throws UnsupportedOperationException, org.eclipse.core.runtime.CoreException
Import an existing ICStorageElement storage module into the ICSettingsStorage Returns a handle on the newly imported ICSettingsStorage NB Storage IDs are unique in an ICSettingsStorage. Importing a storage will replace any other storage with equivalent id

Parameters:
  `id` - name of the storage to be imported
  `el` - ICStorageElement to be imported
Returns:
  ICStorageElement representing the imported storage
Throws:
  `UnsupportedOperationException`
  `org.eclipse.core.runtime.CoreException`
Since:
  5.1

### isModified

boolean isModified()
Returns whether any non-persisted changes exist in this tree

Returns:
  boolean indicating whether any elements in this tree have been modified
Since:
  5.1

### isReadOnly

boolean isReadOnly()
Return whether this Settings Storage is currently read only

Returns:
  whether this storage is readonly
Since:
  5.1

### setReadOnly

void setReadOnly(boolean readOnly, boolean keepModify)
Mark this Settings Storage as read only. If keepModify is set then modified flag will not be reset

Parameters:
  `readOnly` -
  `keepModify` -
Since:
  5.1