The process of creating an instance of type any involves wrapping a bit of data in a two-slot array in which one slot contains the object's TypeCode and the other contains the data to be passed. The TypeCode is necessary for proper marshalling and unmarshalling since the whole point of an any is that it really can be anything at all, but the TypeCode serves as a kind of metadata to bring some sanity to process.

The COPE package provides a constructor for instantiating any's in package CORBA::Any, but you need to provide the correct TypeCode in order for it to work. Based on the IDL supplied, the Perl code would be this:

my $any = new CORBA::Any($CORBA::MyModule::MyData::_tc, $struct);
Update: typo, this should be
my $any = new CORBA::Any($MyModule::MyData::_tc, $struct);
(Only CORBA base types are stored in the CORBA module, e.g., $CORBA::_tc_float;)

Examine the file MyData_types.pm and you'll see the code there that sets the value of the first parameter. For more examples see the COPE test suites, in particular COPE/t/base2.t


In reply to Re: COPE and 'any' data type by djantzen
in thread COPE and 'any' data type by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.