Support of Networking in csPorter for C++ 19.1

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

We are glad to announce csPorter for C++ 19.1 release. We have introduced the support of networking in this release along with some other important improvements and fixes. Please check the release notes, in order to get an idea about what is new and what has been enhanced or fixed with this revision of csPorter for C++.

Improvements and Fixes

These are the new features included in this regular monthly release:

  • Networking functionality is added into System::Net namespace
  • aspose_cpp library is switched to explicit exports. Internal members are no longer exported
  • Aliasing constructor is supported by SmartPtr class
  • Equals method overloads ambiguity is fixed when methods with different parameter names are added
  • Assertion faults now break whole test instead of current function only which caused inconsistency between C# and C++ behavior
  • MinGW 7.1 compiler is no longer supported
  • CppConstexpr attribute is fixed to work properly on generic class members
  • Missing include fixed when generating code using System::MakeObject() function but not referencing System::Array type
  • Issue with events declared in interfaces is fixed. Previously, duplicated code is being generated
  • Issue translating implicit casts when assigning to properties is fixed
  • Issue translating static events is fixed
  • gtest supported version is upgraded to #9ab640c
  • BitArray to null comparison translation is fixed
  • Inheritance from IDictionary<TKey,TValue> interface is now translated properly
  • 4-argument version of String.Concat() is supported
  • String::EndsWith() behavior is fixed for zero length substrings lookup
  • Queue and Stack containers now support CppWeakPtr(0) attribute to keep contained pointers weak
  • StringBuilder class now works with null objects properly
  • CppSkipDefinition attribute now works properly with destructors
  • A error is fixed for partial class porting when another class is present in the same file
  • Environment::GetFolderPath() is implemented on Windows

Resources

  • Product Home Page– Gives you detailed overview about the csPorter for C++
  • Online documentation– Complete help documentation.
  • Download– Download latest release of the csPorter for C++
  • API Reference Guide– Details of the namespaces and classes of the API linked with the ported C++ Code
  • GitHub Examples– Provides ready to port Example Projects
  • Support Forum– Write to us if you have any query or inquiry about the csPorter for C++
  • Blog– Do not limit yourself, enable Blog subscription and keep yourself updated with the latest news on the csPorter for C++
  • Video Tutorials– Watch csPorter for C++ video tutorials

Start a Free Trial Today

Start a free trial today – all you need is to sign up with the csPorter. Once you have signed up, you are ready to try the csPorter for C++ and port your C# projects to C++.

You can easily download the csPorter for C++ Application for evaluation. The evaluation download is the same as the purchased download.  The evaluation version (without a license specified) provides full product functionality, but it limits the input C# project structure.

If you want to test the csPorter for C++ Application without the evaluation version limitations, you can also request a 30-days Temporary License. Please refer to How to get a Temporary License?
Posted in csPorter for C++ | Tagged , , , , | Leave a comment

Auto Port C# Codebase to C++ – csPorter Newsletter February 2019

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn
LinkedIn YouTube Twitter Facebook
Share this issue:

Monthly Newsletter

February 2019

C# to C++ – Source code to source code conversion
Easily port complex C# projects to C++ with minimum manual efforts
 
 

Convert C# based source code applications and projects into native C++ equivalent. Control the translation of exact language constructs using global rules or via attributes placed in the C# code. It also allows reproducing even internal classes and routines in the same way as they are implemented in original code.

 
Download Free Trial
Product News
Product News
Product News
 
Feedback
Feedback
Feedback
 
Posted in Newsletters | Leave a comment

csPorter for C++ 18.12 Maintenance Release

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

We are pleased to announce csPorter for C++ 18.12 monthly release. Mainly, it is a maintenance release. In this release, we have fixed issues reported in previous versions of csPorter for C++. Please check the release notes in order to get an idea about what is new and what has been enhanced or fixed with this revision of csPorter for C++.

Improvements and Fixes

