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

Open Issues

  • Issues not resolved
  • Name: idl4-csharp-rtf
  • Issues Count: 12

Issues Descriptions

Implicit default and constructor

  • Key: IDL4CPP-32
  • Status: open  
  • 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
  • Updated: Wed, 21 Feb 2024 17:06 GMT

long in C++ code

  • Key: IDL4CPP-33
  • Status: open  
  • 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
  • Updated: Wed, 24 Jan 2024 16:09 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