]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
Ref counting in SUPPORT,MESH, FIELD. valgrind =0. AfterRefCount1
authorageay <ageay>
Thu, 1 Apr 2010 06:43:05 +0000 (06:43 +0000)
committerageay <ageay>
Thu, 1 Apr 2010 06:43:05 +0000 (06:43 +0000)
src/INTERP_KERNELTest/InterpolationOptionsTest.cxx
src/INTERP_KERNELTest/MeshTestToolkit.txx
src/RENUMBER/renumbering.cxx

index bfd2f8a3d1030196ec217c427a9d74ee9168b046..949c3f0f8e1b96ea3976153bfd7611dd0706aef7 100644 (file)
@@ -46,32 +46,36 @@ namespace INTERP_TEST
    */
   void InterpolationOptionsTest::test_InterpolationOptions() {
     string sourcename=INTERP_TEST::getResourceFile("square1.med");
-    MEDMEM::MESH source_mesh (MED_DRIVER,sourcename,"Mesh_2");
+    MEDMEM::MESH *source_mesh=new MEDMEM::MESH(MED_DRIVER,sourcename,"Mesh_2");
 
     string targetname=INTERP_TEST::getResourceFile("square2.med");
-    MEDMEM::MESH target_mesh (MED_DRIVER,targetname,"Mesh_3");
+    MEDMEM::MESH *target_mesh=new MEDMEM::MESH(MED_DRIVER,targetname,"Mesh_3");
 
-    MEDMEM::SUPPORT source_support(&source_mesh,"on All support");
-    MEDMEM::FIELD<double> source_field(&source_support,1);
-    double* value=const_cast<double*>(source_field.getValue());
-    for (int i=0; i<source_support.getNumberOfElements(MED_EN::MED_ALL_ELEMENTS); i++)
+    MEDMEM::SUPPORT *source_support=new SUPPORT(source_mesh,"on All support");
+    MEDMEM::FIELD<double> *source_field=new FIELD<double>(source_support,1);
+    double* value=const_cast<double*>(source_field->getValue());
+    for (int i=0; i<source_support->getNumberOfElements(MED_EN::MED_ALL_ELEMENTS); i++)
       value[i]=1.0;
-    
-    MEDMEM::SUPPORT target_support(&target_mesh,"on All support");
-    MEDMEM::FIELD<double> target_field(&target_support,1);
-    double* targetvalue=const_cast<double*>(target_field.getValue());
-    for (int i=0; i<target_support.getNumberOfElements(MED_EN::MED_ALL_ELEMENTS); i++)
+    source_support->removeReference();
+    MEDMEM::SUPPORT *target_support=new MEDMEM::SUPPORT(target_mesh,"on All support");
+    MEDMEM::FIELD<double> *target_field=new FIELD<double>(target_support,1);
+    double* targetvalue=const_cast<double*>(target_field->getValue());
+    for (int i=0; i<target_support->getNumberOfElements(MED_EN::MED_ALL_ELEMENTS); i++)
       targetvalue[i]=0.0;
-
+    target_support->removeReference();
     // Ok at this point we have our mesh in MED-Memory format.
     // Go to wrap med_source_mesh and med_target_mesh.
-    MEDNormalizedUnstructuredMesh<2,2> wrap_source_mesh(&source_mesh);
-    MEDNormalizedUnstructuredMesh<2,2> wrap_target_mesh(&target_mesh);
+    MEDNormalizedUnstructuredMesh<2,2> wrap_source_mesh(source_mesh);
+    MEDNormalizedUnstructuredMesh<2,2> wrap_target_mesh(target_mesh);
     // Go for interpolation...
     INTERP_KERNEL::Interpolation2D myInterpolator;
     //optionnal call to parametrize your interpolation. First precision, tracelevel, intersector wanted.
     myInterpolator.setPrecision(1e-7);
     myInterpolator.setPrintLevel(1);
+    source_mesh->removeReference();
+    source_field->removeReference();
+    target_field->removeReference();
+    target_mesh->removeReference();
   }
 
 
index ddfb21e949a5f47d8068c13286af9ad153f0d3a3..5c1da0939c83a9fa850abb4b6e95c96c6dfa4a8f 100644 (file)
@@ -124,8 +124,8 @@ namespace INTERP_TEST
       }
     const double *tabS = f->getValue();
     std::copy(tabS,tabS+mesh.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS),tab);
-    delete sup;
-    delete f;
+    sup->removeReference();
+    f->removeReference();
   }
 
   /**
index 44eac9a2ea992d983f66de4a71ef9c17d8187f1d..df273a71e5c151701e34754170e5ab49ff4b88cd 100644 (file)
@@ -334,7 +334,6 @@ int main (int argc, char** argv)
         }
       int drv=newField.addDriver(MED_DRIVER,filename_out,field_names[ifield]);
       newField.write(drv);
-      delete (SUPPORT *) newField.getSupport();
     }
   t_field=clock();
   cout << " : " << (t_field-t_family)/(double) CLOCKS_PER_SEC << "s" << endl;