## Changes to the Carbide API

The following section provides information on changed, deprecated, and removed Carbide APIs.

### Changed APIs

The following APIs have been changed.

Since Carbide 1.2.0

- N/A

Since Carbide 1.2.1

- In order to support multiple documents per model, we must inject a way to determine how IDocument instances are provided for use in creating ITranslationUnits. Any implementations of com.nokia.carbide.cpp.epoc.engine.model.IViewParserConfiguration must now implement the method IModelDocumentProvider getModelDocumentProvider(). This is used to isolate the mechanism for creating IDocument instances, either from disk or from memory.

- Similarly, the method #getTranslationUnit(File) in com.nokia.carbide.cpp.epoc.engine.preprocessor.ITranslationUnitProvider is changed to #getTranslationUnit(File, IModelDocumentProvider).

Since Carbide 1.2.2

- Due to changes in in CDT 4.0, we needed to change com.nokia.carbide.cdt.builder.ICarbideBuildManager and com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo. Methods which modified Carbide.c++ project properties were moved to the new interface com.nokia.carbide.cdt.builder.project.ICarbideProjectModifier.

- ICarbideProjectInfo#getCleanCommand has been changed to ICarbideProjectInfo#getCleanLevel to match the preference change.

- ICarbideBuildConfiguration#getSISBuilderInfo has been changed to ICarbideBuildConfiguration#getSISBuilderInfoList to match the changes to the SIS Builder tab.

- EpocEngineHelper#getProjectRoots now returns a list with three elements (formerly 2), the last of which is the path that contains the build files and the sources (aka the "desired root").

Since Carbide 2.0

- Added com.nokia.carbide.cpp.sdk.core.ISDKManager#checkDevicesXMLSynchronized().

- The EMMPLanguage#UNKNOWNxxx enums have been renamed with their proper names. All the same language codes are available, so EMMPLangage#forLangCode() or #fromCode() should still work. (We couldn't leave the unknown enums in, mark them @Deprecated, and add the correct ones, since this would violate uniqueness in the EMMPLanguage#values() array.)

Since Carbide 2.0.4

- Added com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration#getBuildArgumentsInfoCopy( ).

- Added com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration#setBuildArgumentsInfo(BuildArgumentsInfo bldArgInfo).

Since Carbide 2.1.0

- Added com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder#getBuilderMakefileDir(ICarbideBuildConfiguration config).
- Support was added for Symbian Binary Variation (SBV):

- Added com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext#getBuildVariationName( ).
- Added com.nokia.carbide.cdt.builder.EpocEngineHelper#hasFeatureVariantKeyword( ICarbideProjectInfo projectInfo, IPath relativeMMPPath ).
- Added com.nokia.carbide.cdt.builder.EpocEngineHelper#getMD5HashForBinaryVariant( ICarbideBuildConfiguration config, IPath mmpFullPath).
- Added com.nokia.carbide.cpp.sdk.core.ISymbianSDK#getSBVCatalog( ).
- Added com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext#getBuildVariationName( ).
- Added com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext#isSymbianBinaryVariation( ).
- Added com.nokia.carbide.cpp.sdk.core.ISBVCatalog.
- Added com.nokia.carbide.cpp.sdk.core.ISBVPlatform.
- Added EPOC Engine support for SBV in the following packages:
  - com.nokia.carbide.cpp.epoc.engine
  - com.nokia.carbide.cpp.epoc.engine.model
  - com.nokia.carbide.cpp.epoc.engine.model.sbv.

- Added com.nokia.carbide.cpp.sdk.core.ISymbianSDK#setPreviouslyScanned( boolean ).
- Added com.nokia.carbide.cpp.sdk.core.ISymbianSDK#isPreviouslyScanned( ).

Since Carbide 2.2.0

- Added com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo#extraSBSv2Args( ).

Since Carbide 2.3.0

- ISDKManager was updated to indicate it is not intended to be implemented by clients.
- Added com.nokia.carbide.cpp.sdk.core.ISDKManager#getSBSv2Version(boolean forceScan).
- Added com.nokia.carbide.cpp.sdk.core.ISDKManager#getMinimumSupportedSBSv2Version( ).

Since Carbide 3.0.0

- IConnectionsManager was updated to indicate it is not intended to be implemented by clients.
- Added several new methods to support automated connection/device discovery agents and default connections.
- Deprecated IClientServiceSiteUI and adding new IClientServiceSiteUI2 to support concept of default connection
  - getSelectedConnection() and selectConnection() now use connection ids rather than connection objects
  - Exposing new selection status to allow reporting when default connection is not supported by client service

### Deprecated APIs

The following Carbide APIs have been deprecated and should not be used anymore. Please see the JavaDoc for these classes and methods for more information.

Since Carbide 1.2.0

- N/A

Since Carbide 1.2.1

- N/A

Since Carbide 1.2.2

- com.nokia.carbide.cdt.builder.builder.CarbideCommandLauncher.getCmdExeLocation()
- com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder.callAbldBuildForConfiguration(ICarbideBuildConfiguration, IProgressMonitor, IConsole, int, boolean)
- com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder.invokeBldmakeBldFiles(ICarbideBuildConfiguration, CarbideCommandLauncher, IProgressMonitor, IConsole, String[], IPath)
- com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder.projectNeedsMakefileGeneration(IPath, ICarbideBuildConfiguration)
- com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo.getMMPTargetFile()
- com.nokia.carbide.cdt.builder.EpocEngineHelper.getPathToMainExecutable(ICarbideBuildConfiguration)
- com.nokia.carbide.cdt.builder.EpocEngineHelper.getPathToMainExecutable(ICarbideProjectInfo)
- com.nokia.carbide.cdt.builder.EpocEngineHelper.getTargetPathForMainExecutable(ICarbideProjectInfo)
- com.nokia.carbide.cdt.builder.EpocEngineHelper.getHostAndTargetResources(ICarbideProjectInfo)
- com.nokia.carbide.cdt.internal.builder.EnvironmentVarsInfo
- com.nokia.carbide.cdt.internal.builder.SISBuilderInfo
- com.nokia.carbide.cpp.sdk.core.getProjectVariantHRHMacros()

Since Carbide 2.0

- None

Since Carbide 2.0.4

- com.nokia.carbide.cdt.builder.project.IBuildArgumentsInfo
- com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration#getBuildArgumentsInfo( )

Since Carbide 2.1

- com.nokia.carbide.cdt.builder.EpocEngineHelper#getVariantTargetName(IMMPData mmpData, IPath target)

- com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder#generateAbldMakefileIfNecessary(ICarbideBuildConfiguration config, CarbideCommandLauncher launcher, IPath componentPath, boolean isTest)

### Removed APIs

The following Carbide APIs have been removed and are no longer available to plug-ins.

Since Carbide 1.2.0

- N/A

Since Carbide 1.2.1

- N/A

Since Carbide 1.2.2

- Some methods that were not intended to be made public were removed from the following classes and interfaces:

- com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder
- com.nokia.carbide.cdt.builder.ICarbideBuildManager
- com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo
- com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration

Since Carbide 2.0

- None

Since Carbide 2.1.0

- None