From 6a93fd21dd0bcc270544aad1f3d9342b4480868a Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA Date: Sun, 8 May 2016 10:03:25 +0200 Subject: [PATCH] #2947 BBTK Feature New Normal - new GetSubVector box in package std --- packages/std/src/bbstdGetSubVector.cxx | 65 ++++++++++++ packages/std/src/bbstdGetSubVector.h | 126 +++++++++++++++++++++++ packages/std/src/bbstdGetVectorElement.h | 2 +- 3 files changed, 192 insertions(+), 1 deletion(-) create mode 100644 packages/std/src/bbstdGetSubVector.cxx create mode 100644 packages/std/src/bbstdGetSubVector.h diff --git a/packages/std/src/bbstdGetSubVector.cxx b/packages/std/src/bbstdGetSubVector.cxx new file mode 100644 index 0000000..ec48c05 --- /dev/null +++ b/packages/std/src/bbstdGetSubVector.cxx @@ -0,0 +1,65 @@ +/* + # --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la SantÈ) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ */ + + +/*========================================================================= + Program: bbtk + Module: $RCSfile: bbstdGetVectorElement.cxx,v $ + Language: C++ + Date: $Date: 2012/11/16 08:51:32 $ + Version: $Revision: 1.4 $ +=========================================================================*/ + + +#include "bbstdGetSubVector.h" +#include "bbstdPackage.h" + + +namespace bbstd +{ + //==================================================================== + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(GetSubVector, + bbtk::AtomicBlackBox); + //==================================================================== + + //==================================================================== + // Add the specialized boxes to the package + + BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,GetSubVector,int8_t); + BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,GetSubVector,uint8_t); + BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,GetSubVector,int16_t); + BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,GetSubVector,uint16_t); + BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,GetSubVector,int32_t); + BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,GetSubVector,uint32_t); + ///\todo : diff between uint32_t and long? + BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,GetSubVector,long); + BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,GetSubVector,float); + BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,GetSubVector,double); + typedef std::string string; + BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,GetSubVector,string); + //==================================================================== + +} // namespace bbstd diff --git a/packages/std/src/bbstdGetSubVector.h b/packages/std/src/bbstdGetSubVector.h new file mode 100644 index 0000000..639aba7 --- /dev/null +++ b/packages/std/src/bbstdGetSubVector.h @@ -0,0 +1,126 @@ +/* + # --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la SantÈ) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ */ + + +/*========================================================================= + Program: bbtk + Module: $RCSfile: bbstdGetVectorElement.h,v $ + Language: C++ + Date: $Date: 2012/11/16 08:51:32 $ + Version: $Revision: 1.9 $ +=========================================================================*/ + + +#ifndef __bbstdGetSubVector_INCLUDED_h__ +#define __bbstdGetSubVector_INCLUDED_h__ + +#include "bbtkAtomicBlackBox.h" +#include "bbstd_EXPORT.h" + +namespace bbstd +{ + //================================================================= + // BlackBox declaration + template + class bbstd_EXPORT GetSubVector : public bbtk::AtomicBlackBox + { + BBTK_TEMPLATE_BLACK_BOX_INTERFACE(GetSubVector,bbtk::AtomicBlackBox,T); + BBTK_DECLARE_INPUT(In,std::vector); + BBTK_DECLARE_INPUT(I,int); + BBTK_DECLARE_INPUT(Size,int); + BBTK_DECLARE_INPUT(ErrorValue,T); + BBTK_DECLARE_OUTPUT(Out,std::vector); + BBTK_PROCESS(DoIt); + void DoIt(); + }; + //================================================================= + + //================================================================= + // BlackBox description + BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(GetSubVector,bbtk::AtomicBlackBox); + BBTK_NAME("Get"+bbtk::HumanTypeName >()+"SubVector"); + BBTK_AUTHOR("info-dev@creatis.insa-lyon.fr"); + // BBTK_DEFAULT_ADAPTOR(); + BBTK_DESCRIPTION("Gets the i-th element from the input vector ("+bbtk::TypeName >()); + typedef std::vector Tvector; + BBTK_TEMPLATE_INPUT(GetSubVector, In,"Input",Tvector); + BBTK_TEMPLATE_INPUT(GetSubVector, I, "Input",int); + BBTK_TEMPLATE_INPUT(GetSubVector, Size, "Input",int); + BBTK_TEMPLATE_INPUT(GetSubVector, ErrorValue, "ErrorValue",T); + BBTK_TEMPLATE_OUTPUT(GetSubVector,Out,"Output",Tvector); + BBTK_END_DESCRIBE_TEMPLATE_BLACK_BOX(GetSubVector); + //================================================================= + + //================================================================= + template + void GetSubVector::DoIt() + { + int i; + std::vector tmpVectResult; + if ( (bbGetInputI()<(int)bbGetInputIn().size()) && (bbGetInputI()>=0) && (bbGetInputSize()>=1) ) + { + for ( i=0 ; i + void GetSubVector::bbUserSetDefaultValues() + { + + } + //================================================================= + //================================================================= + template + void GetSubVector::bbUserInitializeProcessing() + { + + } + //================================================================= + //================================================================= + template + void GetSubVector::bbUserFinalizeProcessing() + { + + } + //================================================================= + +} // namespace bbstd + +#endif //__bbstdGetSubVector_INCLUDED_h__ + diff --git a/packages/std/src/bbstdGetVectorElement.h b/packages/std/src/bbstdGetVectorElement.h index 621ad34..a158470 100644 --- a/packages/std/src/bbstdGetVectorElement.h +++ b/packages/std/src/bbstdGetVectorElement.h @@ -76,7 +76,7 @@ namespace bbstd template void GetVectorElement::DoIt() { - if (( bbGetInputI() < bbGetInputIn().size() ) && ( bbGetInputI() >= 0 ) ) + if (( bbGetInputI() < (int)bbGetInputIn().size() ) && ( bbGetInputI() >= 0 ) ) { bbSetOutputOut( bbGetInputIn()[bbGetInputI()] ); } else { -- 2.47.1