Interpreter_Utils.cpp

Go to the documentation of this file.
00001 // Interpreter_Utils.cpp,v 1.17 2006/04/25 11:35:29 jwillemsen Exp
00002 
00003 #include "orbsvcs/Trader/Interpreter_Utils.h"
00004 
00005 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00006 
00007 // TAO_Sequence_Extracter_Base
00008 
00009 CORBA::TCKind
00010 TAO_Sequence_Extracter_Base::
00011 sequence_type (CORBA::TypeCode* type_code
00012                ACE_ENV_ARG_DECL)
00013   ACE_THROW_SPEC ((CORBA::SystemException))
00014 {
00015   // @@ Seth, why do you use a comma to separate the two statements?
00016   CORBA::TCKind return_value = CORBA::tk_void,
00017   type_kind = type_code->kind (ACE_ENV_SINGLE_ARG_PARAMETER);
00018   ACE_CHECK_RETURN (return_value);
00019 
00020   if (type_kind == CORBA::tk_alias
00021       || type_kind == CORBA::tk_sequence)
00022     {
00023       CORBA::TypeCode_var base = CORBA::TypeCode::_duplicate (type_code);
00024 
00025       for (;;)
00026         {
00027           CORBA::TCKind base_kind = base->kind (ACE_ENV_SINGLE_ARG_PARAMETER);
00028           ACE_CHECK_RETURN (return_value);
00029 
00030           if (base_kind == CORBA::tk_alias)
00031             {
00032               base = base->content_type (ACE_ENV_SINGLE_ARG_PARAMETER);
00033               ACE_CHECK_RETURN (return_value);
00034             }
00035           else
00036             break;
00037         }
00038 
00039       CORBA::TCKind base_kind = base->kind (ACE_ENV_SINGLE_ARG_PARAMETER);
00040       ACE_CHECK_RETURN (return_value);
00041 
00042       if (base_kind == CORBA::tk_sequence)
00043         {
00044           base = base->content_type (ACE_ENV_SINGLE_ARG_PARAMETER);
00045           ACE_CHECK_RETURN (return_value);
00046 
00047           base_kind = base->kind (ACE_ENV_SINGLE_ARG_PARAMETER);
00048           ACE_CHECK_RETURN (return_value);
00049           return_value = base_kind;
00050         }
00051     }
00052 
00053   return return_value;
00054 }
00055 
00056 TAO_END_VERSIONED_NAMESPACE_DECL

Generated on Thu Nov 9 13:59:57 2006 for TAO_CosTrader by doxygen 1.3.6