C++-styled iteration was added over the library containers. begin/end/cbegin/cend/rbegin/rend methods are now present where possible.
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.
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++.
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.
Ownership issues were fixed for the Xml subsystem. XmlDocument can no longer be deleted while there are references to any of its nodes.
3rd party licenses file was actualized.
GV files are now named after tests they stand for to allow running tests in parallel without overwriting files.
TestCaseSource attribute was fixed for the case of the test method with void return value and single argument.
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.
‘CppLambdaPassByValue’ attribute was fixed to work with constructors.
Rendering issues related to drawing caps with compound array and text smoothing were fixed.
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.
Use of IntPtr in unsafe C# code is now porter correctly.
The translation of null coalescing for nullable types was fixed.
Zip files signature was put in line with format requirements.
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
Refactor System::Xml using SmartPtr aliasing constructor
Add begin-end methods to containers
Implement missing System::Net::WebClient methods
Support CodePorting.Native Cs2Cpp
Fix broken links in the generated documentation
Porter: Implement an ability to replace documentation comments with more than one tag specified
Porter: Fix documentation comments for a class which contains an enum
Add a new attribute for a porter - CppAllowOnStack
Fix warnings when building Qt Creator project
Preparing Aspose.Email for C++ Release 20.5
Incorrect cap styles
Improve strings conversion to and from C++ types
Add porter option to auto-detect virtual function calls from constructors
Use Aspose.Slides for .NET 20.7 features
Incorrect text smoothing
Null coalescing enhancement for nullable types (Linux GCC issue)
Porter: Wrap forward declarations with a mark that excludes them from processing by Doxygen
Public API and Backward Incompatible Changes
System::Net::WebClient class partially implemented.
StringBuilder::Clear() method was supported.
System::Linq::Enumerable::Empty method was supported.
System::IO::Stream::CopyTo method was supported.
System::Drawing::ImageFormatConverter class was implemented.
get_CommandLine(), get_ExitCode() and set_ExitCode() methods were supported by System::Environment class.