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
          • 2021
            • 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.Native Product Family
    3. CodePorting.Native Cs2Cpp
    4. Release Notes
    5. 2018
    6. CodePorting.Native Cs2Cpp 18.11

    CodePorting.Native Cs2Cpp 18.11

    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

    Following major improvements and fixes are applied in this regular monthly release:

    1. Tests translation approach is improved. Now, virtual function called from methods marked with TestFixtureSetUp, TestFixtureTearDown, SetUp and TearDown attributes are fully supported. Also, TestFixture objects are now created once before running tests from current fixture, and deleted afterwards. ‘cleanup_tests’ option is now ignored by porter
    2. Named mutex implementation is added
    3. Compilation of library code using Visual Studio 2015 is explicitly disabled
    4. Possible static initialization fiasco is now detected by porter and reported as warning
    5. PreserveWhitespace mode is enabled for XmlDocument class
    6. New ‘obfuscate_cpp_headers’ option is supported. It allows generating headers with some type and name information removed for non-public fields
    7. New ‘nunit_assert_class_aliases’ option is supported. It allows treating calls into methods of some ported classes same way calls into NUnit’s Assert class methods are treated
    8. Graphics::FillRegion() method is implemented
    9. Threading::Thread class’es behavior is improved to match .Net behavior better. Now the thread is detached after start, so dropping thread object reference doesn’t result in interthreading errors
    10. Several System::Diagnostics::Process methods are implemented for Linux platform
    11. A way to detect multiimage gifs is added
    12. Simple string raw pointer operations are supported inside ‘fixed’ statement

    Minor fixes

    1. StringBuilder now calls proper version of ToString() method even if not marked with CppConstMethod attribute
    2. NS deduction mechanism is fixed in System::Xml::Node::SetAttribute() method
    3. Array::Sort() implementation is fixed for value types supporting CompareTo method
    4. Types of enumerators of collections from System::Collections namespace being treated as value types is fixed
    5. Porter crash when having ambiguity between two or more methods, one having ‘params’-typed argument block, is fixed
    6. Dot in subject string expression now properly matched against ‘any symbol’ dot by Regex class
    7. ‘aspose_cpp’ library suffixes for Visual Studio 2017 are switched from ‘vc150’ to ‘vc141’ which is more common
    8. System::String::Contains behavior is fixed for empty string used as argument
    9. XmlTextReader::get_AttributeCount() is fixed when situations when reader is currently pointed to attribute node
    10. Porter behavior is fixed for situations when method parameter name matches such of one of the class’es parameters
    11. Graphics::MeasureString() behavior is fixed for some corner cases
    12. Buffer::BlockCopy() method is fixed to work with rvalues when compiled with GCC
    13. GraphicsPath::AddBeziers() overloads are implemented
    14. PlatformNotSupportedException exception type is supported
    15. Environment::GetFolderPath() is supported on Linux for SpecialFolder::Personal folder type
    16. Visualizations of System::String and System::SmartPtr inside Visual Studio are fixed and improved
    17. Accuracy of Graphics::MeasureString() method is improved. Special treatment of leading spaces is added. Behavior when no glyphs are present in the font used is fixed
    18. ‘exclude’ parameter of ‘cut_namespaces’ option is fixed to work with delegates
    19. Some errors within FileStream class are fixed
    20. Header name resolving mechanism is fixed when porter-generated header name matches name of existing header file
    21. Few memory issues within the library are fixed
    22. Complex assignment operators on indexers are fixed. There is an expression duplication issue causing increment or other similar operations to be executed twice
    23. List and Array sorting order is fixed for NaN values to match C# behavior
    24. GraphicsPath::AddPolygon() behavior is fixed for some cases.
    25. Tiff format with CMYK color model is now supported
    26. XmlConvert::ToString() method now uses correct invariant culture with DateTime objects.
    27. Quality of hashes provided by Object::GetHashCode() method is improved.
    28. False positive ‘Failed to parse constructor initializer’ porter errors are downgraded to warnings. The aren’t removed totally to avoid loosing true alerts.
    29. String::Join() method is fixed for empty input array to return empty string instead of null string.
    30. Missing include when using cascaded CppConstexpr attribute is fixed.

    Please consult respective sections of our wiki for more information.

    Full List of Issues Covering all Changes in this Release

    KeySummaryCategory
    CSPORTCPP-1805Improve TestFixture translation approachEnhancement
    WORDSCPP-651Port classes from namespace Aspose.TestFx.GoldComparers.FailedTestCollectorTask
    PDFCPP-767Fix CsToCppPorter - conversion to stringBug
    CSPORTCPP-2187Add VS2015 disablement macro to public headersTask
    BARCODECPP-374Implement SIOF detectionTask
    WORDSCPP-673System::ArraySystem::String::Sort does not work the same as in .NETBug
    CSPORTCPP-2127Fix member class porting as value typeBug
    WORDSCPP-672bool vs String ambiguity detector doesn’t work with params argumentsBug
    WORDSCPP-610XmlDocument.PreserveWhitespace throws NotImplementedExceptionBug
    WORDSCPP-570/TestReplace.TestReplaceAcrossParagraph/ Dot is not recognized as “any character” by Regex.Bug
    PDFCPP-793Fix issues with Text testsTask
    PDFCPP-747Get tests passedInvestigation
    BARCODECPP-379Support Aspose.BarCode for C++Task
    SLIDESCPP-1371Fix Aspose.Slides for C++ build issues in Linux environmentTask
    SLIDESCPP-1377Analyze missing slide elements rendering issueTask
    SLIDESCPP-1379Implement ‘Personal’ case of Environment::GetFolderPath for Linux environmentTask
    SLIDESCPP-1380Improve accuracy of the Graphics::MeasureString methodTask
    SLIDESCPP-1386Fix aborting execution when running RegressionTests_v18_8 testsTask
    SLIDESCPP-1393Porter: Option cut_namespaces:exclude is not applied for delegatesTask
    SLIDESCPP-1395Implement StringFormatFlags.MeasureTrailingSpaces functionality for MeasureStringTask
    SLIDESCPP-1405Implement System::Diagnostics::Process::GetCurrentProcess() for Linux environmentTask
    SLIDESCPP-1411Fix text measuring when a font doesn’t have required glyphsTask
    SLIDESCPP-1412The output pptx file is corruptedBug
    SLIDESCPP-1422Porter: Headers conflict resolving mechanism is brokenTask
    SLIDESCPP-1424Check Aspose C++ Library for memory access issues (v18.9)Task
    SLIDESCPP-1429Fix translation of complex assignment operations to indexersTask
    SLIDESCPP-1435Fix Array/List sorting when it contains NaN valuesTask
    SLIDESCPP-1426Fix RegressionTests_v17_2.SLIDESNET_35542 testTask
    SLIDESCPP-1444Modify Skia to support decoding of Tiff images with CMYK color modelTask
    SLIDESCPP-1459Fix NotImplementedException while running Miscelaneous.Test_SLIDESNET_33637 testTask
    SLIDESCPP-1449Improve quality of hash values returned by Object::GetHashCode()Task
    SLIDESCPP-1451Force porter to fail the build on file errorsTask
    SLIDESCPP-1463Fix RegressionTests_v16_4.SLIDESNET_36934 testTask
    SLIDESCPP-1472Implement identification of multi-images GIFTask
    SLIDESCPP-1473Porter: Missing include directive when CppConstexpr is appliedTask
    SLIDESCPP-1479Porter: Add support of simple raw pointer operations in the fixed statementTask

    Public API and Backward Incompatible Changes

    1. The way tests were translated is changed. If you have tests in your solution, you must re-port full solution instead of individual project, as tests ported by previous porter versions won’t be compatible with tests ported by actual porter.
    2. In System::Threading::Mutex class, Mutex(bool, String) constructor and Remove(String) static method are added.
    3. System::Details::Skia namespace is moved to System::Drawing::Details::Skia. No clients’ code should be impacted.
    4. IsMultiImage() method is added into Bitmap and Image classes.