00001
00002
00003
00004
00005 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00006
00007 template <class TypeCodeBase, typename TypeCodeType, typename MemberArrayType>
00008 ACE_INLINE
00009 TAO::TypeCode::Recursive_Type<TypeCodeBase,
00010 TypeCodeType,
00011 MemberArrayType>::Recursive_Type (
00012 CORBA::TCKind kind,
00013 char const * id,
00014 char const * name,
00015 MemberArrayType const & fields,
00016 CORBA::ULong nfields)
00017 : TypeCodeBase (kind, id, name, fields, nfields)
00018 , lock_ ()
00019 , in_recursion_ (false)
00020 , data_initialized_(true)
00021 {
00022
00023 }
00024
00025 template <class TypeCodeBase, typename TypeCodeType, typename MemberArrayType>
00026 ACE_INLINE
00027 TAO::TypeCode::Recursive_Type<TypeCodeBase,
00028 TypeCodeType,
00029 MemberArrayType>::Recursive_Type (
00030 char const * id,
00031 char const * name,
00032 TypeCodeType const & discriminant_type,
00033 MemberArrayType const & cases,
00034 CORBA::ULong ncases,
00035 CORBA::Long default_index)
00036 : TypeCodeBase (id,
00037 name,
00038 discriminant_type,
00039 cases,
00040 ncases,
00041 default_index)
00042 , lock_ ()
00043 , in_recursion_ (false)
00044 , data_initialized_(true)
00045 {
00046 }
00047
00048 template <class TypeCodeBase, typename TypeCodeType, typename MemberArrayType>
00049 ACE_INLINE
00050 TAO::TypeCode::Recursive_Type<TypeCodeBase,
00051 TypeCodeType,
00052 MemberArrayType>::Recursive_Type (
00053 CORBA::TCKind kind,
00054 char const * id,
00055 char const * name,
00056 CORBA::ValueModifier modifier,
00057 TypeCodeType const & concrete_base,
00058 MemberArrayType const & fields,
00059 CORBA::ULong nfields)
00060 : TypeCodeBase (kind,
00061 id,
00062 name,
00063 modifier,
00064 concrete_base,
00065 fields,
00066 nfields)
00067 , lock_ ()
00068 , in_recursion_ (false)
00069 , data_initialized_(true)
00070 {
00071 }
00072
00073 template <class TypeCodeBase, typename TypeCodeType, typename MemberArrayType>
00074 ACE_INLINE
00075 TAO::TypeCode::Recursive_Type<TypeCodeBase,
00076 TypeCodeType,
00077 MemberArrayType>::Recursive_Type (
00078 CORBA::TCKind kind,
00079 char const * id)
00080 : TypeCodeBase (kind, id)
00081 , lock_ ()
00082 , in_recursion_ (false)
00083 , data_initialized_(false)
00084 {
00085
00086
00087
00088
00089 }
00090
00091 template <class TypeCodeBase, typename TypeCodeType, typename MemberArrayType>
00092 ACE_INLINE bool
00093 TAO::TypeCode::Recursive_Type<TypeCodeBase,
00094 TypeCodeType,
00095 MemberArrayType>::struct_parameters (
00096 char const * name,
00097 MemberArrayType const & fields,
00098 CORBA::ULong nfields)
00099 {
00100
00101 if ( !this->data_initialized_ )
00102 {
00103 this->base_attributes_.name (name);
00104 this->fields_ = fields;
00105 this->nfields_ = nfields;
00106 this->data_initialized_ = true;
00107
00108 return true;
00109 }
00110
00111 return false;
00112 }
00113
00114 template <class TypeCodeBase, typename TypeCodeType, typename MemberArrayType>
00115 ACE_INLINE bool
00116 TAO::TypeCode::Recursive_Type<TypeCodeBase,
00117 TypeCodeType,
00118 MemberArrayType>::union_parameters (
00119 char const * name,
00120 TypeCodeType const & discriminant_type,
00121 MemberArrayType const & cases,
00122 CORBA::ULong ncases,
00123 CORBA::Long default_index)
00124 {
00125 if ( !this->data_initialized_ )
00126 {
00127 this->base_attributes_.name (name);
00128 this->discriminant_type_ = discriminant_type;
00129 this->cases_ = cases;
00130 this->ncases_ = ncases;
00131 this->default_index_ = default_index;
00132 this->data_initialized_ = true;
00133
00134 return true;
00135 }
00136
00137 return false;
00138 }
00139
00140 template <class TypeCodeBase, typename TypeCodeType, typename MemberArrayType>
00141 ACE_INLINE bool
00142 TAO::TypeCode::Recursive_Type<TypeCodeBase,
00143 TypeCodeType,
00144 MemberArrayType>::valuetype_parameters (
00145 char const * name,
00146 CORBA::ValueModifier modifier,
00147 TypeCodeType const & concrete_base,
00148 MemberArrayType const & fields,
00149 CORBA::ULong nfields)
00150 {
00151 if ( !this->data_initialized_ )
00152 {
00153 this->base_attributes_.name (name);
00154 this->type_modifier_ = modifier;
00155 this->concrete_base_ = concrete_base;
00156 this->fields_ = fields;
00157 this->nfields_ = nfields;
00158 this->data_initialized_ = true;
00159
00160 return true;
00161 }
00162
00163 return false;
00164 }
00165
00166 TAO_END_VERSIONED_NAMESPACE_DECL