Release 4.2 makes relatively few API changes. Its purpose is mainly to merge in a large number of internal changes from the main development branch.
Changes affecting all platforms
The new ReverseRoutes or reverseRoutes function reverses current routes, replacing them with new routes from the former end to the former start.
Changes to the C++ API
The CBaseMapObject class has been abolished. The public map object class is now CMapObject.
There is a convenience declaration, CMapObjectArray, defined as std::vector<std::unique_ptr<CMapObject>> CMapObjectArray, which is used when returning map objects from Find functions. It replaces all former uses of CPointerArray<CBaseMapObject>. The use of unique pointers clarifies ownership and makes the objects easier to manage.
CBitmap functions which create modified bitmaps now return CBitmap objects, not std::unique_ptr<CBitmap>. There is no loss of performance because move operations are used internally.
Indication of turn-off
The TTurn class now has a member iTurnOff indicating whether is a turn off, defined as a turn on to a lower-status road.
Changes to the .NET API
There is a new class, MapObjectList, defined as System.Collections.Generic.List<CartoType.MapObject>, which is used when returning map objects from Find functions. It replaces all former uses of List<MapObject>. One advantage of this change is that it allows documentation for Find functions to be shown in the Visual Studio Object Browser. Formerly, the presence of < and > signs in the C++/CLI type List<MapObject^>^ prevented in-source documentation for the Find functions from being created during compilation.
Changes to the Android API
Two new functions, Framework.license and Framework.licensee, allow you to supply a license key and get the licensee name respectively.
The new deleteRoutes function deletes all current routes.