CORBA::Boolean TAO::TypeCode::Enum<char const *, char const * const *, TAO::Null_RefCount_Policy>::equal_i ( CORBA::TypeCode_ptr tc ) const { // This call shouldn't throw since CORBA::TypeCode::equal() verified // that the TCKind is the same as our's prior to invoking this // method, meaning that member_count() is supported. CORBA::ULong const tc_nenumerators = tc->member_count (); if (tc_nenumerators != this->nenumerators_) return false; for (CORBA::ULong i = 0; i < this->nenumerators_; ++i) { char const * const & lhs_enumerator = this->enumerators_[i]; char const * const lhs_name = Traits<char const *>::get_string (lhs_enumerator); char const * const rhs_name = tc->member_name (i); if (ACE_OS::strcmp (lhs_name, rhs_name) != 0) return false; } return true; }
CORBA::Boolean TAO::TypeCode::Struct<char const *, CORBA::TypeCode_ptr const *, TAO::TypeCode::Struct_Field<char const *, CORBA::TypeCode_ptr const *> const *, TAO::Null_RefCount_Policy>::equivalent_i ( CORBA::TypeCode_ptr tc) const { // Perform a structural comparison, excluding the name() and // member_name() operations. CORBA::ULong const tc_nfields = tc->member_count (); if (tc_nfields != this->nfields_) return false; for (CORBA::ULong i = 0; i < this->nfields_; ++i) { CORBA::TypeCode_ptr const lhs = Traits<char const *>::get_typecode (this->fields_[i].type); CORBA::TypeCode_var const rhs = tc->member_type (i); CORBA::Boolean const equiv_members = lhs->equivalent (rhs.in ()); if (!equiv_members) return false; } return true; }
CORBA::Boolean TIDorb::core::typecode::StructTypeCode::equal(CORBA::TypeCode_ptr tc) const { if (!ComplexTypeCode::equal(tc)) return false; if (!m_exhaustive_equal) return true; try { CORBA::ULong length = m_members->length(); if (length != tc->member_count()) return false; for (CORBA::ULong i = 0; i < length; i++) { if (strcmp(member_name(i), tc->member_name(i))) return false; if (! member_type(i)->equal(tc->member_type(i))) return false; } // allright return true; } catch (const CORBA::TypeCode::BadKind& bk) { return false; } catch (const CORBA::TypeCode::Bounds& bn) { return false; } }
CORBA::Boolean TAO::TypeCode::Value<StringType, TypeCodeType, FieldArrayType, RefCountPolicy>::equivalent_i (CORBA::TypeCode_ptr tc) const { CORBA::ValueModifier const tc_type_modifier = tc->type_modifier (); if (tc_type_modifier != this->type_modifier_) return false; CORBA::TypeCode_var rhs_concrete_base_type = tc->concrete_base_type (); CORBA::Boolean const equivalent_concrete_base_types = this->equivalent (rhs_concrete_base_type.in ()); if (!equivalent_concrete_base_types) return false; // Perform a structural comparison, excluding the name() and // member_name() operations. CORBA::ULong const tc_nfields = tc->member_count (); if (tc_nfields != this->nfields_) return false; for (CORBA::ULong i = 0; i < this->nfields_; ++i) { Value_Field<StringType, TypeCodeType> const & lhs_field = this->fields_[i]; CORBA::Visibility const lhs_visibility = lhs_field.visibility; CORBA::Visibility const rhs_visibility = tc->member_visibility (i); if (lhs_visibility != rhs_visibility) return false; CORBA::TypeCode_ptr const lhs_tc = Traits<StringType>::get_typecode (lhs_field.type); CORBA::TypeCode_var const rhs_tc = tc->member_type (i); CORBA::Boolean const equiv_types = lhs_tc->equivalent (rhs_tc.in () ); if (!equiv_types) return false; } return true; }
CORBA::Boolean TAO::TypeCode::Union<char const *, CORBA::TypeCode_ptr const *, TAO::TypeCode::Case<char const *, CORBA::TypeCode_ptr const *> const * const *, TAO::Null_RefCount_Policy>::equal_i ( CORBA::TypeCode_ptr tc ) const { // These calls shouldn't throw since CORBA::TypeCode::equal() // verified that the TCKind is the same as our's prior to invoking // this method, meaning that the CORBA::tk_union TypeCode methods // are supported. CORBA::ULong const tc_count = tc->member_count (); CORBA::Long tc_def = tc->default_index (); if (tc_count != this->ncases_ || tc_def != this->default_index_) return false; // Check the discriminator type. CORBA::TypeCode_var tc_discriminator = tc->discriminator_type (); CORBA::Boolean const equal_discriminators = Traits<char const *>::get_typecode (this->discriminant_type_)->equal ( tc_discriminator.in ()); if (!equal_discriminators) return false; for (CORBA::ULong i = 0; i < this->ncases_; ++i) { if (this->default_index_ > -1 && static_cast<CORBA::ULong> (this->default_index_) == i) { // Don't bother checking equality of default case label. It // will always be the zero octet (the CDR encoded value is // ignored). continue; } case_type const & lhs_case = *this->cases_[i]; bool const equal_case = lhs_case.equal (i, tc); if (!equal_case) return false; } return true; }
CORBA::Boolean TAO::TypeCode::Union<char const *, CORBA::TypeCode_ptr const *, TAO::TypeCode::Case<char const *, CORBA::TypeCode_ptr const *> const * const *, TAO::Null_RefCount_Policy>::equivalent_i ( CORBA::TypeCode_ptr tc) const { // Perform a structural comparison, excluding the name() and // member_name() operations. CORBA::ULong const tc_count = tc->member_count (); CORBA::Long tc_def = tc->default_index (); if (tc_count != this->ncases_ || tc_def != this->default_index_) return false; CORBA::TypeCode_var tc_discriminator = tc->discriminator_type (); CORBA::Boolean const equiv_discriminators = Traits<char const *>::get_typecode (this->discriminant_type_)->equivalent ( tc_discriminator.in ()); if (!equiv_discriminators) return false; for (CORBA::ULong i = 0; i < this->ncases_; ++i) { if (this->default_index_ > -1 && static_cast<CORBA::ULong> (this->default_index_) == i) { // Don't bother checking equality/equivalence of default // case label. It will always be the zero octet (the CDR // encoded value is ignored). continue; } case_type const & lhs_case = *this->cases_[i]; bool const equivalent_case = lhs_case.equivalent (i, tc); if (!equivalent_case) return false; } return true; }
CORBA::Boolean TAO::TypeCode::Struct<char const *, CORBA::TypeCode_ptr const *, TAO::TypeCode::Struct_Field<char const *, CORBA::TypeCode_ptr const *> const *, TAO::Null_RefCount_Policy>::equal_i ( CORBA::TypeCode_ptr tc) const { // This call shouldn't throw since CORBA::TypeCode::equal() verified // that the TCKind is the same as our's prior to invoking this // method, meaning that member_count() is supported. CORBA::ULong const tc_nfields = tc->member_count (); if (tc_nfields != this->nfields_) return false; for (CORBA::ULong i = 0; i < this->nfields_; ++i) { Struct_Field<char const *, CORBA::TypeCode_ptr const *> const & lhs_field = this->fields_[i]; char const * const lhs_name = Traits<char const *>::get_string (lhs_field.name); char const * const rhs_name = tc->member_name (i ); if (ACE_OS::strcmp (lhs_name, rhs_name) != 0) return false; CORBA::TypeCode_ptr const lhs_tc = Traits<char const *>::get_typecode (lhs_field.type); CORBA::TypeCode_var const rhs_tc = tc->member_type (i); CORBA::Boolean const equal_members = lhs_tc->equal (rhs_tc.in ()); if (!equal_members) return false; } return true; }
CORBA::Boolean TAO::TypeCode::Enum<char const *, char const * const *, TAO::Null_RefCount_Policy>::equivalent_i ( CORBA::TypeCode_ptr tc ) const { // Perform a structural comparison, excluding the name() and // member_name() operations. CORBA::ULong const tc_nenumerators = tc->member_count (); if (tc_nenumerators != this->nenumerators_) return false; return true; }
DynStructImpl::DynStructImpl(DynamicAny::DynAnyFactory_ptr factory, TIDorb::core::TIDORB* orb, CORBA::TypeCode_ptr type, CORBA::TypeCode_ptr real_type) throw(CORBA::SystemException) : DynComposite(factory, orb, type, real_type) { try { _component_count = real_type->member_count(); } catch(CORBA::TypeCode::BadKind) { throw CORBA::BAD_TYPECODE(); } _current = (_component_count == 0) ? -1 : 0; this->TIDThr::RefCounter::_add_ref(); }
CORBA::Boolean TAO::TypeCode::Value<char const *, CORBA::TypeCode_ptr const *, TAO::TypeCode::Value_Field<char const *, CORBA::TypeCode_ptr const *> const *, TAO::Null_RefCount_Policy>::equal_i ( CORBA::TypeCode_ptr tc) const { // None of these calls should throw since CORBA::TypeCode::equal() // verified that the TCKind is the same as our's prior to invoking // this method. CORBA::ValueModifier const tc_type_modifier = tc->type_modifier (); if (tc_type_modifier != this->type_modifier_) return false; CORBA::TypeCode_var rhs_concrete_base_type = tc->concrete_base_type (); CORBA::Boolean const equal_concrete_base_types = this->equal (rhs_concrete_base_type.in ()); if (!equal_concrete_base_types) return false; CORBA::ULong const tc_nfields = tc->member_count (); if (tc_nfields != this->nfields_) return false; for (CORBA::ULong i = 0; i < this->nfields_; ++i) { Value_Field<char const *, CORBA::TypeCode_ptr const *> const & lhs_field = this->fields_[i]; CORBA::Visibility const lhs_visibility = lhs_field.visibility; CORBA::Visibility const rhs_visibility = tc->member_visibility (i); if (lhs_visibility != rhs_visibility) return false; char const * const lhs_name = Traits<char const *>::get_string (lhs_field.name);; char const * const rhs_name = tc->member_name (i); if (ACE_OS::strcmp (lhs_name, rhs_name) != 0) return false; CORBA::TypeCode_ptr const lhs_tc = Traits<char const *>::get_typecode (lhs_field.type); CORBA::TypeCode_var const rhs_tc = tc->member_type (i); CORBA::Boolean const equal_members = lhs_tc->equal (rhs_tc.in ()); if (!equal_members) return false; } return true; }