[omniORB] Resizing a string sequence
baileyk at schneider.com
baileyk at schneider.com
Tue Nov 25 11:29:37 GMT 2003
Now that I understand the method is a remote one, and it's clear you don't
care what the contents of the sequence are at the beginning of the call, I
think the canonical way to implement your requirements are
// in the idl
attribute_list return_attributes();
// in the C++ code
attribute_list* return_attributes()
{
attribute_list_var a_l( new attribute_list );
a_l->length( /* whatever it should be */ );
for( unsigned i = 0; i < a_l->length(); ++i )
{
a_l[i] = CORBA::string_dup( /* whatever */ );
}
return a_l._retn();
}
Notice the use of a _var type for exception safety, and the use of the
operator[] call on the var type, which is available for cleaner looking
syntax.
For the most part, you can treat T_out types as if they are T* types. I
usually create a T_var to hold the value and then just before returning I
assign the value of _retn() to the T_out parameter, like so
// in the idl
void return_attributes(out attribute_list alist );
// in the C++ code
void return_attributes(attribute_list_out alist)
{
attribute_list_var a_l( new attribute_list );
a_l->length( /* whatever it should be */ );
for( unsigned i = 0; i < a_l->length(); ++i )
{
a_l[i] = CORBA::string_dup( /* whatever */ );
}
alist = a_l._retn();
return;
}
hope this helps.
Kendall
Johan Cronje
<jcronje at dsp.sun. To: Gary Duzan <gduzan at bbn.com>, baileyk at schneider.com, Duncan Grisby
ac.za> <duncan at grisby.org>
cc: omniorb-list at omniorb-support.com
11/25/2003 05:00 Fax to:
AM Subject: Re: [omniORB] Resizing a string sequence
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Tuesday 25 November 2003 02:57, Johan Cronje wrote:
> attribute_list* return_attributes()
> to
> void return_attributes(out attribute_list a_l)
This is now:
void return_attributes(inout attribute_list a_l);
Last night, for some reason (it can be I overlooked it) it generated the
"attribute_list_out" class regardless of whether I used out or inout for
the
attribute_list. Now it generated
void return_attributes(attribute_list& a_l)
which is what I expected.
> ... It is, however, very late over here and I will continue this conquest
at
> a later stage in the day.
> I am very grateful for all the help you give me. I do feel however that
at
> this moment I must first go get some rest as I feel that the answer is
> staring me in the face but I'm way too tired to see it.
How true... after implementing above method, everything is now A-OK.
Thank you again Gary, Kendall and Duncan.
Best Regards
Johan
- --
"There is beauty in simplicity" -- Johan Cronje
- ---------------------------------------------------------------
Johan Cronje
Digital Signal Processing / Telecommunications Group
Electrical and Electronic Engineering Department
University of Stellenbosch
http://www.dsp.sun.ac.za/~jcronje
- ---------------------------------------------------------------
GNUPG Key: http://www.dsp.sun.ac.za/~jcronje/jcronje.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux)
iQEVAwUBP8M2ReEeclgONaRbAQLLBgf/XQBTulrZTGlcYNJQ8BC9wKq452rABH7h
B2omUT7C/zgP6tXKMo0w/CCjyYpQbzynZYXb5CEzPlZnn50OskIcMJsoOXHmpdSA
MQwLtlFJu3/WzMtnJ7nN7BqckJ3CavDNf3aDfIhNtt3tVE7bw/Jv5BxAnJ1o5aGH
N/isuRSE03px51er3PnZ6uvXD84TVJMtfLr1xgUATn4ZbJ6yCcOcyGwI9TUrED5K
lK/ieE07vF6JPvySemR7iGGSZxqzTlD78yRGrqoBX3fCv7pVLv9Qch6xJoOEx01G
GPKHS9/zQ36I1WivFH6g69kNfO3x1kSK0gH/f5VqBx4cQtkIb0s43Q==
=S0y/
-----END PGP SIGNATURE-----
More information about the omniORB-list
mailing list