IDL to C++11 Language Mapping Avatar
  1. OMG Specification

IDL to C++11 Language Mapping — All Issues

  • Acronym: CPP11
  • Issues Count: 12
  • Description: All Issues
Open Closed All
All Issues

Issues Descriptions

Add mapping for IDL4.2 standardized annotations

  • Key: CPP1116-4
  • Status: closed   Implementation work Blocked
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    IDL4.2 defines in section 8.3 a set of standardized annotations where it looks some of them impact the IDL to C++11 language mapping like @optional, @final, @range, @default and maybe others. There should be a new paragraph in the IDL to C++11 language mapping which describes how these standardized annotations map to C++11, like @optional to std::optional, @final to final, etc

  • Reported: CPP11 1.4 — Thu, 1 Apr 2021 16:24 GMT
  • Disposition: Deferred — CPP 1.6
  • Disposition Summary:

    Defer work on this issue

    IDL 4.2 has 24 Standardized Annotations which vary widely in terms of their applicability to a language mapping. Since other RTF issues request specific annotations that are more urgent, defer this broad issue to the next RTF.

  • Updated: Thu, 31 Mar 2022 19:32 GMT

Replace ServantBase with Servant

  • Key: CPP1116-1
  • Status: closed  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    In the TIE chapter replace ServantBase with Servant, ServantBase is from the old IDL to C++ spec, in C++11 this should be Servant, see CPP1115-2

  • Reported: CPP11 1.4 — Fri, 30 Oct 2020 15:03 GMT
  • Disposition: Resolved — CPP 1.6
  • Disposition Summary:

    Replace ServantBase with Servant

    The term ServantBase appears in section 6.26.8, this is a holdover from the original IDL-to-C++ mapping. The term Servant should now replace it.

  • Updated: Thu, 31 Mar 2022 19:32 GMT

IDL4 Extended Data-Types: struct inheritance

  • Key: CPP1115-18
  • Status: closed  
  • Source: Object Computing, Inc. - OCI ( Mr. Adam Mitz)
  • Summary:

    The IDL to C++11 language mapping section 6.31 should be extended for struct inheritance as it is now part of IDL4 (Building Block Extended Data-Types)

  • Reported: CPP11 1.4 — Fri, 9 Oct 2020 13:31 GMT
  • Disposition: Resolved — CPP11 1.5
  • Disposition Summary:

    Support for struct inheritance

    Add mapping for IDL4 struct inheritance

  • Updated: Mon, 29 Mar 2021 12:21 GMT

Add support for int8

  • Key: CPP1115-4
  • Status: closed  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    Add support for int8 which is a new type, the other (u)int(8/16/32/64) are just aliases so don't need to be in the language mapping

  • Reported: CPP11 1.4 — Tue, 22 Sep 2020 06:20 GMT
  • Disposition: Resolved — CPP11 1.5
  • Disposition Summary:

    Add int8/uint8 mapping

    Add a new subsection in 6.31 for IDL int8/uint8

  • Updated: Mon, 29 Mar 2021 12:21 GMT

Example V_factory should list deleted assignment/copy

  • Key: CPP1115-9
  • Status: closed  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    The V_factory should have deleted assignment/copy so add
    private:
    V_factory (const V_factory&) = delete;
    V_factory (V_factory&&) = delete;
    V_factory& operator =(const V_factory&) = delete;
    V_factory& operator =(V_factory&&) = delete;

    In the text change
    Each generated factory class has a protected virtual destructor, a protected default constructor.
    to
    Each generated factory class has a protected virtual destructor, a protected default constructor, deleted copy/move constructors, and deleted copy/move assignment operators

  • Reported: CPP11 1.4 — Mon, 28 Sep 2020 14:49 GMT
  • Disposition: Resolved — CPP11 1.5
  • Disposition Summary:

    Add deleted special member functions to type-specific value factories

    Use the "= delete" feature of C++11.

  • Updated: Mon, 29 Mar 2021 12:21 GMT

Copy/move assignment operators should be deleted

  • Key: CPP1115-7
  • Status: closed  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    ValueBase has only a protected copy/move copy constructor to allow a derived class to make a copy, the assignment operators are deleted, because of this also for a valuebox the assignment operators should be deleted, so the 3rd bullet should be updated from

    Protected copy and move assignment operators

    to

    Private deleted copy and move assignment operators

    And in the code example

    ColorValue& operator=(const ColorValue&);
    ColorValue& operator=(ColorValue&&);

    to

    ColorValue& operator=(const ColorValue&) = delete;
    ColorValue& operator=(ColorValue&&) = delete;

  • Reported: CPP11 1.4 — Mon, 28 Sep 2020 14:36 GMT
  • Disposition: Duplicate or Merged — CPP11 1.5
  • Disposition Summary:

    Duplicates issues CPP1115-5

    This appears to be a duplicate

  • Updated: Mon, 29 Mar 2021 12:21 GMT

