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

Due to this change, methods that take ISymbiabBuildContext as a parameter may have been using the ICarbideBuildConfiguraiton interface. For example, in com.nokia.carbide.cdt.builder#DefaultMMPViewConfiguration. For these calls, simply add .getBuildContext() to the ICarbideBuildConfiguration instance to explicitly pass the ISymbianBuildContext.

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

- getFilteredBuildConfigurations() has been removed. Please use instead.
- getSDKVersion() has been removed. Users should not use SDK and OS version any longer but use ISymbiabSDK#getBuildInfo(ISymbianBuilderID."BUILDERID").getFilteredBuildConfigurations() instead.

- ICarbideBuildConfiguration no longer implements ISymbiabBuildContext. You will need to use the ISymbianBuildContext wrapper methods to access that interface now.