]> Creatis software - bbtk.git/blobdiff - packages/std/src/bbstdVectorFilterString.cxx
#3493 BUG IPP bbgdcmvtk GetXCoherentInfoGdcmReader box
[bbtk.git] / packages / std / src / bbstdVectorFilterString.cxx
index d7ceec8a7f1c233e9fe73e96568bc32ca28b979d..fc996ad37f5e4e59b470156913fe70bc65bdcba4 100644 (file)
@@ -3,6 +3,9 @@
 //===== 
 #include "bbstdVectorFilterString.h"
 #include "bbstdPackage.h"
+
+#include <string>
+#include <stdlib.h>
 namespace bbstd
 {
 
@@ -23,9 +26,9 @@ void VectorFilterString::ConnectionRepetitions( std::vector<std::string> vIn,std
                {
                        acum++;
                } else {
-                       itmp=i;
+                       itmp = i;
                        vOut->push_back(std::to_string(acum));
-                       acum=1;
+                       acum = 1;
                }
        } // for
        vOut->push_back(std::to_string(acum));
@@ -129,8 +132,6 @@ void VectorFilterString::InvertLists()
     std::vector<std::string> vOut8;
     std::vector<std::string> vOut9;
     int i,size      = bbGetInputIn0().size();
-//    std::string sk1 = bbGetInputsk1();
-//    int pos         = atoi( bbGetInputsk2().c_str() );
     for (i=size-1; i>=0; i--)
     {
             if ( i < bbGetInputIn0().size() ) { vOut0.push_back( bbGetInputIn0()[i] );  }
@@ -157,6 +158,122 @@ void VectorFilterString::InvertLists()
 }
 
 
+void VectorFilterString::SwitchElement(std::vector<std::string> *pVec, int i, int ii )
+{
+    std::string tmp;
+    
+    if  ( (i<pVec->size()) && (ii<pVec->size()) )
+    {
+        tmp         = (*pVec)[i];
+        (*pVec)[i]  = (*pVec)[ii];
+        (*pVec)[ii] = tmp;
+    } // if size
+}
+
+void VectorFilterString::OrderLists()
+{
+    std::vector<std::string> vOut0=bbGetInputIn0();
+    std::vector<std::string> vOut1=bbGetInputIn1();
+    std::vector<std::string> vOut2=bbGetInputIn2();
+    std::vector<std::string> vOut3=bbGetInputIn3();
+    std::vector<std::string> vOut4=bbGetInputIn4();
+    std::vector<std::string> vOut5=bbGetInputIn5();
+    std::vector<std::string> vOut6=bbGetInputIn6();
+    std::vector<std::string> vOut7=bbGetInputIn7();
+    std::vector<std::string> vOut8=bbGetInputIn8();
+    std::vector<std::string> vOut9=bbGetInputIn9();
+    int i,ii,size      = bbGetInputIn0().size();
+    bool ok;
+    for (i=0; i<=size; i++)
+    {
+        for (ii=i; ii<=size; ii++)
+        {
+            ok=false;
+            if (bbGetInputType()==5)
+            {
+                if ( vOut0[i] > vOut0[ii] )
+                {
+                    ok = true;
+                }  // if vIn0[i] > vIn0[ii]     // string version
+            } // if Type == 5
+            if (bbGetInputType()==6)
+            {
+//                if ( std::stod( vOut0[i] ) > std::stod( vOut0[ii] ) )
+                if ( ::atof( vOut0[i].c_str() ) > ::atof( vOut0[ii].c_str() ) )
+                {
+                    ok = true;
+                }  // if vIn0[i] > vIn0[ii]     double version
+            } // if Type == 6
+
+            if (ok==true)
+            {
+                SwitchElement( &vOut0 , i ,ii );
+                SwitchElement( &vOut1 , i ,ii );
+                SwitchElement( &vOut2 , i ,ii );
+                SwitchElement( &vOut3 , i ,ii );
+                SwitchElement( &vOut4 , i ,ii );
+                SwitchElement( &vOut5 , i ,ii );
+                SwitchElement( &vOut6 , i ,ii );
+                SwitchElement( &vOut7 , i ,ii );
+                SwitchElement( &vOut8 , i ,ii );
+                SwitchElement( &vOut9 , i ,ii );
+            }  // if ok
+        } // for ii
+    } // for i
+    bbSetOutputOut0( vOut0 );
+    bbSetOutputOut1( vOut1 );
+    bbSetOutputOut2( vOut2 );
+    bbSetOutputOut3( vOut3 );
+    bbSetOutputOut4( vOut4 );
+    bbSetOutputOut5( vOut5 );
+    bbSetOutputOut6( vOut6 );
+    bbSetOutputOut7( vOut7 );
+    bbSetOutputOut8( vOut8 );
+    bbSetOutputOut9( vOut9 );
+}
+
+void VectorFilterString::SubString()
+{
+    std::vector<std::string> vOut0;
+    std::vector<std::string> vOut1;
+    std::vector<std::string> vOut2;
+    std::vector<std::string> vOut3;
+    std::vector<std::string> vOut4;
+    std::vector<std::string> vOut5;
+    std::vector<std::string> vOut6;
+    std::vector<std::string> vOut7;
+    std::vector<std::string> vOut8;
+    std::vector<std::string> vOut9;
+    int i,size  = bbGetInputIn0().size();
+    int sk1     = atoi( bbGetInputsk1().c_str() );
+    int sk2     = atoi( bbGetInputsk2().c_str() );
+    for (i=0; i<size; i++)
+    {
+            if ( i < bbGetInputIn0().size() ) { vOut0.push_back( bbGetInputIn0()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn1().size() ) { vOut1.push_back( bbGetInputIn1()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn2().size() ) { vOut2.push_back( bbGetInputIn2()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn3().size() ) { vOut3.push_back( bbGetInputIn3()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn4().size() ) { vOut4.push_back( bbGetInputIn4()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn5().size() ) { vOut5.push_back( bbGetInputIn5()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn6().size() ) { vOut6.push_back( bbGetInputIn6()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn7().size() ) { vOut7.push_back( bbGetInputIn7()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn8().size() ) { vOut8.push_back( bbGetInputIn8()[i].substr(sk1,sk2) );  }
+            if ( i < bbGetInputIn9().size() ) { vOut9.push_back( bbGetInputIn9()[i].substr(sk1,sk2) );  }
+    } // for i
+    bbSetOutputOut0( vOut0 );
+    bbSetOutputOut1( vOut1 );
+    bbSetOutputOut2( vOut2 );
+    bbSetOutputOut3( vOut3 );
+    bbSetOutputOut4( vOut4 );
+    bbSetOutputOut5( vOut5 );
+    bbSetOutputOut6( vOut6 );
+    bbSetOutputOut7( vOut7 );
+    bbSetOutputOut8( vOut8 );
+    bbSetOutputOut9( vOut9 );
+}
+
+
+
 
 void VectorFilterString::Process()
 {
@@ -225,7 +342,17 @@ void VectorFilterString::Process()
         InvertLists();
     }
 
+    if ( (bbGetInputType()==5)  ||  (bbGetInputType()==6)  )
+    {
+        OrderLists();
+    }
     
+    if (bbGetInputType()==7)
+    {
+        SubString();
+    }
+
+
 }
 //===== 
 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)