From 00becb58da244a3bc6aa0a3749f6d173cbd4c919 Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA Date: Mon, 21 Aug 2023 12:52:56 +0200 Subject: [PATCH] #3509 Bug BinaryOperation --- kernel/src/bbtkBlackBox.cxx | 16 +-- packages/vtk/src/bbvtkBinaryOperations.cxx | 111 +++++++++++---------- 2 files changed, 64 insertions(+), 63 deletions(-) diff --git a/kernel/src/bbtkBlackBox.cxx b/kernel/src/bbtkBlackBox.cxx index 3bd38f7..b753c6f 100644 --- a/kernel/src/bbtkBlackBox.cxx +++ b/kernel/src/bbtkBlackBox.cxx @@ -748,15 +748,15 @@ namespace bbtk ) { -//auto start = std::chrono::high_resolution_clock::now(); -//printf("EED BlackBox::bbRecursiveExecute bbProcess start %s \n", bbGetFullName().c_str() ); - - this->bbProcess(); +printf("EED BlackBox::bbRecursiveExecute bbProcess start %s \n", bbGetFullName().c_str() ); +auto start = std::chrono::high_resolution_clock::now(); + + this->bbProcess(); -//auto stop = std::chrono::high_resolution_clock::now(); -//auto duration = duration_cast(stop - start); -//printf("EED BlackBox::bbRecursiveExecute bbProcess time= %ld %s \n", duration.count() , bbGetFullName().c_str() ); -//printf("EED BlackBox::bbRecursiveExecute bbProcess end %s \n", bbGetFullName().c_str() ); +auto stop = std::chrono::high_resolution_clock::now(); +auto duration = duration_cast(stop - start); +printf("EED BlackBox::bbRecursiveExecute bbProcess time= %ld %s \n", duration.count() , bbGetFullName().c_str() ); +printf("EED BlackBox::bbRecursiveExecute bbProcess end %s \n", bbGetFullName().c_str() ); } // Manual analysis diff --git a/packages/vtk/src/bbvtkBinaryOperations.cxx b/packages/vtk/src/bbvtkBinaryOperations.cxx index 745b9c1..194b398 100644 --- a/packages/vtk/src/bbvtkBinaryOperations.cxx +++ b/packages/vtk/src/bbvtkBinaryOperations.cxx @@ -35,53 +35,60 @@ BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,BinaryOperations) BBTK_BLACK_BOX_IMPLEMENTATION(BinaryOperations,bbtk::AtomicBlackBox); void BinaryOperations::Process() { -// THE MAIN PROCESSING METHOD BODY -// Here we simply set the input 'In' value to the output 'Out' -// And print out the output value -// INPUT/OUTPUT ACCESSORS ARE OF THE FORM : -// void bbSet{Input|Output}NAME(const TYPE&) -// const TYPE& bbGet{Input|Output}NAME() const -// Where : -// * NAME is the name of the input/output -// (the one provided in the attribute 'name' of the tag 'input') -// * TYPE is the C++ type of the input/output -// (the one provided in the attribute 'type' of the tag 'input') - + // THE MAIN PROCESSING METHOD BODY + // Here we simply set the input 'In' value to the output 'Out' + // And print out the output value + // INPUT/OUTPUT ACCESSORS ARE OF THE FORM : + // void bbSet{Input|Output}NAME(const TYPE&) + // const TYPE& bbGet{Input|Output}NAME() const + // Where : + // * NAME is the name of the input/output + // (the one provided in the attribute 'name' of the tag 'input') + // * TYPE is the C++ type of the input/output + // (the one provided in the attribute 'type' of the tag 'input') + - if (bbGetInputIn1() == NULL) - { - printf( "EED Warning!!! (%s) BinaryOperations::Process Set In1 at least", bbGetFullName().c_str() ); + if (bbGetInputIn1() == NULL) + { + printf( "EED Warning!!! (%s) BinaryOperations::Process Set In1 at least", bbGetFullName().c_str() ); bbSetOutputOut(NULL); - return; - } + return; + } + + if (ope!=NULL) + { + ope->Delete(); + ope = NULL; + } // if + ope = vtkImageMathematics::New(); -//EED 2017-01-01 Migration VTK7 + + //EED 2017-01-01 Migration VTK7 #if (VTK_MAJOR_VERSION <= 5) - ope->SetInput1((vtkDataObject*)bbGetInputIn1()); + ope->SetInput1((vtkDataObject*)bbGetInputIn1()); #endif #if (VTK_MAJOR_VERSION >= 6) - ope->SetInput1Data((vtkDataObject*)bbGetInputIn1()); + ope->SetInput1Data((vtkDataObject*)bbGetInputIn1()); #endif - - if (bbGetInputIn2() != NULL) - { -//EED 2017-01-01 Migration VTK7 + + if (bbGetInputIn2() != NULL) + { + //EED 2017-01-01 Migration VTK7 #if (VTK_MAJOR_VERSION <= 5) - ope->SetInput2((vtkDataObject*)bbGetInputIn2()); + ope->SetInput2((vtkDataObject*)bbGetInputIn2()); #endif #if (VTK_MAJOR_VERSION >= 6) - ope->SetInput2Data((vtkDataObject*)bbGetInputIn2()); + ope->SetInput2Data((vtkDataObject*)bbGetInputIn2()); #endif - - } else { + } else { printf( "EED Warning!!! (%s) BinaryOperations::Process Set In2 at least", bbGetFullName().c_str() ); bbSetOutputOut(NULL); return; - } + } if ( (bbGetInputOperation()>=0) && (bbGetInputOperation()<=5) ) { - switch (bbGetInputOperation()) + switch ( bbGetInputOperation() ) { case 0: ope->SetOperationToAdd(); @@ -110,7 +117,7 @@ void BinaryOperations::Process() ope->Update(); bbSetOutputOut( ope->GetOutput() ); } // if operation 0..5 - + if ( bbGetInputOperation()==6 ) { bbSetOutputOut( bbGetInputIn1() ); @@ -119,45 +126,39 @@ void BinaryOperations::Process() { bbSetOutputOut( bbGetInputIn2() ); } - -// bbSignalOutputModification(); + // bbSignalOutputModification(); } void BinaryOperations::bbUserSetDefaultValues() { - -// SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX -// Here we initialize the input 'In' to 0 - bbSetInputIn1(NULL); - bbSetInputIn2(NULL); - bbSetOutputOut(NULL); - bbSetInputOperation(0); - ope = vtkImageMathematics::New(); + // SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX + // Here we initialize the input 'In' to 0 + bbSetInputIn1(NULL); + bbSetInputIn2(NULL); + bbSetOutputOut(NULL); + bbSetInputOperation(0); + ope = NULL; } void BinaryOperations::bbUserInitializeProcessing() { - -// THE INITIALIZATION METHOD BODY : -// Here does nothing -// but this is where you should allocate the internal/output pointers -// if any - + // THE INITIALIZATION METHOD BODY : + // Here does nothing + // but this is where you should allocate the internal/output pointers + // if any } void BinaryOperations::bbUserFinalizeProcessing() { - -// THE FINALIZATION METHOD BODY : -// Here does nothing -// but this is where you should desallocate the internal/output pointers -// if any - + // THE FINALIZATION METHOD BODY : + // Here does nothing + // but this is where you should desallocate the internal/output pointers + // if any } -} -// EO namespace bbvtk + +}// EO namespace bbvtk -- 2.47.1