CORBA 2.4 MAILINGLIST Avatar
  1. OMG Issue

CORBA24 — Valuetypes with multiple interfaces

  • Key: CORBA24-88
  • Legacy Issue Number: 3589
  • Status: closed  
  • Source: Triodia Technologies Pty Ltd ( Michi Henning)
  • Summary:

    consider the following, which as valid IDL as best as I can figure out:

    interface I1 {};
    abstract valuetype V1 supports I1 {};

    interface I2 {};
    abstract valuetype V2 supports I2 {};

    interface I3 {};
    valuetype V3 : V1, V2 supports I3 {};

    The above raises some very interesting issues. For one, this can't be
    mapped into C++ for a number of reasons (largely having to do with
    ambiguous multiple inheritance). However, there much deeper issues here
    relating to the object model. Some questions:

    • What is the type of the a V3 instance?
    • What is the repository ID of that instance?
    • What is the return value of a call to _this()?
    • What is the result of invoking

    is_a("IDL:I1");
    is_a("IDL:I2");
    is_a("IDL:I3");

    on an I3 reference?

    • What are the results of I1::narrow(), I2::narrow(), and I3::narrow()
      on an I3 reference?
    • What is returned by a call to get_interface()?
    • What are the results of traversing the above in an IFR?

    There are probably more questions along these lines. They all aim at
    the fact that the above construct effectively creates an object that has
    multiple unrelated interfaces. This flies in the face of the CORBA
    type system, which fundamentally requires every object to have exactly
    one most-derived type.

    I think we need to put the axe through constructs such as the one above
    in a hurry!

  • Reported: CORBA 2.3.1 — Fri, 28 Apr 2000 04:00 GMT
  • Disposition: Resolved — CORBA 2.4
  • Disposition Summary:

    Resolve no change with explanation as above.

  • Updated: Fri, 6 Mar 2015 20:58 GMT