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. Developer Guide
    5. Limitations and Bugs
    6. Library Limitations and Bugs

    Library Limitations and Bugs

    What's on this Page

      • Library Limitations and Bugs
        • Only strongly typed collection classes are implemented by the Library
        • Class System::Nullable is not fully implemented
        • Method Convert() of System::Text::Encoder class does not throw in some situations
        • Return value of method ToString() of System::Type class may be not what is expected
        • Operations with instances of System::Object class imposes a performance penalty
        • Behavior of classes from System::Globalization namespace may be not what is expected
        • Support of reflection classes from System::Reflection namespace is not complete
        • EMF image format is not supported by the Library
        • Default font is not substituted for missing glyphs
        • Rendering does not work exactly like in .NET

    Library Limitations and Bugs

    This page contains Library Limitation and Bugs.

    Only strongly typed collection classes are implemented by the Library

    Library does not provide implementation of collection classes and interfaces disigned to deal with heterogenuous collections of objects. Only generic classes and interfaces representing strongly typed collections defined in .NET library’s System.Collections.Generic namespace are implemented and supported by Libray.

    Class System::Nullable is not fully implemented

    Class System::Nullable does not have GetValueOrDefault() method overload that takes no arguments.

    Method Convert() of System::Text::Encoder class does not throw in some situations

    The .NET version of method System::Text::Encoder::Convert() throws ArgumentException exception if the output buffer passed to the method is too small to contain any of the converted input. The Library’s version of this method does not throw exceptions in this case.

    Return value of method ToString() of System::Type class may be not what is expected

    Method Type::ToString() returns a string containig the name of the current type. For most types represented by class Type method Type::ToString() returns a value that is different from that returned by .NET version of this method. For example the following piece of C# code will print ‘System.String[]’ when executed

    string[] a = new string[3];
    System.Console.WriteLine(a.GetType().ToString());

    while corresponding C++ code

    System::ArrayPtr<System::String> a = System::MakeArray<System::String>(3);
    System::Console::WriteLine(System::ObjectExt::ToString(System::ObjectExt::GetType(a)));

    will print something like ‘class System::Array’. Note that the actual output produced by C++ code may vary depneding on the compiler used to compile the code.

    Operations with instances of System::Object class imposes a performance penalty

    Operations on entities of type System::Object (including type conversion operations) impose additional overhead which results in performance penalty. It is strongly advised to avoid using entities of type System::Object as much as possible and stick to using entities of most derived types instead.

    Behavior of classes from System::Globalization namespace may be not what is expected

    Behavior of classes from System::Globalization namespace may be slightly different from that of same classes in .NET library.

    Support of reflection classes from System::Reflection namespace is not complete

    Not all classes found in System.Reflection namespace in .NET library are provided by the library. Also, behavior of those provided may slightly deviate from that of corresponding classes in .NET library.

    EMF image format is not supported by the Library

    Classes from System::Drawing namespace do not support EMF image format.

    Default font is not substituted for missing glyphs

    In .NET, when rendering string containing rare (e. g. Japanese) characters which are not supported by the font used, default font is substituted. Our library doesn’t do substitutions like this.

    Rendering does not work exactly like in .NET

    After translating, rendering results may change.