[omniORB] I'm beginner. I need help about sequence manipulation.
Luke Deller
ldeller at xplantechnology.com
Wed Nov 3 10:43:37 GMT 2004
unixwrld wrote:
> Hi, I have got my IDL file sample.idl:
>
> interface sample {
> typdef struct struct_SAMPLE {
> long number;
> char text[32];
> } SAMPLE;
>
> typedef sequence<SAMPLE> SAMPLES;
> void ShowData(out SAMPLES s);
> };
I suppose you haven't tried compiling this yet...
(1) You can't have two types which differ only in case (ie "sample" and "SAMPLE"). This is so that CORBA can support case-insensitive languages.
(2) "typdef" should be typedef.
Some stylistic points:
(3) There's no need for a typedef for the struct in this example
(4) CORBA has a type for text strings called "string". If you want to limit the length of the string you can use for example "string<32>". If you want to send binary data, use "octet"/"sequence<octet>" rather than "char"/"string".
I'll answer your next question assuming the following IDL:
interface foo {
struct SAMPLE {
long number;
string text;
};
typedef sequence<SAMPLE> SAMPLES;
void ShowData(out SAMPLES s);
};
> Now, I have got the follow prototype:
>
> void SAMPLE::ShowData(SAMPLES_out s)
>
> But I don't know how to alloc memory and data to "s".
Try something like this:
s = new foo::SAMPLES();
s->length(1)
s[0].number = 42;
s[0].text = CORBA::string_dup("foo");
Information like this can be found in the C++ language mapping specification found here:
http://www.omg.org/technology/documents/formal/c++.htm
Language-neutral information about CORBA and IDL can be found in the CORBA spec here:
http://www.omg.org/technology/documents/formal/corba_iiop.htm
Also, if you're learning CORBA, there's a book by Henning & Vinoski called "Advanced CORBA Programming with C++" which is pretty much the standard textbook in this area:
http://www.awprofessional.com/title/0201379279
Regards,
Luke.
More information about the omniORB-list
mailing list