These are the new features included in this regular monthly release:

  • original_tests_names option is added to disable prefixing tests names with categories names.
  • force_include_enum option is added to enabling adding ‘#include’ directives for enums instead of generating forward declarations in all cases.
  • Region::IsVisible(PointF) method is implemented.
    PointF point(22.5, 90.2);
    bool visible = myRegion.IsVisible(point);
    
  • Tests stub file (list of tests in ported project) is now sorted by test name.
  • The problem is fixed for ‘finally’ block operating on variables that have already been freed by ‘return’ statement (moving constructor optimization issue).
  • System::Convert::FromBase64String() now throws exception of correct FormatException type on input of unexpected format.
  • DateTime constructors now throw valid ArgumentOutOfRangeException exceptions on out-of-range dates or months being passed to them.
  • Callstack print of SmartPtr class destructor was ligtened by 1/3.
  • Messages of NotImplementedException, NotSupportedException and CultureNotFoundException are fixed to match .NET ones.
  • Order of constexpr fields in output files is fixed to avoid initialization fiasco.
  • A bug is fixed blocking some messages from reaching porter.log.
  • Messages for config errors now include file, line and position information.
  • A bug is fixed in porter generating ‘gtest not found’ errors if current directory was not ‘bin/porter’.
  • TEST_F macros in output files are now placed near the test methods they call to make debug easier

Resources

  • Product Home Page– Gives you detailed overview about the csPorter for C++
  • Online documentation– Complete help documentation.
  • Download– Download latest release of the csPorter for C++
  • API Reference Guide– Details of the namespaces and classes of the API linked with the ported C++ Code
  • GitHub Examples– Provides ready to port Example Projects
  • Support Forum– Write to us if you have any query or inquiry about the csPorter for C++
  • Blog– Do not limit yourself, enable Blog subscription and keep yourself updated with the latest news on the csPorter for C++
  • Video Tutorials– Watch csPorter for C++ video tutorials

Start a Free Trial Today

Start a free trial today – all you need is to sign up with the csPorter. Once you have signed up, you are ready to try the csPorter for C++ and port your C# projects to C++.

You can easily download the csPorter for C++ Application for evaluation. The evaluation download is the same as the purchased download.  The evaluation version (without a license specified) provides full product functionality, but it limits the input C# project structure.

If you want to test the csPorter for C++ Application without the evaluation version limitations, you can also request a 30-days Temporary License. Please refer to How to get a Temporary License?
Posted in csPorter for C++ | Tagged , , , | Leave a comment

Automatically Port C# Source Code to C++ – csPorter Newsletter January 2019

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn
LinkedIn YouTube Twitter Facebook
Share this issue:

Monthly Newsletter

January 2019

Auto Convert C# Based Application Source Code & Projects to Native C++
Schedule porting tasks by writing CLI scripts or use GUI to manage workspaces with several inter-dependent projects.
 
Auto Convert C# Based Application Source Code & Projects to Native C++
 

csPorter for C++ allows effortlessly converting millions of lines of C# source code, applications and projects into native C++ equivalent. It is a source code to source code porter app, allowing the reproduction of internal classes and routines in the same way as they are implemented in the original C# code. Once you have converted your project to C++, you can build it for any of supported target platforms.

 
Download Free Trial
Product News
Product News
Product News
 
Feedback
Feedback
Feedback
 
Posted in Newsletters | Leave a comment

Enhanced Support of Threading and Unit Testing in csPorter for C++ 18.11

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

We are glad to publish a new monthly release of csPorter for C++ 18.11. It includes a number of enhancements and bug fixes. Improvement of Unit Test translation and threading are the important improvements in this release along with several other enhancements. Please check the release notes in order to get an idea about what is new and what has been enhanced or fixed with this revision of csPorter for C++.

Improvements and Fixes

