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:
Update: typo, this should bemy $any = new CORBA::Any($CORBA::MyModule::MyData::_tc, $struct);
(Only CORBA base types are stored in the CORBA module, e.g., $CORBA::_tc_float;)my $any = new CORBA::Any($MyModule::MyData::_tc, $struct);
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
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |