Documentation

    Table of Content
    • CodePorting.Native Product Family
      • CodePorting.Native Cs2Cpp
        • Getting Started
          • Product Overview
          • Installation
          • Licensing
          • How to use CodePorting.Native Cs2Cpp
            • How to Use Command line to port and build Projects
            • How to Use GUI to port and build Projects
        • Developer Guide
          • Porting Simple C# Projects
            • Porting Simple Console Application
            • Porting Simple Library
            • Porting Simple NUnit Test
          • Porting Dependent C# Projects
            • Porting Dependent Console Application
            • Porting Dependent Library
            • Porting Dependent NUnit Test
          • Porting 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
            • Abstract Classes
            • Auto Properties
            • Break Statements
            • Class Constructors
            • Continue Statements
            • Delegates
            • Do While Statemetns
            • Enums TypeCast
            • Enums
            • Events
            • Exceptions
            • Expected Exceptions
            • Finalizers
            • For Statements
            • ForEach Statements
            • Generic Classes
            • Generic Delegates
            • Generic Interfaces
            • Generic Methods
            • Generic Structs
            • If Statements
            • Indexers
            • Lambda Expressions
            • Methods
            • Nested Classes
            • Properties
            • Return Statements
            • Simple Class
            • Simple Interface
            • Simple Struct
            • Simple Test
            • Standard TypeCast
            • Static Class
            • Static Constructor
            • Static-Methods
            • Static Properties
            • Switch Statements
            • Test with Setup Methods
            • Throw Statements
            • Try Catch Finally Statements
            • Try Catch Statements
            • Try Finally Statements
            • Var Expressions
            • Virtual Methods
            • While Statements
          • CodePorting Native Cs2Cpp Attributes
          • CodePorting Native Cs2Cpp Configuration File
            • CodePorting.Native Cs2Cpp Configuration File Structure
            • Attributes in Configuration file
            • Configuration file Nodes
            • Configuration file Options
          • Memory Management Model
            • Using aliasing constructor to create a smart pointer
          • Cmake Support
          • Limitations and Bugs
            • Porter Limitations and Bugs
            • Library Limitations and Bugs
            • Cpp Code Injection
        • Release Notes
          • 2020
            • CodePorting.Native Cs2Cpp 20.11
            • CodePorting.Native Cs2Cpp 20.12
            • 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
          • 2021
            • CodePorting.Native Cs2Cpp 21.1
          • 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
          • 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

    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
    1. Home
    2. CodePorting.Native Product Family
    3. CodePorting.Native Cs2Cpp
    4. Release Notes
    5. 2020
    6. CodePorting.Native Cs2Cpp 20.12

    Major Features

    1. Porter is now capable of porting several classes overloaded by generic parameter count. These go into partial specialization of variadic template.
    2. Porter can now report an error if an in-config attribute does not apply to any item during the project porting. To make it do so, use ‘error_if_unused’ syntax as described at ‘Attributes in configuration file’ page.
    3. UDP sockets now handle timeouts properly. The implementation now uses async calls.
    4. The porter is now capable of porting ‘Assert.That(expr, Throws.TypeOf)’ and ‘Assert.That(expr, Is.Empty)’ Nunit checks.
    5. A new ‘enable_fast_rtti’ porter option was added making it possible to speed up casting operations (translations of c-style cast, ‘as’ and ‘is’ operators).

    Minor fixes

    1. A new ‘unexpected_override_as_warning’ porter option was added making it possible to switch ‘override is unexpected’ message from error to warning.
    2. LinkedList container was completely rewritten. It no longer leaks the memory.
    3. RefCount class doesn’t produce assertion fault if the counter goes beyond zero.
    4. Some previously missing types were added into porter’s typemap.
    5. Graphics::MeasureString now wokrs properly with the characters that are absent from the font being used and loaded from fallback one instead.
    6. Some cases of line cap drawing were fixed.
    7. Incorrect paths in cmake target files for Visual Studio projects were fixed.
    8. The performance of some Dictionary operations was improved.

    Please consult respective sections of our wiki for more information.

    Full List of Issues Covering all Changes in this Release

    KeySummaryCategory
    CSPORTCPP-3866Make porter tests fail on porter errorsEnhancement
    BARCODECPP-426Support Aspose.BarCode for C++Task
    CSPORTCPP-3102Add warnings for unused config attributesEnhancement
    CSPORTCPP-3526LinkedList leaks memoryBug
    CSPORTCPP-3854MakeObject leakage detection improvementEnhancement
    SLIDESCPP-2661Porter: Using of CppIgnoreBaseType attribute mistakenly ignores System::Object base typeBug
    SLIDESCPP-2664Weekly meeting and current working activity (2020/49)Task
    SLIDESCPP-2631Fix indentation after ellipsisTask
    SLIDESCPP-2662Incorrect LineCap::NoAnchor handling in GraphicsPath::Widen() methodBug
    EMAILCPP-267UdpClient does not properly handle timeoutsBug
    WORDSCPP-966Support of Assert.That(expr, Throws.TypeOf) expressionsNew feature
    CSPORTCPP-3924Fix cmake targets filesBug
    SLIDESCPP-2596Improve performance of System::Cast and System::ObjectExt::Is operationsEnhancement
    WORDSCPP-967Support of Assert.That(expr, Is.Empty) expressionsNew feature
    SLIDESCPP-2595Improve performance of Dictionary<string, string> accessing operationsEnhancement

    Public API and Backward Incompatible Changes

    1. CppIgnoreBaseType attribute no longer can ignore System.Object inheritance implicitly. Explicit ignore still works.