diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-04-10 02:20:09 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2001-04-10 02:20:09 +0000 |
commit | f5ea21ef1b15c9411e6ea65dec51b811c89e4bdd (patch) | |
tree | 3c0f762f7897a934668accfa52120eb91650010f /TAO/examples | |
parent | 6ccaf66ca05c15bdf1f8efb700ddc3b2fcd8721c (diff) | |
download | ATCD-f5ea21ef1b15c9411e6ea65dec51b811c89e4bdd.tar.gz |
ChangeLogTag: Mon Apr 9 21:05:07 2001 Jeff Parsons <parsons@cs.wustl.edu>
Diffstat (limited to 'TAO/examples')
-rw-r--r-- | TAO/examples/TypeCode_Creation/main.cpp | 51 | ||||
-rw-r--r-- | TAO/examples/TypeCode_Creation/test.idl | 9 |
2 files changed, 47 insertions, 13 deletions
diff --git a/TAO/examples/TypeCode_Creation/main.cpp b/TAO/examples/TypeCode_Creation/main.cpp index 079fb85fdea..52112b176e0 100644 --- a/TAO/examples/TypeCode_Creation/main.cpp +++ b/TAO/examples/TypeCode_Creation/main.cpp @@ -16,37 +16,68 @@ int main(int argc, char *argv[]) ACE_TRY_ENV); ACE_TRY_CHECK; - CORBA::TypeCode_ptr iface_tc = + CORBA::TypeCode_var iface_tc = orb->create_interface_tc (CORBA::string_dup ("IDL:iface:1.0"), CORBA::string_dup ("iface"), ACE_TRY_ENV); ACE_TRY_CHECK; - CORBA::ULong length = 2; + CORBA::ULong length = 5; - CORBA::StructMemberSeq foo_members (length); + CORBA::UnionMemberSeq foo_members (length); foo_members.length (length); + // The first three members are multiple case labels for a + // single string member. The label values are not in order + // or consecutive. + foo_members[0].name = CORBA::string_dup ("foo_str_member"); + + // The type member of the UnionMember takes ownership. foo_members[0].type = CORBA::TypeCode::_duplicate (CORBA::_tc_string); // Not needed for ORB-created typecodes // (see CORBA 2.4.2 section 10.7.3). foo_members[0].type_def = CORBA::IDLType::_nil (); + CORBA::Short label_value = -3; + foo_members[0].label <<= label_value; - foo_members[1].name = CORBA::string_dup ("foo_iface_member"); - - // StructMember.type takes ownership. - foo_members[1].type = iface_tc; - + foo_members[1].name = CORBA::string_dup ("foo_str_member"); + foo_members[1].type = CORBA::TypeCode::_duplicate (CORBA::_tc_string); foo_members[1].type_def = CORBA::IDLType::_nil (); - - CORBA::TypeCode_ptr foo_tc = orb->create_struct_tc ("IDL:foo:1.0", + label_value = 4; + foo_members[1].label <<= label_value; + + foo_members[2].name = CORBA::string_dup ("foo_str_member"); + foo_members[2].type = CORBA::TypeCode::_duplicate (CORBA::_tc_string); + foo_members[2].type_def = CORBA::IDLType::_nil (); + label_value = -1; + foo_members[2].label <<= label_value; + + // The default member. + foo_members[3].name = CORBA::string_dup ("foo_iface_member"); + foo_members[3].type = CORBA::TypeCode::_duplicate (iface_tc.in ()); + foo_members[3].type_def = CORBA::IDLType::_nil (); + CORBA::Octet default_label_value = 0; + foo_members[3].label <<= CORBA::Any::from_octet (default_label_value); + + // The last member is the same type as the previous one, but has + // a different name. + foo_members[4].name = CORBA::string_dup ("foo_iface_member2"); + foo_members[4].type = CORBA::TypeCode::_duplicate (iface_tc.in ()); + foo_members[4].type_def = CORBA::IDLType::_nil (); + label_value = 0; + foo_members[4].label <<= label_value; + + CORBA::TypeCode_ptr foo_tc = orb->create_union_tc ("IDL:foo:1.0", "foo", + CORBA::_tc_short, foo_members, ACE_TRY_ENV); ACE_TRY_CHECK; + length = 2; + CORBA::StructMemberSeq bar_members (length); bar_members.length (length); diff --git a/TAO/examples/TypeCode_Creation/test.idl b/TAO/examples/TypeCode_Creation/test.idl index 2ad83b62f14..5633d769d46 100644 --- a/TAO/examples/TypeCode_Creation/test.idl +++ b/TAO/examples/TypeCode_Creation/test.idl @@ -10,10 +10,13 @@ interface iface {}; -struct foo +union foo switch (short) { - string foo_str_member; - iface foo_iface_member; + case -3: + case 4: + case -1: string foo_str_member; + default: iface foo_iface_member; + case 0: iface foo_iface_member2; }; struct bar |