These are the major enhancements included in this regular monthly release:

  • 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
  • Named mutex implementation is added
  • Compilation of library code using Visual Studio 2015 is explicitly disabled
  • Possible static initialization fiasco is now detected by porter and reported as warning
  • PreserveWhitespace mode is enabled for XmlDocument class
  • New ‘obfuscate_cpp_headers’ option is supported. It allows generating headers with some type and name information removed for non-public fields
  • 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
  • Graphics::FillRegion() method is implemented
  • 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
  • Several System::Diagnostics::Process methods are implemented for Linux platform
  • A way to detect multiimage gifs is added
  • Simple string raw pointer operations are supported inside ‘fixed’ statement

Public API Changes

We have made following breaking API changes in csPorter for C++ 18.11 version:

  • 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.
  • In System::Threading::Mutex class, Mutex(bool, String) constructor and Remove(String) static method are added.
  • System::Details::Skia namespace is moved to System::Drawing::Details::Skia. No clients’ code should be impacted.
  • IsMultiImage() method is added into Bitmap and Image classes.

Resources

  • Product Home Page– Gives you detailed overview about the csPorter for C++
  • Online documentation– Complete help documentation.
  • Download– Download latest release of the csPorter for C++
  • API Reference Guide– Details of the namespaces and classes of the API linked with the ported C++ Code
  • GitHub Examples– Provides ready to port Example Projects
  • Support Forum– Write to us if you have any query or inquiry about the csPorter for C++
  • Blog– Do not limit yourself, enable Blog subscription and keep yourself updated with the latest news on the csPorter for C++
  • Video Tutorials– Watch csPorter for C++ video tutorials

Start a Free Trial Today

Start a free trial today – all you need is to sign up with the csPorter. Once you have signed up, you are ready to try the csPorter for C++ and port your C# projects to C++.

You can easily download the csPorter for C++ Application for evaluation. The evaluation download is the same as the purchased download.  The evaluation version (without a license specified) provides full product functionality, but it limits the input C# project structure.

If you want to test the csPorter for C++ Application without the evaluation version limitations, you can also request a 30-days Temporary License. Please refer to How to get a Temporary License?

Posted in csPorter for C++ | Tagged , , , , | Leave a comment

Improved Code Porting of XML and Strings in csPorter for C++ 18.10

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

We are pleased to announce new monthly release of csPorter for C++ 18.10. This is a maintenance release that contains number of improvements and bug fixes. Some important fixes are XML and Strings related issues that further improves the overall stability and usability of csPorter for C++. Please check the release notes in order to get an idea about what is new and what has been enhanced or fixed with this revision of csPorter for C++.

Improvements and Fixes

These are the new features included in this regular monthly release:

  • Null reference error fixed when accessing namespace of XmlAttribute without any namespace set
  • Fixed runtime error when setting InnerText for XmlNode with no parent XmlDocument
  • Added missing overloads of XslCompiledTransform::Tranform() methods
  • Behavior of XmlTextWriter class now matches such of .Net class regarding spaces and EOL symbols
  • Fixed runtime error when assigning A object only referenced by B object to SmartPtr holding last reference to B
  • Several potential memory leaks related to WeakPtr usage are fixed
  • Support of several System::ComponentModel classes was added. Related API is fixed
  • Issue with XmlTextReader::ReadString() invalidating reader if element is empty is fixed
  • Incorrect work of Convert::ToString() function with DateTime type is fixed
  • Translation of concatenation between string and enum types is fixed
  • Detection of String vs bool overload is switched to fully automatic mode. CppForceStringParam attribute is still available e. g. for String vs TypeInfo cases
  • Translation of surrogate pairs inside string literals is fixed
  • Errors detected during Xml files parsing no longer go into stderr by default. To change this behavior, use ASPOSE_LIBXML2_ERROR_OUTPUT_CHANNEL system variable with possible values of ‘stderr’, ‘stdout’, ‘debug’, ‘null’ or ‘file:<filename>’
  • Platform checks are improved in Nuget package
  • Fixed porter not taking config into account when translating System.Char references
  • 64-bit integer to string conversions behavior was synchronized with .NET when it comes to trailing and leading spaces. Also, performance is improved
  • Shorter, more convenient directory name is provided inside release package

