Documentation

    Table of Content
    • CodePorting.Translator Product Family
      • CodePorting.Translator Cs2Cpp
        • Getting Started
          • Product Overview
          • Installation
          • Licensing
          • How to use CodePorting.Translator Cs2Cpp
            • How to Use Command line to translate and build Projects
            • How to Use GUI to translate and build Projects
        • Developer Guide
          • Translating Simple C# Projects
            • Translating Simple Console Application
            • Translating Simple Library
            • Translating Simple NUnit Test
          • Translating Dependent C# Projects
            • Translating Dependent Console Application
            • Translating Dependent Library
            • Translating Dependent NUnit Test
          • Qt support
          • Translating Complex C# Projects
            • How to Convert Complex C# Console Application to C++
            • How to Convert Complex C# Library to C++
            • How to Convert Complex C# NUnit Test to C++
          • What Converts to What
            • AbstractClasses
            • BreakStatements
            • ClassAutoProperties
            • ClassConstructors
            • ClassEvents
            • ClassFinalizers
            • ClassGenericMethods
            • ClassIndexers
            • ClassMethods
            • ClassProperties
            • ClassStaticConstructor
            • ClassStaticMethods
            • ClassStaticProperties
            • ClassVirtualMethods
            • ContinueStatements
            • Delegates
            • DoWhileStatements
            • Enums
            • EnumTypeCast
            • Exceptions
            • ExpectedException
            • ForeachStatements
            • ForeachStatementsStd
            • ForStatements
            • GenericClasses
            • GenericDelegates
            • GenericInterfaces
            • GenericStructs
            • IfStatements
            • LambdaExpressions
            • NestedClasses
            • ReturnStatements
            • SimpleClass
            • SimpleInterface
            • SimpleStruct
            • SimpleTest
            • StandardTypeCast
            • StaticClass
            • SwitchStatements
            • TestWithSetupMethods
            • ThrowStatements
            • TryCatchFinallyStatements
            • TryCatchStatements
            • TryFinallyStatements
            • VarExpressions
            • WhileStatements
          • CodePorting Translator Cs2Cpp Attributes
          • CodePorting Translator Cs2Cpp Configuration File
            • CodePorting.Translator Cs2Cpp Configuration File Structure
            • Attributes in Configuration file
            • Configuration file Nodes
            • Configuration file Options
          • Memory Management Model
            • Memory Management Model Description
            • Using aliasing constructor to create a smart pointer
          • Cmake Support
          • C++ code injection
          • C++ user-defined exception classes
          • Limitations and Bugs
            • Translator Limitations and Bugs
            • Library Limitations and Bugs
            • Cpp Code Injection
        • Release Notes
          • 2022
            • CodePorting.Translator Cs2Cpp 22.6
            • CodePorting.Native Cs2Cpp 22.5
            • CodePorting.Native Cs2Cpp 22.4
            • CodePorting.Native Cs2Cpp 22.3
            • CodePorting.Native Cs2Cpp 22.2
            • CodePorting.Native Cs2Cpp 22.1
          • 2021
            • CodePorting.Native Cs2Cpp 21.12
            • CodePorting.Native Cs2Cpp 21.11
            • CodePorting.Native Cs2Cpp 21.10.1
            • CodePorting.Native Cs2Cpp 21.10
            • CodePorting.Native Cs2Cpp 21.9
            • CodePorting.Native Cs2Cpp 21.8
            • CodePorting.Native Cs2Cpp 21.7
            • CodePorting.Native Cs2Cpp 21.6
            • CodePorting.Native Cs2Cpp 21.5
            • CodePorting.Native Cs2Cpp 21.4
            • CodePorting.Native Cs2Cpp 21.3
            • CodePorting.Native Cs2Cpp 21.2
            • CodePorting.Native Cs2Cpp 21.1
          • 2020
            • CodePorting.Native Cs2Cpp 20.12
            • CodePorting.Native Cs2Cpp 20.11
            • CodePorting.Native Cs2Cpp 20.10
            • CodePorting.Native Cs2Cpp 20.9
            • CodePorting.Native Cs2Cpp 20.8
            • CodePorting.Native Cs2Cpp 20.7
            • CodePorting.Native Cs2Cpp 20.6
            • CodePorting.Native Cs2Cpp 20.5
            • CodePorting.Native Cs2Cpp 20.4
            • CodePorting.Native Cs2Cpp 20.3
            • CodePorting.Native Cs2Cpp 20.2
            • CodePorting.Native Cs2Cpp 20.1
          • 2019
            • CodePorting.Native Cs2Cpp 19.1
            • CodePorting.Native Cs2Cpp 19.2
            • CodePorting.Native Cs2Cpp 19.3
            • CodePorting.Native Cs2Cpp 19.4
            • CodePorting.Native Cs2Cpp 19.4.1
            • CodePorting.Native Cs2Cpp 19.5
            • CodePorting.Native Cs2Cpp 19.6
            • CodePorting.Native Cs2Cpp 19.7
            • CodePorting.Native Cs2Cpp 19.8
            • CodePorting.Native Cs2Cpp 19.9
            • CodePorting.Native Cs2Cpp 19.10
            • CodePorting.Native Cs2Cpp 19.11
            • CodePorting.Native Cs2Cpp 19.12
          • 2018
            • CodePorting.Native Cs2Cpp 18.9
            • CodePorting.Native Cs2Cpp 18.9.1
            • CodePorting.Native Cs2Cpp 18.10
            • CodePorting.Native Cs2Cpp 18.11
            • CodePorting.Native Cs2Cpp 18.12
    1. Home
    2. CodePorting.Translator Product Family
    3. CodePorting.Translator Cs2Cpp
    4. Release Notes
    5. 2020
    6. CodePorting.Native Cs2Cpp 20.8

    CodePorting.Native Cs2Cpp 20.8

    What's on this Page

      • Major Features
      • Minor fixes
      • Full List of Issues Covering all Changes in this Release
      • Public API and Backward Incompatible Changes

    Major Features

    1. The behavior of many library classes was put closer to such of .Net originals in cases of exception throwing, parameter checking, and other details not concerning major features. This includes:
    2. Exception classes;
    3. Regular exceptions-related classes;
    4. Multithreading-related classes;
    5. Text and encoding-related classes;
    6. Collection classes;
    7. DateTime-related classes;
    8. Some other classes.
    9. Porter now supports the porting of an ‘unsafe’ block statement.
    10. Porter is now capable of placing ‘override’ instructions in ported code where necessary.
    11. CppConstWrapper attribute is now working properly for methods with arguments, non-virtual members, properties, and indexers.
    12. Porter is now capable of generating more simplistic code for some cases:
    13. ‘simplify_using_statements’ option was supported by porter making it possible to generate simpler code for ‘using’ statements which should be useful e. g. for examples porting.
    14. Translation of Assert.Zero and Assert.AreNotEqual was simplified.
    15. Translation of property initializers for variable creation statements was simplified.
    16. Simplier code is now generated for ‘foreach’ statement translation if ‘foreach_as_range_based_for_loop’ option is enabled. This applies to library classes with ‘begin-end’ semantics support and to other classes specified via ‘types_with_begin_and_end_methods’ configuration file node.
    17. Reflection support was extended. Many related classes were implemented. Porter is now capable of propagating attributes and constructors info (see ‘attributes_into_reflection_info’ option).

    Minor fixes

    1. A simple implementation for sorting strings using CompareOptions::StringSort was added.
    2. False positives for ‘virtual function call from constructor/destructor’ warning were fixed.
    3. ‘goto case’ statement was fixed with the switch of character type.
    4. XmlWriter’s indentation settings were put in line with such in .Net.
    5. A crash was fixed in ported code on some compilers caused by an exception being thrown from ‘finally’ block.
    6. XmlConvert::TryDecodingName was fixed for non-ASCII characters.
    7. Iterator comparison for System::Collections::ObjectModel::Collection was fixed.
    8. Porter now properly replaces multiple documentation tags with the same name. The replacement of the ‘exception’ documentation tag was supported. Text for ‘see’ documentation tag now gets reduced for compact view.
    9. StopWatch class was fixed to provide interval values during the counting, not only after it is stopped.
    10. UTF-7 decoding is now fully supported.
    11. Comment delimiters (bars of slashes) are now ported unmodified, no longer being recognized as triple-slash documentation comment prefix followed by a comment.
    12. Dictionary class now works properly with structures implementing the IEquatable interface.
    13. The shared pointer leak was fixed on the unsuccessful call of the dynamic_pointer_cast() method.
    14. Compilation issues with Matrix class used without Point structure include were fixed.
    15. Porter is now capable of generating platform-independent XXX_SHARED_CLASS macros for exporting classes.
    16. Output file name unicalization can now be disabled using ‘make_cpp_file_name_uniq’ option.
    17. Porter is now capable of translating casts to non-generic IList interface (see ‘allow_cast_to_non_generic_list’ option).
    18. Previously unsupported types of tiff files were supported by the Drawing subsystem.
    19. CppUnknownTypeParam, CppValueTypeParam, CppForceDynamicCastToTypeParam and CppForceDynamicCastFromTypeParam attributes can now be used from configuration files.
    20. Some memory leaks were fixed in System::Xml submodule.
    21. Figure connection was fixed in GraphicsPath::AddPath() method.
    22. A shared pointer leak via creating an aliased null-pointer was fixed.
    23. Equals() call via aliased pointer created based on weak pointer was fixed.
    24. do_try_finally.h now works properly in C++17 mode.
    25. Some world matrix-related drawing issues were fixed.
    26. The vertical positioning of a fallback font was fixed.
    27. Misprint in namespace end comments in ported code was fixed.
    28. ‘First’ and ‘Count’ LINQ methods were supported in ported code.
    29. XPathDocument(System.IO.Stream) constructor was supported.
    30. Porter is now capable of removing comments to private entities (see ‘remove_private_comments’ option).
    31. Codepage issues in license text were fixed.

    Please consult the respective sections of our wiki for more information.

    Full List of Issues Covering all Changes in this Release

    KeySummaryCategory
    CSPORTCPP-1107Add porter option to auto-detect virtual function calls from constructorsEnhancement
    SLIDESCPP-2472Formatting output XML files do not match Slides.NetBug
    SLIDESCPP-2473Automate MathMLTests testingTask
    CSPORTCPP-3456An app crashes if an exception is thrown in the lambda-expression of the System::MakeScopeGuard constructor.Bug
    CSPORTCPP-3429Porting tests for exceptionsTask
    WORDSCPP-985Simplify using statements generated by porterEnhancement
    WORDSCPP-978Simplify test code generated by porterEnhancement
    CSPORTCPP-3050Porting tests: GroupTest, MatchTest, RegexTest, and othersTask
    SLIDESCPP-2484Porter: Fix porting an unsafe statement blockTask
    WORDSCPP-986Simplify object initializers generated by porterEnhancement
    CSPORTCPP-3483Support CodePorting.Native Cs2CppTask
    SLIDESCPP-2447Porter: Implement an ability to replace multiple documentation tags with the same nameEnhancement
    SLIDESCPP-2448Porter: Implement replacing of ‘exception’ documentation tagNew feature
    SLIDESCPP-2449Porter: Implement an ability to reduce text for ‘see’ tagEnhancement
    CSPORTCPP-3052Porting tests: MutexTest, SemaphoreTest, ThreadTest, and othersTask
    WORDSCPP-989Use the auto keyword for variable declarationsEnhancement
    CSPORTCPP-3493The StopWatch::get_Elapsed returns an incorrect valueBug
    CSPORTCPP-2064Put ‘override’ instructions in ported codeNew feature
    CSPORTCPP-3303Improve CppConstMethodWrapper attributeEnhancement
    WORDSCPP-961Implement missing System::Text::UTF7Encoding methodTask
    CSPORTCPP-3051Porting tests: AutoResetEventTest, EventWaitHandleTest, InterlockedTest and othersTask
    CSPORTCPP-3511Support CodePorting.Native Cs2CppTask
    WORDSCPP-993Simplify foreach statements generated by porterTask
    CSPORTCPP-3053Porting tests: UTF32EncodingTest, UTF7EncodingTest, UTF8EncodingTest and othersTask
    SLIDESCPP-2497Add missed EnableRaisingEvents propertyTask
    SLIDESCPP-2511Resolve Aspose.Slides for C++ compilation errors (v20.8)Task
    CSPORTCPP-3423Porting tests: StringBuilderTestTask
    CSPORTCPP-3424Porting tests: DecimalFormatterTest, NumberFormatterTestTask
    CSPORTCPP-3425Porting tests: StreamReaderTest, StreamWriterTestTask
    CSPORTCPP-3444Porting tests for collectionsTask
    CSPORTCPP-3546Ensure interfaces have RTTIEnhancement
    WORDSCPP-955Improve tiff supportEnhancement
    TASKSCPP-1445Implement CppUnknownTypeParam/CppValueTypeParam attributes support via configuration file.Enhancement
    SLIDESCPP-2492Check asposecpplib for memory leaks (v20.8)Task
    PDFCPP-1345Fix Ps testsBug
    CSPORTCPP-3522Memory leak in Xml submoduleBug
    CSPORTCPP-3556Support CodePorting.Native Cs2CppTask
    SLIDESCPP-2499Fix RegressionTests_v20_8.SLIDESNET_35233 testBug
    CSPORTCPP-3453Fixing tests for DateTimeTask
    SLIDESCPP-2392Fix RegressionTests_v15_11.SLIDESJAVA_34245 testBug
    CSPORTCPP-3463Support CodePorting.Native Cs2CppTask
    WORDSCPP-977Implement IEnumerable extension methods (Count and First)New fature
    TASKSCPP-1449Add XPathDocument ctor from System::StreamNew feature
    SLIDESCPP-2495Porter: Implement an ability to remove private documentation commentsNew feature

    Public API and Backward Incompatible Changes

    1. Some missing methods of XmlReader and XmlTextReader classes were added.
    2. Signatures accepting DateTime and TimeSpan objects were reviewed to handle these by value rather than by const value, as these types now only contain integer ticks counters.
    3. Some signatures were fixed for consistency with .Net so that ‘override’ instructions placed by porter for classes inheriting these would work properly.
    4. EnableRaisingEvents property was stubbed in Process class.
    5. Missing RTTI members were added into library interface classes.
    6. RemoveAliasing() method was implemented in SmartPtr class.