[omniORB] Looking for examples of sequence manipulation
Perham, David A. (Mission Systems)
david.perham at ngc.com
Thu Mar 29 09:37:51 BST 2007
Thanks for the post.
I must still be doing something wrong.
This is a sample of the code I am trying to implement:
// IDL
typedef sequence <EntityInventoryType, 10> EntityInventorySequence ;
// Impl
bool ObjectServerImpl::RequestEntityInventory( long EntityId, EntityInventorySequence_out EntityInventory )
{
EntityInventorySequence*& ptr = EntityInventory.ptr() ;
(*ptr)[0].InventoryCode = 5 ;
}
This builds, however I am not very confident that it is correct, because the .NET intellisensor tool is not filling out the "InventoryCode" when I type "(*ptr)[0].".
Am I still missing something?
Thanks again for the help, I still haven't found any examples on the net.
Take care
-----Original Message-----
From: Carlos [mailto:carlos at canama.net]
Sent: Wednesday, March 28, 2007 4:04 PM
To: Perham, David A. (Mission Systems)
Cc: omniorb-list at omniorb-support.com
Subject: Re: [omniORB] Looking for examples of sequence manipulation
El mié, 28-03-2007 a las 10:48 -0700, Perham, David A. (Mission Systems)
escribió:
> Howdy:
>
> Looking for tips on how to manipulate sequences I came across this
> example in the mailing list archives.
> The example demonstrates how to create the sequence in idl, and how to
> pass a pointer to the sequence in the implementation code.
> Unfortunately, it does not show the syntax required to access this
> pointer within the implementation after it is created. In other
> words, after
>
> ptx = new MyInterface::randSeq(len,len,p);
>
> I'd like to do something with the sequence, like assign a value to
> something within it.
> For example if I have declared a sequence like this in IDL Typedef
> struct theStruct {
> short x ;
> short y ;
> } theStructType ;
> Typedef sequence <theStructType> theStructSeq ; Boolean
> DoSomethingWithTheStructSeq( out theStructSeq myStructSeq) ;
>
> And the implementation has
> Bool DoSomethingWithTheStructSeq( theStructSeq_out ss ) {
> theStructSeq *& ptx = ss.ptr() ;
> ptx = new theStructSeq(3) ;
>
> }
>
> What is the syntax to assign a value to 'x' within an element of the
> sequence?
(*ptx)[0].x = 29;
for example
and if you want to populate all the sequence
for (CORBA::ULong i = 0; i < ptx->length(); i++) {
(*ptx)[i].x = ...;
(*ptx)[i].y = ...;
}
I expect this helps you.
Cheers.
> Thanks,
> Dave P
> > Howdy,
> > Hope the following sample helps you.
> >
> > IDL: > interface MyInterface
> > {
> > typedef sequence<octet> randSeq;
> > void getRandSeq( out randSeq tx ); }
> >
> > Object Implementation:
> > void MyInterface_i::getRandSeq( randSeq_out tx )
> > {
> > MyInterface::randSeq*& ptx = tx.ptr(); //.... > CORBA::Octet* p =
> > new CORBA::Octet[ len ]; //....
> > ptx = new MyInterface::randSeq(len,len,p); }
> >
> > Client: > void hello( MyInterface_ptr e ) { MyInterface::randSeq_var
> > tx;
> > e->getRandSeq( tx.out() );
> > long len = tx.length();
> > for ( i = 0; i < len; i++ )
> > {
> > cout << tx[i] << endl; // access
> > }
> > }
>
> _______________________________________________
> omniORB-list mailing list
> omniORB-list at omniorb-support.com
> http://www.omniorb-support.com/mailman/listinfo/omniorb-list
More information about the omniORB-list
mailing list