Public API Changes

We have made following breaking API changes in csPorter for C++ 18.10 version:

  • Several previously unsupported overloads of System::Xml::Xsl::XslCompiledTransform::Transform() method are added
  • Support of the following classes is added:
    • System::ComponentModel::AsyncCompletedEventArgs
    • System::ComponentClass::BackgroundWorker
    • System::ComponentWorker::ProgressChangedEventArgs
    • System::ComponentModel::RunWorkerCompletedEventArgs
    • System::Reflection::TargetInvocationException
  • Support of System::Threading::WaitHandle::WaitOne(const System::TimeSpan &timeout) method is added
  • char16_t_array type renamed to system_char_array. const_char16_t_array type renamed to const_system_char_array
  • System::Char::IsAsciiWhiteSpace() method is added

Resources

  • Product Home Page– Gives you detailed overview about the csPorter for C++
  • Online documentation– Complete help documentation.
  • Download– Download latest release of the csPorter for C++
  • API Reference Guide– Details of the namespaces and classes of the API linked with the ported C++ Code
  • GitHub Examples– Provides ready to port Example Projects
  • Support Forum– Write to us if you have any query or inquiry about the csPorter for C++
  • Blog– Do not limit yourself, enable Blog subscription and keep yourself updated with the latest news on the csPorter for C++
  • Video Tutorials– Watch csPorter for C++ video tutorials

Start a Free Trial Today

Start a free trial today – all you need is to sign up with the csPorter. Once you have signed up, you are ready to try the csPorter for C++ and port your C# projects to C++.

You can easily download the csPorter for C++ Application for evaluation. The evaluation download is the same as the purchased download.  The evaluation version (without a license specified) provides full product functionality, but it limits the input C# project structure.

If you want to test the csPorter for C++ Application without the evaluation version limitations, you can also request a 30-days Temporary License. Please refer to How to get a Temporary License?
Posted in csPorter for C++ | Tagged , , , , | Leave a comment

First Public Release of csPorter for C++

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Since the reveal of an innovative software development product demands its existence in various popular programming languages/platforms, the code porting has become really a great challenge. As we already shared that we were working over a code porting solution to convert C# codebase to C++, we are pleased to launch its first version, csPorter for C++ 18.9. It is a solution for fully automated code conversion between C# and C++. It will enable developers to port their C# projects/applications to C++ codebase with full control and it will save their time and efforts used for manual porting process. The csPorter for C++ consists of three components; Porter, GUI and Library. The Porter is a command line application used to port C# code to C++. The csPorter for C++ GUI is an application provides graphical interface to the Porter for porting C++ Projects in user-friendly environment. And the CsPorter for C++ provides a special support library which comes in pre-compiled form for all supported platforms and exposes equivalents for .NET native types that can be used by both ported code and user code that works with it. API Preservation, Type System Reproduction, Memory Management, Ported Code Overriding are some of the salient features of the csPorter for C++. Please check documentation for complete list of the features.

The following sections describe some of the features of the csPorter for C++.

Source Code to Source Code

The csPorter for C++ application needs source code of C# project for porting rather than compiled assembly. This allows reproducing even internal classes and routines in the same way in ported C++ code as they are implemented in original C# code. It is impossible to use the csPorter for C++ on IL code produced by C# compiler.

Once you have converted your project to C++, you can build it for any of supported target platforms.

External Dependencies

C# code can have dependencies from the libraries you don’t have source for, or there can be legal situation preventing one from porting the code. In such cases, there is a way to substitute manually written code as a replacement for dependency code which is not available for porting. There are special rules for how to implement your API in such a way so it can be used with ported code. Except for API, there are no requirements on how to implement such parts of the code, so you can use third party library available on your target platform.

