summaryrefslogtreecommitdiff
path: root/TAO/examples
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2001-04-10 02:20:09 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2001-04-10 02:20:09 +0000
commitf5ea21ef1b15c9411e6ea65dec51b811c89e4bdd (patch)
tree3c0f762f7897a934668accfa52120eb91650010f /TAO/examples
parent6ccaf66ca05c15bdf1f8efb700ddc3b2fcd8721c (diff)
downloadATCD-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.cpp51
-rw-r--r--TAO/examples/TypeCode_Creation/test.idl9
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