1. OMG Mailing List
  2. IDL4 to C# Language Mapping (IDL4-CSHARP) 1.1 RTF mailing list

All Issues

  • All Issues
  • Name: idl4-csharp-rtf
  • Issues Count: 14

Issues Descriptions

Bitset example misses value initialization of members

  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    For all C++ struct members that do have a name the {} value initialization is missing to make sure they are initialized to their default value on default construction

  • Reported: IDL4-CPP 1.0b2 — Fri, 22 Nov 2024 10:56 GMT
  • Updated: Mon, 2 Dec 2024 19:30 GMT

Destructor should be virtual

  • Status: open  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    As the class ValueFactoryBase has no base class the destructor should be virtual and not override, same error is made in more examples

  • Reported: IDL4-CPP 1.0b2 — Thu, 26 Sep 2024 11:32 GMT
  • Updated: Fri, 27 Sep 2024 19:37 GMT

long in C++ code

  • Key: IDL4CPP-33
  • Status: closed  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    In the example code there is "using Length = long;", but long is not portable, shouldn't be this be int32_t?

  • Reported: IDL4-CPP 1.0b1 — Tue, 16 Jan 2024 09:46 GMT
  • Disposition: Resolved — IDL4-CPP 1.0b2
  • Disposition Summary:

    Replace use of C++ long in example code with int32_t

    IDL longs are mapped to C++ int32_t, the example in clause 7.2.4.6 makes the mistake of mapping a typedef long to a using of long instead of int32_t.

  • Updated: Mon, 16 Sep 2024 14:15 GMT