Unit Tests

The csPorter for C++ application support to port C# unit tests written using the NUnit and XUnit frameworks to C++ and run tests on ported code. Ported tests can then be run on ported code. So, if original code is covered with unit tests, ported code is also covered.

Documentation

You can get detailed information about the csPorter for C++ by visiting the documentation. It is a complete guide about the application which helps you understand the application and convert your C# projects to C++ codebase with ease.

Got Questions?

We’re open to feedback! Visit the csPorter for C++ forum and tell us what we can do to make the csPorter for C++ application fit your needs better. You can share your findings, difference of results, new feature requests and inquiries with us via this forum. This will help us improve the overall Product quality and usability in terms of usage.

Resources

  • Product Home Page– Gives you detailed overview about the csPorter for C++
  • Online documentation – Complete help documentation.
  • Download– Download latest release of the csPorter for C++
  • API Reference Guide– Details of the namespaces and classes of the API linked with the ported C++ Code
  • GitHub Examples– Provides ready to port Example Projects
  • Support Forum– Write to us if you have any query or inquiry about the csPorter for C++
  • Blog – Do not limit yourself, enable Blog subscription and keep yourself updated with the latest news on the csPorter for C++
  • Video Tutorials – Watch csPorter for C++ video tutorials

Start a Free Trial Today

Start a free trial today – all you need is to sign up with the csPorter. Once you have signed up, you are ready to try the csPorter for C++ and port your C# projects to C++.

You can easily download the csPorter for C++ Application for evaluation. The evaluation download is the same as the purchased download.  The evaluation version (without a license specified) provides full product functionality, but it limits the input C# project structure.

If you want to test the csPorter for C++ Application without the evaluation version limitations, you can also request a 30-days Temporary License. Please refer to How to get a Temporary License?

Posted in csPorter for C++ | Tagged , , , , | Leave a comment

Launching csPorter for C++ – A Tool for Auto Porting of C# Projects to C++

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Code porting has become very popular and high demanding among the Software development community to present their solution for multiple platforms. The csPorter team is going to reveal a smart code porting tool, csPorter for C++. It is an application which automatically ports C# projects to C++ with high accuracy. It saves hundreds of development hours and money that helps to release the same version of the software for different platforms. It converts C# codebase to C++ in such a way that it can be used by C++ developers in the same way as if it was originally developed in this language. This product has already been extensively used to port many .NET Products to C++ codebase. The csPorter for C++ provides complete documentation, working examples and free support so that developers can learn it quickly and use with ease.

csPorter for C++

The main goal of the csPorter for C++ is to port an existing enterprise level C# project to C++ libraries automatically. The input for the csPorter for C++ is a C# project and a configuration file that contains options governing different aspects of the conversion process. Its output is a set of .cpp and .h files and a set of Cmake configuration files which can be used to generate project files and makefiles and build the sources for one of the supported platforms/compilers.

It is designed to keep the memory footprint as small as reasonably possible. For this purpose a .NET to C++ API bridging library is distributed with the ported C++ Project. The ported C++ code relies on the bridging library that provides .NET-like APIs for C++ and follows the same design principles regarding speed and memory usage. Following are some key features of the csPorter for C++:

  • Source code to source code
  • API preservation
  • Type system reproduction
  • Memory management model
  • Porting control
  • Support library
  • Typemap
  • Ported code overriding
  • Satisfying External Dependencies
  • UnitTests Porting

How It Works?

The csPorter for C++ provides two different options to port C# code into equivalent C++ code. You just need to download latest release of the csPorter for C++ and use any option of your choice. 

Initial Release Availability

We are currently working on finalizing the csPorter for C++ release process and intend to share this publicly soon. So, stay tuned for further news about this upcoming porting application. You can reach us on csPorter forum for your queries related to the product and we will be more than happy to assist you in this regard.

Posted in csPorter for C++ | Leave a comment