in reply to COPE and 'any' data type
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: COPE and 'any' data type
by Anonymous Monk on Jul 03, 2002 at 05:20 UTC | |
by Anonymous Monk on Jul 04, 2002 at 02:51 UTC |