valuebox should be final

  • Key: CPP1115-6
  • Status: closed  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    The valuebox created should be using final, so add to the bullets of 6.18.7.2 a first bullet saying "Must be final" and change in the code
    class ColorValue : public ValueBase
    to
    class ColorValue : public ValueBase final

  • Reported: CPP11 1.4 — Mon, 28 Sep 2020 14:22 GMT
  • Disposition: Resolved — CPP11 1.5
  • Disposition Summary:

    Use the C++ final specifier on value box classes

    Make use of the "final" capability of C++11

  • Updated: Mon, 29 Mar 2021 12:21 GMT

Copy/move assignment operators should be deleted

  • Key: CPP1115-5
  • Status: closed  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    ValueBase has only a protected copy/move copy constructor to allow a derived class to make a copy, the assignment operators are deleted, because of this also for a valuebox the assignment operators should be deleted, so the 3rd bullet should be updated from

    Protected copy and move assignment operators

    to

    Private deleted copy and move assignment operators

    And in the code example

    ColorValue& operator=(const ColorValue&);
    ColorValue& operator=(ColorValue&&);

    to

    ColorValue& operator=(const ColorValue&) = delete;
    ColorValue& operator=(ColorValue&&) = delete;

  • Reported: CPP11 1.4 — Mon, 28 Sep 2020 14:06 GMT
  • Disposition: Resolved — CPP11 1.5
  • Disposition Summary:

    Value box classes shouldn't be assignable

    Update to work with ValueBase

  • Updated: Mon, 29 Mar 2021 12:21 GMT

Missing deleted assignment/copy operators

  • Key: CPP1115-8
  • Status: closed  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    ValueFactoryBase should have deleted assignment/copy operators so add to the code part

    private:
    ValueFactoryBase (ValueFactoryBase&&) = delete;
    ValueFactoryBase (const ValueFactoryBase&) = delete;
    ValueFactoryBase& operator =(const ValueFactoryBase&) = delete;
    ValueFactoryBase& operator =(ValueFactoryBase&&) = delete;

  • Reported: CPP11 1.4 — Mon, 28 Sep 2020 14:38 GMT
  • Disposition: Resolved — CPP11 1.5
  • Disposition Summary:

    Add deleted special member functions to ValueFactoryBase

    Use the C++11 "= delete" feature for ValueFactoryBase.

  • Updated: Mon, 29 Mar 2021 12:21 GMT

Operations tagged with override shouldn't have virtual

  • Key: CPP1115-3
  • Status: closed  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    Any C++11 operation in the spec which uses override shouldn't have virtual, that is redundant and shouldn't be done, so for example

    virtual void val2 (int32_t) override;

    Should be

    void val2 (int32_t) override;

    Easiest is to search for override and check that any operation that has override doesn't have virtual

  • Reported: CPP11 1.4 — Fri, 18 Sep 2020 08:23 GMT
  • Disposition: Resolved — CPP11 1.5
  • Disposition Summary:

    Remove uses of the C++ virtual keyword that aren't needed

    Member functions declared with "override" should not also have "virtual"

  • Updated: Mon, 29 Mar 2021 12:21 GMT

_default_POA should use override

  • Key: CPP1115-2
  • Status: closed  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    The operation _default_POA currently declared as

    IDL::traits<PortableServer::POA>::ref_type _default_POA()

    Should be

    IDL::traits<PortableServer::POA>::ref_type _default_POA() override

    Also the formatting of the constructor of the TIE template should be changed, hard to read. Initializing the members could use std::move so change

    : tied_object_(t), poa_(poa)

    to

    : tied_object_(std::move(t)), poa_(std::move(poa))

  • Reported: CPP11 1.4 — Fri, 18 Sep 2020 07:43 GMT
  • Disposition: Resolved — CPP11 1.5
  • Disposition Summary:

    Updated code for Delegation-Based Interface Implementation

    Update code to reflect C++ best practices

  • Updated: Mon, 29 Mar 2021 12:21 GMT

Add support for bitset/bitfield/bitmask

  • Key: CPP1115-1
  • Status: closed  
  • Source: Remedy IT ( Johnny Willemsen)
  • Summary:

    The IDL to C++11 language mapping section 6.31 should be extended for bitset/bitfield/bitmask from IDL4 (Building Block Extended Data-Types)

  • Reported: CPP11 1.4 — Fri, 18 Sep 2020 07:03 GMT
  • Disposition: Resolved — CPP11 1.5
  • Disposition Summary:

    Bitset and Bitmask mapping

    Bitsets and bitmasks are "top-level" IDL4 extended data types that can each be mapped to C++11.

  • Updated: Mon, 29 Mar 2021 12:21 GMT