Implicit default and constructor

  • Key: IDL4CPP-32
  • Status: closed  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    Spec says:

    If the union has a default case, the default constructor shall initialize the discriminator, and the selected
    member field following the initialization rules described in Clause 7.2.4.3.1. If it does not, the default
    constructor shall initialize the union to the first discriminant value specified in the IDL definition.

    But when there is an implicit default member, that should be selected, for example, the example below (

      enum DataType
      {
        dtEmpty,
        dtLong,
        dtShort,
        dtString,
        dtPoint,
        dtTrack,
        dtGlobal
      };
    
      union Data switch (DataType)
        {
          case dtLong: long longData;
          case dtShort: short shortData;
          case dtString: string stringData;
          case dtPoint: string pointData;
          case dtTrack: string trackData;
          case dtGlobal: string globalData;
          // by default (implicit), empty union
        };
    
  • Reported: IDL4-CPP 1.0b1 — Tue, 16 Jan 2024 09:36 GMT
  • Disposition: Deferred — IDL4-CPP 1.0b2
  • Disposition Summary:

    Defer the resolution of this issue to the resolution of the related IDL RTF issue

    This issue is deferred until the resolution IDL43-94.

  • Updated: Mon, 16 Sep 2024 14:15 GMT

Problem with member accessor

  • Status: open  
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    The spec gives:

    const <MemberType>& <MemberName>() const

    But for basic types/int this will result in a warning, for basic/enum it should be

    <MemberType> <MemberName>() const

  • Reported: IDL4-CPP 1.0b1 — Tue, 4 Apr 2023 07:47 GMT
  • Updated: Tue, 4 Apr 2023 19:11 GMT

Spec should specify behaviour

  • Status: open  
  • Source: Remedy IT Expertise BV ( Johnny Willemsen)
  • Summary:

    The spec says:

    A public constant accessor method with the name of the union member that returns a constant reference to
    its value:
    const <MemberType>& <MemberName>() const;
    Accessing an invalid union member may result in an undefined error.

    A language mapping should be precise and very clear to my idea, the user should know what happens if an invalid union member is accessed, this could happen in some cases, the spec should specify which exception will be thrown so that the programmer can react on this, saying it is undefined is not enough.

  • Reported: IDL4-CPP 1.0b1 — Wed, 29 Mar 2023 07:50 GMT
  • Updated: Fri, 31 Mar 2023 18:26 GMT

The class shall implement the IEquatable interface, where T is the corresponding class name.

  • Status: open  
  • Source: Objective Interface Systems ( Mr. Chuck Abbott)
  • Summary:

    This should be changed to a "may" or a "could". Shall seems overly prescriptive.

    How could a compliant implementation of Equals<T> be distinguished from Equals(Object) from the callers/users perspective?

  • Reported: IDL4-CSHARP 1.0 — Mon, 30 Aug 2021 21:22 GMT
  • Updated: Wed, 8 Sep 2021 15:00 GMT

Use of annotations as part of IDL example do not provide a clean example

  • Status: open  
  • Source: Objective Interface Systems ( Mr. Chuck Abbott)
  • Summary:

    The annotations should be covered in a separate section of the document and NOT be part of a clean, canonical example.

    Suggest:
    // IDL
    enum E

    {x, y, z}

    ;

    // C#
    public enum E

    { x, y, z }

    ;

    Also should enums inherit uint?

  • Reported: IDL4-CSHARP 1.0 — Mon, 30 Aug 2021 21:28 GMT
  • Updated: Wed, 8 Sep 2021 15:00 GMT

Use of anonymous array type in array section

  • Status: open  
  • Source: Objective Interface Systems ( Mr. Chuck Abbott)
  • Summary:

    Anonymous types should be moved to their own section

    Suggest:

    //IDL
    typedef long myLongArray[2][3];

    // C# example

  • Reported: IDL4-CSHARP 1.0 — Mon, 30 Aug 2021 21:32 GMT
  • Updated: Wed, 8 Sep 2021 15:00 GMT

Sections mapped to naming schemes complicates the document

  • Status: open  
  • Source: Objective Interface Systems ( Mr. Chuck Abbott)
  • Summary:

    Suggestion is to have one section or appendix where possible naming mappings could be covered.

    Change the IDL example naming to match the C# community expectations if that makes it easier to specify

  • Reported: IDL4-CSHARP 1.1b1 — Mon, 30 Aug 2021 21:18 GMT
  • Updated: Wed, 8 Sep 2021 14:22 GMT

A canonical example for sequences is missing

  • Status: open  
  • Source: Objective Interface Systems ( Mr. Chuck Abbott)
  • Summary:

    Beside basic types no other canonical example is included. I suggest removing the basic types and having one example.

    // IDL
    struct foo

    {...};
    typedef sequence<foo> fooSeq;

    // C#
    class fooSeq : IDL:ISequences<foo> {...}

    ;

    Something like this.

  • Reported: IDL4-CSHARP 1.0 — Mon, 30 Aug 2021 21:13 GMT
  • Updated: Wed, 8 Sep 2021 14:22 GMT

Basic types include extended types

  • Status: open  
  • Source: Objective Interface Systems ( Mr. Chuck Abbott)
  • Summary:

    Types such as sbyte and int32 are included in this section and should not be.

    These types should be moved to the extended types section.

    The section for these types is missing from the document.

  • Reported: IDL4-CSHARP 1.1b1 — Mon, 30 Aug 2021 21:09 GMT
  • Updated: Wed, 8 Sep 2021 14:21 GMT

Union implicit default

  • Status: open  
  • Source: Objective Interface Systems ( Mr. Chuck Abbott)
  • Summary:

    The section that describes the default value does not include a discussion
    of what to do when a default is not present. In this case a method called _default or
    __default should be defined to set the discriminant to a non-switched field value.
    This should be fixed before December.

  • Reported: IDL4-CSHARP 1.1b1 — Wed, 24 Mar 2021 13:57 GMT
  • Updated: Thu, 1 Apr 2021 15:55 GMT

Partial classes cannot span assemblies

  • Status: open  
  • Source: Objective Interface Systems ( Mr. Chuck Abbott)
  • Summary:

    Every scope containing a constant declaration shall contain a public static partial class.

    The "public static partial class" is inconsistent with the examples in 7.2.3.1 above.

    The use of "partial" is suspect and cannot span assemblies. It may be useful for forward interface declarations though whose definition appears in another IDL file.

  • Reported: IDL4-CSHARP 1.1b1 — Wed, 24 Mar 2021 13:22 GMT
  • Updated: Wed, 24 Mar 2021 13:47 GMT