diff options
author | bala <balanatarajan@users.noreply.github.com> | 1999-09-30 21:29:12 +0000 |
---|---|---|
committer | bala <balanatarajan@users.noreply.github.com> | 1999-09-30 21:29:12 +0000 |
commit | 67da8fb2f693cd33e75360f7e766741aefb26a9b (patch) | |
tree | b196fc27681c0a33b0365bf2a4d3c86fffb65644 /TAO/tao/ORB.cpp | |
parent | b7a60f57f672ef42064f63e4bb18b20ed4f1c0a6 (diff) | |
download | ATCD-67da8fb2f693cd33e75360f7e766741aefb26a9b.tar.gz |
ChangeLogTag: Thu Sep 30 16:25:15 1999 Balachandran Natarajan <bala@cs.wustl.edu>
Diffstat (limited to 'TAO/tao/ORB.cpp')
-rw-r--r-- | TAO/tao/ORB.cpp | 74 |
1 files changed, 73 insertions, 1 deletions
diff --git a/TAO/tao/ORB.cpp b/TAO/tao/ORB.cpp index 1d03b20cec3..35b8bed1fdc 100644 --- a/TAO/tao/ORB.cpp +++ b/TAO/tao/ORB.cpp @@ -1153,7 +1153,79 @@ CORBA_ORB::create_exception_tc (const char *id, return interface_typecode; } - + + +CORBA_TypeCode_ptr +CORBA_ORB::create_alias_tc (const char *id, + const char *name, + const CORBA::TypeCode_ptr original_type, + CORBA::Environment &ACE_TRY_ENV) +{ + TAO_OutputCDR cdr; + + cdr << TAO_ENCAP_BYTE_ORDER; + + cdr << id; + + cdr << name; + + cdr << original_type; + + CORBA_TypeCode_ptr interface_typecode = CORBA::TypeCode::_nil (); + + ACE_NEW_THROW_EX (interface_typecode, + CORBA_TypeCode (CORBA::tk_alias, + cdr.total_length (), + cdr.buffer (), + 0, + 0), + CORBA::NO_MEMORY ()); + ACE_CHECK_RETURN (CORBA::TypeCode::_nil ()); + + return interface_typecode; +} + +CORBA_TypeCode_ptr +CORBA_ORB::create_struct_tc (const char *id, + const char *name, + CORBA_StructMemberSeq &members, + CORBA::Environment &ACE_TRY_ENV) +{ + TAO_OutputCDR cdr; + + cdr << TAO_ENCAP_BYTE_ORDER; + + cdr << id; + + cdr << name; + + // Number of members.. + CORBA::ULong len = members.length (); + cdr << len; + + for (CORBA::ULong index = 0; index < len; index++) + { + // Get the first member which is a string.. + CORBA_StructMember struct_member = members[index]; + + cdr << struct_member.name.in (); + + cdr << struct_member.type.in (); + } + + CORBA_TypeCode_ptr interface_typecode = CORBA::TypeCode::_nil (); + ACE_NEW_THROW_EX (interface_typecode, + CORBA_TypeCode (CORBA::tk_struct, + cdr.total_length (), + cdr.buffer (), + 0, + 0), + CORBA::NO_MEMORY ()); + ACE_CHECK_RETURN (CORBA::TypeCode::_nil ()); + + return interface_typecode; +} + #endif /*TAO_HAS_INTERFACE_REPOSITORY */ #endif /* TAO_HAS_MINIMUM_CORBA */ |