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

    Major Features

    1. C++-styled iteration was added over the library containers. begin/end/cbegin/cend/rbegin/rend methods are now present where possible.
    2. Documentation translation was improved. Porter is now capable of expanding ‘cref’ references (which is controlled by a new ‘try_expand_cref_types’ option). Multiple tags are now supported. A new ‘hide_forward_declarations’ option was supported to make porter hide forward declarations from Doxygen processing. Documentation comments were fixed for the classes containing enums.
    3. New ‘CppAllowStackAllocation’ attribute was supported by porter making it possible to unhide classes’ destructor in ported code so it can be allocated on stack in C++.
    4. Translation of System::String class to and from various STL string types were improved. Respective constructors and conversion operators were added (yet explicit, to avoid undesired invocations of suboptimal operations). Also, the String class is now working fine with STL streams.

    Minor fixes

    1. Ownership issues were fixed for the Xml subsystem. XmlDocument can no longer be deleted while there are references to any of its nodes.
    2. 3rd party licenses file was actualized.
    3. GV files are now named after tests they stand for to allow running tests in parallel without overwriting files.
    4. TestCaseSource attribute was fixed for the case of the test method with void return value and single argument.
    5. Compiler warnings were fixes for the cases of using Aspose C++ code from existing or uncontrolled (e. g. Qt Creator) projects. Porter is now capable of suppressing C4100 warnings in headers it creates.
    6. ‘CppLambdaPassByValue’ attribute was fixed to work with constructors.
    7. Rendering issues related to drawing caps with compound array and text smoothing were fixed.
    8. Porter is now capable of producing warnings if virtual methods, properties, or indexers are invoked from constructors or finalizers. This behavior is controlled by a new ‘enable_warnings_for_virtual_func_calls_logging’ option.
    9. Use of IntPtr in unsafe C# code is now porter correctly.
    10. The translation of null coalescing for nullable types was fixed.
    11. Zip files signature was put in line with format requirements.
    12. System::IO::Path::GetTempPath() now always returns string terminated by a directory separator, same as in .Net.

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

    Full List of Issues Covering all Changes in this Release

    KeySummaryCategory
    CSPORTCPP-2430Refactor System::Xml using SmartPtr aliasing constructorImprovement
    CSPORTCPP-1530Add begin-end methods to containersImprovement
    WORDSCPP-970Implement missing System::Net::WebClient methodsBug
    CSPORTCPP-3373Support CodePorting.Native Cs2CppTask
    SLIDESCPP-2422Fix broken links in the generated documentationBug
    SLIDESCPP-2438Porter: Implement an ability to replace documentation comments with more than one tag specifiedTask
    SLIDESCPP-2446Porter: Fix documentation comments for a class which contains an enumBug
    CSPORTCPP-2921Add a new attribute for a porter - CppAllowOnStackNew feature
    CSPORTCPP-3326Fix warnings when building Qt Creator projectImprovement
    EMAILCPP-236Preparing Aspose.Email for C++ Release 20.5Task
    SLIDESCPP-2275Incorrect cap stylesBug
    CSPORTCPP-1529Improve strings conversion to and from C++ typesTask
    CSPORTCPP-1107Add porter option to auto-detect virtual function calls from constructorsNew feature
    SLIDESCPP-2408Use Aspose.Slides for .NET 20.7 featuresTask
    SLIDESCPP-2272Incorrect text smoothingBug
    TASKSCPP-1428Null coalescing enhancement for nullable types (Linux GCC issue)Bug
    SLIDESCPP-2442Porter: Wrap forward declarations with a mark that excludes them from processing by DoxygenNew feature

    Public API and Backward Incompatible Changes

    1. System::Net::WebClient class partially implemented.
    2. StringBuilder::Clear() method was supported.
    3. System::Linq::Enumerable::Empty method was supported.
    4. System::IO::Stream::CopyTo method was supported.
    5. System::Drawing::ImageFormatConverter class was implemented.
    6. get_CommandLine(), get_ExitCode() and set_ExitCode() methods were supported by System::Environment class.