Salome HOME
Fix bug in type check (could not connect Python port to Neutral port with compatible...
authorbarate <barate>
Fri, 15 Mar 2013 17:14:34 +0000 (17:14 +0000)
committerbarate <barate>
Fri, 15 Mar 2013 17:14:34 +0000 (17:14 +0000)
src/engine/TypeCode.cxx

index fb1f7dacc295cb09e7b07633296a15aaf7b23a6d..06a468579ffbb56efee3645fab2e4cef5e3bfb03 100644 (file)
@@ -719,8 +719,17 @@ int TypeCodeStruct::isA(const TypeCode* tc) const
  */
 int TypeCodeStruct::isAdaptable(const TypeCode* tc) const
 {
-  if(_kind == tc->kind()) return isA(tc->id());
-  return 0;
+  if (_kind != tc->kind()) return 0;
+  if (_repoId == tc->id()) return 1;
+  int nMember = memberCount();
+  if (nMember != ((TypeCodeStruct*)tc)->memberCount()) return 0;
+  for (int i=0 ; i<nMember ; i++)
+    {
+      const char * name = memberName(i);
+      if (strcmp(memberName(i), ((TypeCodeStruct*)tc)->memberName(i)) != 0) return 0;
+      if (!memberType(i)->isAdaptable(((TypeCodeStruct*)tc)->memberType(i))) return 0;
+    }
+  return 1;
 }
 
 //! Check if this TypeCode can be used in place of tc