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

    CodePorting.Native Cs2Cpp 20.4

    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. .Net Framework 3.5 was supported in CodePorting.Native.Cs2Cpp.PortingControl package for legacy reasons.
    2. PFX/PKCS12 support was added which is based on the OpenSSL library.

    Minor fixes

    1. System::Details::ObjectsBag collection class was added.
    2. set_ContentLength() method in System::Net::HttpWebRequest was fixed to make its arguments follow .Net style.
    3. Porter now generates proper ‘template’ keyword when accessing template methods for template arguments.
    4. ‘min’ and ‘max’ methods were properly escaped everywhere to avoid compilation errors on GCC and Clang.
    5. Extra references were removed from CodePorting.Native.Cs2Cpp.PortingControl package. It no longer depends on any class that is not present in .Net Framework 2.0.
    6. A bug was fixed for System::SmartPtr class causing incorrect behavior for assigning two shared pointers which point to the same object but manage lifetimes of the different ones.
    7. Exceptions are thrown by a constructor of System::Guid class was put in line with .Net behavior.
    8. When porting generic classes, porter now generates friend declarations to other specializations of same class to put access rights in line with such in C#.
    9. DPI values are now correctly saved to Tiff format.
    10. Different Tiff compression types were supported.
    11. Tiff pixel format was supported.
    12. XmlNode class now inherits IXPathNavigable and can be used with XslCompiledTransform, the same as in .Net.
    13. Botan license file was actualized.
    14. Several previously unsupported methods of System::Collections::Generic::LinkedList class were implemented.
    15. System::Diagnostics::Trace::Flush() method was implemented.
    16. StaticCast conversion was fixed for ‘String to String’ case as it gets generated for some constructs.
    17. Several missing methods of XmlTextWriter and XmlWriter classes were implemented.
    18. Include string being generated for System::DayOfWeek enum was fixed.
    19. user2.cmake class is now included at the end of the ported project’s CMakeLists.txt.
    20. String comparison was fixed for some cases in ‘ordinal, ignore case’ mode.
    21. Some previously unimplemented methods of WaitHandle class were supported.
    22. ‘foreach’ statement porting was fixed for IEnumerable.
    23. System::Nullable::GetValueOrDefault() method was implemented.
    24. CppForceSharedApi attribute is now recognized by porter when applied to static constructors.
    25. Behavior of System::Collections::Generic::Stack::Stack(int) constructor was fixed. Implementation of System::Collections::Generic::Stack::ToArray() was improved.
    26. Assert.AreEqual() is now working correctly in ported code when its arguments are of different boxed types.
    27. More LINQ methods were supported at IEnumerable level.
    28. TestCaseSource attribute is now ported properly for multiargument tests with a single method.
    29. Attributes are now properly retrieved from base classes through TypeInfo class. TypeInfo::GetCustomAttributes(attribute type, inherit) was fixed.
    30. TypeInfo::IsSubclassOf() and TypeInfo::IsAssignableFrom() methods were supported.
    31. Several scenarios of using SOAP features were fixed.
    32. DateTime::Parse() was fixed for the case of milliseconds being present in the date string.
    33. System::Collections::Generic::SortedList::get_Capacity() method was fixed.

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

    Full List of Issues Covering all Changes in this Release

    KeySummaryCategory
    WORDSCPP-935Increase the performance of DocumentBase.AddHangingNode and RemoveHangingNode methodsTask
    WORDSCPP-714Implement SystemPal.ExecuteWebRequest() and related methodsBug
    CSPORTCPP-3198Investigate the state of ‘detect_const_methods’ optionTask
    CSPORTCPP-3211Add .Net Framework 3.5 build for CodePorting.Native.Cs2Cpp.PortingControlTask
    PDFCPP-1223template keyword for gcc compilerTask
    CSPORTCPP-3253Add new license pdf file with OpenSSL and skcms informationTask
    CSPORTCPP-3238Fix SmartPtr assignment operator issue with aliasing constructorBug
    SLIDESCPP-2304Porter: Fix nunit_categories option priorityTask
    TASKSCPP-1382Fix GUID creation from a string in the case when the string is invalid or empty.Task
    TASKSCPP-1387Generate self-friendship for parametrized (generic) classes to provide .Net members accessibility behavior.Task
    TASKSCPP-1388Improve Math.Sign compatibility to .NetTask
    SLIDESCPP-1714Implement DPI handling for Tiff formatTask
    SLIDESCPP-1715Implement Tiff compression types supportTask
    SLIDESCPP-1716Implement Tiff pixel format supportTask
    PDFCPP-1239Fix XslCompiledTransformBug
    CSPORTCPP-3258Support CodePorting.Native Cs2CppTask
    EMAILCPP-206Preparing Aspose.Email for C++ release 20.1Task
    SLIDESCPP-2310Incorrect ‘foreach’ statement translation for IEnumerable typeTask
    TASKSCPP-1390Implement Nullable.GetValueOrDefault() method (parameter-less)Task
    WORDSCPP-946Rework Aspose.Common string related classesTask
    SLIDESCPP-2329Fix InvalidCastException errors when running FunctionTests and FormulaTests (v20.4)Bug
    PDFCPP-1236porting PUBTask

    Public API and Backward Incompatible Changes

    1. MethodArgumentTuple class was fixed to work properly with const methods and const parameters.
    2. ‘nunit_categories’ option’s behavior was changed. From now on, ‘include’ clauses have higher priority than such of ‘exclude’.
    3. System::Math::Sign() now returns int in all cases, same as in .Net.
    4. Several SOAP-related classes were supported in System::Web namespace.
    5. System::Collections::IDictioary::TryGetValue() method is now const. Poter is fixed to port is as const by default.