2 // 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)
4 #include "bbstdVectorFilterString.h"
5 #include "bbstdPackage.h"
12 BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,VectorFilterString)
13 BBTK_BLACK_BOX_IMPLEMENTATION(VectorFilterString,bbtk::AtomicBlackBox);
15 // 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)
18 void VectorFilterString::CountConnectedRepetitions()
20 std::vector<std::string> vOut0;
21 std::vector<std::string> vOut1;
22 std::vector<std::string> vOut2;
23 std::vector<std::string> vOut3;
24 std::vector<std::string> vOut4;
25 std::vector<std::string> vOut5;
26 std::vector<std::string> vOut6;
27 std::vector<std::string> vOut7;
28 std::vector<std::string> vOut8;
29 std::vector<std::string> vOut9;
30 ConnectionRepetitions( bbGetInputIn0() , &vOut0 );
31 ConnectionRepetitions( bbGetInputIn1() , &vOut1 );
32 ConnectionRepetitions( bbGetInputIn2() , &vOut2 );
33 ConnectionRepetitions( bbGetInputIn3() , &vOut3 );
34 ConnectionRepetitions( bbGetInputIn4() , &vOut4 );
35 ConnectionRepetitions( bbGetInputIn5() , &vOut5 );
36 ConnectionRepetitions( bbGetInputIn6() , &vOut6 );
37 ConnectionRepetitions( bbGetInputIn7() , &vOut7 );
38 ConnectionRepetitions( bbGetInputIn8() , &vOut8 );
39 ConnectionRepetitions( bbGetInputIn9() , &vOut9 );
40 bbSetOutputOut0( vOut0 );
41 bbSetOutputOut1( vOut1 );
42 bbSetOutputOut2( vOut2 );
43 bbSetOutputOut3( vOut3 );
44 bbSetOutputOut4( vOut4 );
45 bbSetOutputOut5( vOut5 );
46 bbSetOutputOut6( vOut6 );
47 bbSetOutputOut7( vOut7 );
48 bbSetOutputOut8( vOut8 );
49 bbSetOutputOut9( vOut9 );
52 void VectorFilterString::ConnectionRepetitions( std::vector<std::string> vIn,std::vector<std::string> *vOut )
54 int i,size=vIn.size();
59 if (vIn[i].compare( vIn[itmp])==0)
64 vOut->push_back(std::to_string(acum));
68 vOut->push_back(std::to_string(acum));
71 void VectorFilterString::FilterByFindinIn0()
73 std::vector<std::string> vOut0;
74 std::vector<std::string> vOut1;
75 std::vector<std::string> vOut2;
76 std::vector<std::string> vOut3;
77 std::vector<std::string> vOut4;
78 std::vector<std::string> vOut5;
79 std::vector<std::string> vOut6;
80 std::vector<std::string> vOut7;
81 std::vector<std::string> vOut8;
82 std::vector<std::string> vOut9;
84 int i,size = bbGetInputIn0().size();
86 for (i=0; i<size; i++)
88 pos=bbGetInputIn0()[i].find( bbGetInputsk1());
91 vOut0.push_back( bbGetInputIn0()[i] );
92 if ( i < bbGetInputIn1().size() ) { vOut1.push_back( bbGetInputIn1()[i] ); }
93 if ( i < bbGetInputIn2().size() ) { vOut2.push_back( bbGetInputIn2()[i] ); }
94 if ( i < bbGetInputIn3().size() ) { vOut3.push_back( bbGetInputIn3()[i] ); }
95 if ( i < bbGetInputIn4().size() ) { vOut4.push_back( bbGetInputIn4()[i] ); }
96 if ( i < bbGetInputIn5().size() ) { vOut5.push_back( bbGetInputIn5()[i] ); }
97 if ( i < bbGetInputIn6().size() ) { vOut6.push_back( bbGetInputIn6()[i] ); }
98 if ( i < bbGetInputIn7().size() ) { vOut7.push_back( bbGetInputIn7()[i] ); }
99 if ( i < bbGetInputIn8().size() ) { vOut8.push_back( bbGetInputIn8()[i] ); }
100 if ( i < bbGetInputIn9().size() ) { vOut9.push_back( bbGetInputIn9()[i] ); }
104 bbSetOutputOut0( vOut0 );
105 bbSetOutputOut1( vOut1 );
106 bbSetOutputOut2( vOut2 );
107 bbSetOutputOut3( vOut3 );
108 bbSetOutputOut4( vOut4 );
109 bbSetOutputOut5( vOut5 );
110 bbSetOutputOut6( vOut6 );
111 bbSetOutputOut7( vOut7 );
112 bbSetOutputOut8( vOut8 );
113 bbSetOutputOut9( vOut9 );
116 void VectorFilterString::InsertStringPos()
118 std::vector<std::string> vOut0;
119 std::vector<std::string> vOut1;
120 std::vector<std::string> vOut2;
121 std::vector<std::string> vOut3;
122 std::vector<std::string> vOut4;
123 std::vector<std::string> vOut5;
124 std::vector<std::string> vOut6;
125 std::vector<std::string> vOut7;
126 std::vector<std::string> vOut8;
127 std::vector<std::string> vOut9;
128 int i,size = bbGetInputIn0().size();
129 std::string sk1 = bbGetInputsk1();
130 int pos = atoi( bbGetInputsk2().c_str() );
131 for (i=0; i<size; i++)
133 vOut0.push_back( bbGetInputIn0()[i].insert(pos,sk1) );
134 if ( i < bbGetInputIn1().size() ) { vOut1.push_back( bbGetInputIn1()[i].insert(pos,sk1) ); }
135 if ( i < bbGetInputIn2().size() ) { vOut2.push_back( bbGetInputIn2()[i].insert(pos,sk1) ); }
136 if ( i < bbGetInputIn3().size() ) { vOut3.push_back( bbGetInputIn3()[i].insert(pos,sk1) ); }
137 if ( i < bbGetInputIn4().size() ) { vOut4.push_back( bbGetInputIn4()[i].insert(pos,sk1) ); }
138 if ( i < bbGetInputIn5().size() ) { vOut5.push_back( bbGetInputIn5()[i].insert(pos,sk1) ); }
139 if ( i < bbGetInputIn6().size() ) { vOut6.push_back( bbGetInputIn6()[i].insert(pos,sk1) ); }
140 if ( i < bbGetInputIn7().size() ) { vOut7.push_back( bbGetInputIn7()[i].insert(pos,sk1) ); }
141 if ( i < bbGetInputIn8().size() ) { vOut8.push_back( bbGetInputIn8()[i].insert(pos,sk1) ); }
142 if ( i < bbGetInputIn9().size() ) { vOut9.push_back( bbGetInputIn9()[i].insert(pos,sk1) ); }
144 bbSetOutputOut0( vOut0 );
145 bbSetOutputOut1( vOut1 );
146 bbSetOutputOut2( vOut2 );
147 bbSetOutputOut3( vOut3 );
148 bbSetOutputOut4( vOut4 );
149 bbSetOutputOut5( vOut5 );
150 bbSetOutputOut6( vOut6 );
151 bbSetOutputOut7( vOut7 );
152 bbSetOutputOut8( vOut8 );
153 bbSetOutputOut9( vOut9 );
156 void VectorFilterString::InvertLists()
158 std::vector<std::string> vOut0;
159 std::vector<std::string> vOut1;
160 std::vector<std::string> vOut2;
161 std::vector<std::string> vOut3;
162 std::vector<std::string> vOut4;
163 std::vector<std::string> vOut5;
164 std::vector<std::string> vOut6;
165 std::vector<std::string> vOut7;
166 std::vector<std::string> vOut8;
167 std::vector<std::string> vOut9;
168 int i,size = bbGetInputIn0().size();
169 for (i=size-1; i>=0; i--)
171 if ( i < bbGetInputIn0().size() ) { vOut0.push_back( bbGetInputIn0()[i] ); }
172 if ( i < bbGetInputIn1().size() ) { vOut1.push_back( bbGetInputIn1()[i] ); }
173 if ( i < bbGetInputIn2().size() ) { vOut2.push_back( bbGetInputIn2()[i] ); }
174 if ( i < bbGetInputIn3().size() ) { vOut3.push_back( bbGetInputIn3()[i] ); }
175 if ( i < bbGetInputIn4().size() ) { vOut4.push_back( bbGetInputIn4()[i] ); }
176 if ( i < bbGetInputIn5().size() ) { vOut5.push_back( bbGetInputIn5()[i] ); }
177 if ( i < bbGetInputIn6().size() ) { vOut6.push_back( bbGetInputIn6()[i] ); }
178 if ( i < bbGetInputIn7().size() ) { vOut7.push_back( bbGetInputIn7()[i] ); }
179 if ( i < bbGetInputIn8().size() ) { vOut8.push_back( bbGetInputIn8()[i] ); }
180 if ( i < bbGetInputIn9().size() ) { vOut9.push_back( bbGetInputIn9()[i] ); }
182 bbSetOutputOut0( vOut0 );
183 bbSetOutputOut1( vOut1 );
184 bbSetOutputOut2( vOut2 );
185 bbSetOutputOut3( vOut3 );
186 bbSetOutputOut4( vOut4 );
187 bbSetOutputOut5( vOut5 );
188 bbSetOutputOut6( vOut6 );
189 bbSetOutputOut7( vOut7 );
190 bbSetOutputOut8( vOut8 );
191 bbSetOutputOut9( vOut9 );
195 void VectorFilterString::SwitchElement(std::vector<std::string> *pVec, int i, int ii )
199 if ( ( i < pVec->size() ) && ( ii < pVec->size() ) )
202 (*pVec)[i] = (*pVec)[ii];
207 void VectorFilterString::OrderLists()
209 std::vector<std::string> vOut0=bbGetInputIn0();
210 std::vector<std::string> vOut1=bbGetInputIn1();
211 std::vector<std::string> vOut2=bbGetInputIn2();
212 std::vector<std::string> vOut3=bbGetInputIn3();
213 std::vector<std::string> vOut4=bbGetInputIn4();
214 std::vector<std::string> vOut5=bbGetInputIn5();
215 std::vector<std::string> vOut6=bbGetInputIn6();
216 std::vector<std::string> vOut7=bbGetInputIn7();
217 std::vector<std::string> vOut8=bbGetInputIn8();
218 std::vector<std::string> vOut9=bbGetInputIn9();
219 int i,ii,size = bbGetInputIn0().size();
221 for (i=0; i<size; i++)
223 for (ii=i; ii<size; ii++)
226 if (bbGetInputType()==5)
228 if ( vOut0[i] > vOut0[ii] )
231 } // if vIn0[i] > vIn0[ii] // string version
233 if (bbGetInputType()==6)
235 // if ( std::stod( vOut0[i] ) > std::stod( vOut0[ii] ) )
236 if ( ::atof( vOut0[i].c_str() ) > ::atof( vOut0[ii].c_str() ) )
239 } // if vIn0[i] > vIn0[ii] double version
244 SwitchElement( &vOut0 , i ,ii );
245 SwitchElement( &vOut1 , i ,ii );
246 SwitchElement( &vOut2 , i ,ii );
247 SwitchElement( &vOut3 , i ,ii );
248 SwitchElement( &vOut4 , i ,ii );
249 SwitchElement( &vOut5 , i ,ii );
250 SwitchElement( &vOut6 , i ,ii );
251 SwitchElement( &vOut7 , i ,ii );
252 SwitchElement( &vOut8 , i ,ii );
253 SwitchElement( &vOut9 , i ,ii );
257 bbSetOutputOut0( vOut0 );
258 bbSetOutputOut1( vOut1 );
259 bbSetOutputOut2( vOut2 );
260 bbSetOutputOut3( vOut3 );
261 bbSetOutputOut4( vOut4 );
262 bbSetOutputOut5( vOut5 );
263 bbSetOutputOut6( vOut6 );
264 bbSetOutputOut7( vOut7 );
265 bbSetOutputOut8( vOut8 );
266 bbSetOutputOut9( vOut9 );
269 void VectorFilterString::SubString()
271 std::vector<std::string> vOut0;
272 std::vector<std::string> vOut1;
273 std::vector<std::string> vOut2;
274 std::vector<std::string> vOut3;
275 std::vector<std::string> vOut4;
276 std::vector<std::string> vOut5;
277 std::vector<std::string> vOut6;
278 std::vector<std::string> vOut7;
279 std::vector<std::string> vOut8;
280 std::vector<std::string> vOut9;
281 int i,size = bbGetInputIn0().size();
282 int sk1 = atoi( bbGetInputsk1().c_str() );
283 int sk2 = atoi( bbGetInputsk2().c_str() );
284 for (i=0; i<size; i++)
286 if ( i < bbGetInputIn0().size() ) { vOut0.push_back( bbGetInputIn0()[i].substr(sk1,sk2) ); }
287 if ( i < bbGetInputIn1().size() ) { vOut1.push_back( bbGetInputIn1()[i].substr(sk1,sk2) ); }
288 if ( i < bbGetInputIn2().size() ) { vOut2.push_back( bbGetInputIn2()[i].substr(sk1,sk2) ); }
289 if ( i < bbGetInputIn3().size() ) { vOut3.push_back( bbGetInputIn3()[i].substr(sk1,sk2) ); }
290 if ( i < bbGetInputIn4().size() ) { vOut4.push_back( bbGetInputIn4()[i].substr(sk1,sk2) ); }
291 if ( i < bbGetInputIn5().size() ) { vOut5.push_back( bbGetInputIn5()[i].substr(sk1,sk2) ); }
292 if ( i < bbGetInputIn6().size() ) { vOut6.push_back( bbGetInputIn6()[i].substr(sk1,sk2) ); }
293 if ( i < bbGetInputIn7().size() ) { vOut7.push_back( bbGetInputIn7()[i].substr(sk1,sk2) ); }
294 if ( i < bbGetInputIn8().size() ) { vOut8.push_back( bbGetInputIn8()[i].substr(sk1,sk2) ); }
295 if ( i < bbGetInputIn9().size() ) { vOut9.push_back( bbGetInputIn9()[i].substr(sk1,sk2) ); }
297 bbSetOutputOut0( vOut0 );
298 bbSetOutputOut1( vOut1 );
299 bbSetOutputOut2( vOut2 );
300 bbSetOutputOut3( vOut3 );
301 bbSetOutputOut4( vOut4 );
302 bbSetOutputOut5( vOut5 );
303 bbSetOutputOut6( vOut6 );
304 bbSetOutputOut7( vOut7 );
305 bbSetOutputOut8( vOut8 );
306 bbSetOutputOut9( vOut9 );
310 void VectorFilterString::EraseDuplicateLines()
312 std::vector< std::vector< std::string > * > pLstVec;
313 std::vector< std::vector< std::string > * > pLstVecOut;
314 std::vector< std::string > In0 = bbGetInputIn0();
315 std::vector< std::string > In1 = bbGetInputIn1();
316 std::vector< std::string > In2 = bbGetInputIn2();
317 std::vector< std::string > In3 = bbGetInputIn3();
318 std::vector< std::string > In4 = bbGetInputIn4();
319 std::vector< std::string > In5 = bbGetInputIn5();
320 std::vector< std::string > In6 = bbGetInputIn6();
321 std::vector< std::string > In7 = bbGetInputIn7();
322 std::vector< std::string > In8 = bbGetInputIn8();
323 std::vector< std::string > In9 = bbGetInputIn9();
324 if (bbGetInputIn0().size()!=0) { pLstVec.push_back( &In0 ); }
325 if (bbGetInputIn1().size()!=0) { pLstVec.push_back( &In1 ); }
326 if (bbGetInputIn2().size()!=0) { pLstVec.push_back( &In2 ); }
327 if (bbGetInputIn3().size()!=0) { pLstVec.push_back( &In3 ); }
328 if (bbGetInputIn4().size()!=0) { pLstVec.push_back( &In4 ); }
329 if (bbGetInputIn5().size()!=0) { pLstVec.push_back( &In5 ); }
330 if (bbGetInputIn6().size()!=0) { pLstVec.push_back( &In6 ); }
331 if (bbGetInputIn7().size()!=0) { pLstVec.push_back( &In7 ); }
332 if (bbGetInputIn8().size()!=0) { pLstVec.push_back( &In8 ); }
333 if (bbGetInputIn9().size()!=0) { pLstVec.push_back( &In9 ); }
334 std::vector< std::string > Out0;
335 std::vector< std::string > Out1;
336 std::vector< std::string > Out2;
337 std::vector< std::string > Out3;
338 std::vector< std::string > Out4;
339 std::vector< std::string > Out5;
340 std::vector< std::string > Out6;
341 std::vector< std::string > Out7;
342 std::vector< std::string > Out8;
343 std::vector< std::string > Out9;
344 pLstVecOut.push_back( &Out0 );
345 pLstVecOut.push_back( &Out1 );
346 pLstVecOut.push_back( &Out2 );
347 pLstVecOut.push_back( &Out3 );
348 pLstVecOut.push_back( &Out4 );
349 pLstVecOut.push_back( &Out5 );
350 pLstVecOut.push_back( &Out6 );
351 pLstVecOut.push_back( &Out7 );
352 pLstVecOut.push_back( &Out8 );
353 pLstVecOut.push_back( &Out9 );
356 if (bbGetInputIn0().size()!=0) // At least one element
360 for (ipLstvec=1;ipLstvec<pLstVec.size();ipLstvec++)
362 if ( (*pLstVec[ipLstvec]).size()!=(*pLstVec[0]).size() ) { okSizeVec=false; }
364 if ( okSizeVec==false)
366 printf("EED VectorFilterString::Process WARNING! vectors are not of the same size.\n");
372 if (bbGetInputType()==8) { size = pLstVec.size(); }
373 if (bbGetInputType()==9) { size = 1; }
374 for (iLine=0 ; iLine < (*pLstVec[0]).size() ; iLine++ )
377 // for ( ipLstvec2=0 ; ipLstvec2<pLstVec.size() ; ipLstvec2++)
378 // for ( ipLstvec2=0 ; ipLstvec2<1 ; ipLstvec2++)
379 for ( ipLstvec2=0 ; ipLstvec2<size ; ipLstvec2++)
381 tmp1=(*pLstVec[ipLstvec2])[iLine];
382 tmp2=(*pLstVec[ipLstvec2])[iLine-1];
383 if ( tmp1.compare(tmp2)!=0 ) { okLine=true; }
385 if ( (okLine==true) || (iLine==0) )
387 for (ipLstvec2=0 ; ipLstvec2<pLstVec.size() ; ipLstvec2++)
389 (*pLstVecOut[ipLstvec2]).push_back( (*pLstVec[ipLstvec2])[iLine] );
394 } // bbGetInputIn0() size
395 bbSetOutputOut0( Out0 );
396 bbSetOutputOut1( Out1 );
397 bbSetOutputOut2( Out2 );
398 bbSetOutputOut3( Out3 );
399 bbSetOutputOut4( Out4 );
400 bbSetOutputOut5( Out5 );
401 bbSetOutputOut6( Out6 );
402 bbSetOutputOut7( Out7 );
403 bbSetOutputOut8( Out8 );
404 bbSetOutputOut9( Out9 );
409 void VectorFilterString::Process()
412 // THE MAIN PROCESSING METHOD BODY
413 // Here we simply set the input 'In' value to the output 'Out'
414 // And print out the output value
415 // INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
416 // void bbSet{Input|Output}NAME(const TYPE&)
417 // const TYPE& bbGet{Input|Output}NAME() const
419 // * NAME is the name of the input/output
420 // (the one provided in the attribute 'name' of the tag 'input')
421 // * TYPE is the C++ type of the input/output
422 // (the one provided in the attribute 'type' of the tag 'input')
424 // bbSetOutputOut( bbGetInputIn() );
425 // std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
427 if (bbGetInputType()==0)
429 CountConnectedRepetitions();
432 if (bbGetInputType()==2)
437 if (bbGetInputType()==3)
442 if (bbGetInputType()==4)
447 if ( (bbGetInputType()==5) || (bbGetInputType()==6) )
452 if (bbGetInputType()==7)
456 if ( (bbGetInputType()==8) || (bbGetInputType()==9) )
458 EraseDuplicateLines();
462 // 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)
464 void VectorFilterString::bbUserSetDefaultValues()
467 // SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX
468 // Here we initialize the input 'In' to 0
474 // 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)
476 void VectorFilterString::bbUserInitializeProcessing()
479 // THE INITIALIZATION METHOD BODY :
481 // but this is where you should allocate the internal/output pointers
487 // 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)
489 void VectorFilterString::bbUserFinalizeProcessing()
492 // THE FINALIZATION METHOD BODY :
494 // but this is where you should desallocate the internal/output pointers
499 } // EO namespace bbstd