136 if (first .is_valid() &&
139 const_iterator i1 = this->find(first .getTypename());
140 const_iterator i2 = this->find(second.
getTypename());
142 if (i1 != this->end() &&
150 }
else if (first .getClass() != NULL &&
153 if (first .getClass()->GetCollectionType() != ROOT::ESTLType::kNotSTL && first .getClass()->GetCollectionProxy() != NULL &&
154 second.
getClass()->GetCollectionType() != ROOT::ESTLType::kNotSTL && second.
getClass()->GetCollectionProxy() != NULL) {
156 std::unique_ptr<TVirtualCollectionProxy>
p1(first .getClass()->GetCollectionProxy()->Generate());
157 std::unique_ptr<TVirtualCollectionProxy> p2(second.
getClass()->GetCollectionProxy()->Generate());
159 p1->PushProxy(
const_cast<char*
>(first .getAddress()));
160 p2->PushProxy(
const_cast<char*
>(second.
getAddress()));
162 TDictionary* d1 = TDictionary::GetDictionary(
p1->GetType() == EDataType::kNoType_t ?
p1->GetValueClass()->GetName() : TDataType::GetTypeName(
p1->GetType()));
163 TDictionary* d2 = TDictionary::GetDictionary(p2->GetType() == EDataType::kNoType_t ? p2->GetValueClass()->GetName() : TDataType::GetTypeName(p2->GetType()));
165 DEBUG(
"proxy: " <<
p1->GetCollectionClass()->GetName() <<
" " << d1->GetName() <<
"(" <<
p1->Size() <<
");" << endl);
166 DEBUG(
"proxy: " << p2->GetCollectionClass()->GetName() <<
" " << d2->GetName() <<
"(" << p2->Size() <<
");" << endl);
168 if (
p1->Size() != p2->Size()) {
172 for (UInt_t i = 0; (i !=
p1->Size() &&
173 i != p2->Size()); ++i) {
175 DEBUG(
"index: " << d1->GetName() <<
"[" << i <<
"] " << endl);
188 if (first .getClass()->GetListOfBases() != NULL &&
189 second.
getClass()->GetListOfBases() != NULL) {
191 std::unique_ptr<TIterator> i1(first .getClass()->GetListOfBases()->MakeIterator());
192 std::unique_ptr<TIterator> i2(second.
getClass()->GetListOfBases()->MakeIterator());
194 for (
const TBaseClass *
p1, *p2; ((
p1 = (
const TBaseClass*) i1->Next()) != NULL &&
195 (p2 = (
const TBaseClass*) i2->Next()) != NULL); ) {
200 DEBUG(
"base: " <<
p1->GetName() << endl);
210 if (first .getClass()->GetListOfDataMembers() != NULL &&
211 second.
getClass()->GetListOfDataMembers() != NULL) {
213 std::unique_ptr<TIterator> i1(first .getClass()->GetListOfDataMembers()->MakeIterator());
214 std::unique_ptr<TIterator> i2(second.
getClass()->GetListOfDataMembers()->MakeIterator());
216 for (
const TDataMember *
p1, *p2; ((
p1 = (
const TDataMember*) i1->Next()) != NULL &&
217 (p2 = (
const TDataMember*) i2->Next()) != NULL); ) {
223 DEBUG(
"member: " <<
p1->GetTrueTypeName() <<
" " <<
p1->GetName() <<
";" << endl);