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

- Added com.nokia.carbide.cdt.builder.project.ISymbianBuildContext#getSBSv2Alias().
- Added com.nokia.carbide.cdt.builder.project.ISymbianBuildConfiguration#getTargetOutputDirectory( ).

Since Carbide 3.0.0 (C3)

- C3 is an API breaking release, primarily around areas of Symbian SDK management and Symbian build support. This release removes support for Symbian OS versions prior to 9.4 (i.e. only support for Symbian^2 and up are supported). Management of Symbian SDKs has been simplified and the APIs have been trimmed to reflect this.
- ISymbianSDK

- added getSupportedFeatures() - see com.nokia.carbide.cpp.sdk.core#ISymbianSDKFeatures for supported feature constants.
- added ISDKBuildInfo getBuildInfo(String builderId) - This is used to get the base data (ISymbianBuildContext) for a build configuration, depending on the builder you are using (e.g. abld versus sbsv2). See com.nokia.carbide.cpp.sdk.core#ISDKBuildInfo

- com.nokia.carbide.cpp.sdk.core#ISDKBuildInfo was added.
- com.nokia.carbide.cpp.sdk.core#ISBSv1BuildContext was added.
- com.nokia.carbide.cpp.sdk.core#ISBSv2BuildContext was added.
- com.nokia.carbide.cpp.sdk.core#ISBSv2BuiISymbianSDKFeatures was added.
- ICarbideBuildConfiguration

- added ISymbianBuildContext getBuildContext()
- added getDisplayString() - A convenience wrapper for ISymbiabBuildContext
- added getSDK() - A convenience wrapper for ISymbiabBuildContext
- added getPlatformString() - A convenience wrapper for ISymbiabBuildContext
- added getTargetString() - A convenience wrapper for ISymbiabBuildContext
- added getCompilerPrefixFile() - A convenience wrapper for ISymbiabBuildContext
- added getCompilerMacros() - A convenience wrapper for ISymbiabBuildContext
- added getVariantHRHDefines() - A convenience wrapper for ISymbiabBuildContext
- added getPrefixFileIncludes() - A convenience wrapper for ISymbiabBuildContext
- added getBuildVariationName() - A convenience wrapper for ISymbiabBuildContext
- added getConfigurationID()
- added hasSTDCPPSupport()

- ISymbianBuildContext - This interface is no longer implemented by ICarbideBuildConfiguration. Rather, it is now an abstracted interface for builders to provide base build data for an ICarbideBuildConfiguration instance
- 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)

Since Carbide 3.0

- ISymbiabSDK#getOSVersion - use ISymbianSDK#getSupportedFeatures instead to test for properties of an SDK.

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

Since Carbide 3.0

- com.nokia.carbide.cpp.sdk.core#ISymbianSDK removed several methods. Please refer to the source code.
- ICarbideBuildConfiguration no longer implements ISymbiabBuildContext. You will need to use the ISymbianBuildContext wrapper methods to access that interface now.