From 9f98df479679f8d3f4d63986f1e8a9921853e2b9 Mon Sep 17 00:00:00 2001 From: jean-pierre roux Date: Mon, 28 Feb 2011 14:07:09 +0000 Subject: [PATCH] Add StringVectorToNumericalVector box to package std --- .../bbstdStringVectorToNumericalVector.cxx | 111 ++++++++++++++++++ .../src/bbstdStringVectorToNumericalVector.h | 105 +++++++++++++++++ 2 files changed, 216 insertions(+) create mode 100644 packages/std/src/bbstdStringVectorToNumericalVector.cxx create mode 100644 packages/std/src/bbstdStringVectorToNumericalVector.h diff --git a/packages/std/src/bbstdStringVectorToNumericalVector.cxx b/packages/std/src/bbstdStringVectorToNumericalVector.cxx new file mode 100644 index 0000000..4a735e9 --- /dev/null +++ b/packages/std/src/bbstdStringVectorToNumericalVector.cxx @@ -0,0 +1,111 @@ +/*========================================================================= + Program: bbtk + Module: $RCSfile: bbstdStringVectorToNumericalVector.cxx,v $ + Language: C++ + Date: $Date: 2011/02/28 14:07:09 $ + Version: $Revision: 1.1 $ +=========================================================================*/ + +/* --------------------------------------------------------------------- + +* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) +* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux +* +* 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. +* ------------------------------------------------------------------------ */ + +#include "bbstdStringVectorToNumericalVector.h" +#include "bbstdPackage.h" + +namespace bbstd +{ + //==================================================================== + BBTK_BLACK_BOX_TEMPLATE_IMPLEMENTATION(StringVectorToNumericalVector, + bbtk::AtomicBlackBox); + //==================================================================== + + //==================================================================== + // Template specialization of decode_item +template <> int8_t StringVectorToNumericalVector ::decode_item(const std::string& s) +{ + return (int8_t)atoi ( s.c_str() ); +} + +template <> uint8_t StringVectorToNumericalVector ::decode_item(const std::string& s) +{ + return (uint8_t)atoi ( s.c_str() ); +} + +template <> int16_t StringVectorToNumericalVector ::decode_item(const std::string& s) +{ + return (int16_t)atoi ( s.c_str() ); +} + +template <> uint16_t StringVectorToNumericalVector ::decode_item(const std::string& s) +{ + return (uint16_t)atoi ( s.c_str() ); +} + +template <> int32_t StringVectorToNumericalVector ::decode_item(const std::string& s) +{ + return (int32_t)atoi ( s.c_str() ); +} + +template <> uint32_t StringVectorToNumericalVector ::decode_item(const std::string& s) +{ + return (uint32_t)atoi ( s.c_str() ); +} + +template <> long StringVectorToNumericalVector ::decode_item(const std::string& s) +{ + return (long)atoi ( s.c_str() ); +} + +template <> float StringVectorToNumericalVector ::decode_item(const std::string& s) +{ + return (float)atof ( s.c_str() ); +} + +template <> double StringVectorToNumericalVector ::decode_item(const std::string& s) +{ + return atof ( s.c_str() ); +} + +template <> std::string StringVectorToNumericalVector ::decode_item(const std::string& s) +{ + return s; +} + +//==================================================================== + +//==================================================================== +// Add the specialized adaptors to the package + +BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringVectorToNumericalVector,int8_t); +BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringVectorToNumericalVector,uint8_t); +BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringVectorToNumericalVector,int16_t); +BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringVectorToNumericalVector,uint16_t); +BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringVectorToNumericalVector,int32_t); +BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringVectorToNumericalVector,uint32_t); +BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringVectorToNumericalVector,long); +BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringVectorToNumericalVector,float); +BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringVectorToNumericalVector,double); +typedef std::string string; +BBTK_ADD_TEMPLATE_BLACK_BOX_TO_PACKAGE(std,StringVectorToNumericalVector,string); +//==================================================================== + +} // namespace bbstd diff --git a/packages/std/src/bbstdStringVectorToNumericalVector.h b/packages/std/src/bbstdStringVectorToNumericalVector.h new file mode 100644 index 0000000..01b25a2 --- /dev/null +++ b/packages/std/src/bbstdStringVectorToNumericalVector.h @@ -0,0 +1,105 @@ +/*========================================================================= + Program: bbtk + Module: $RCSfile: bbstdStringVectorToNumericalVector.h,v $ + Language: C++ + Date: $Date: 2011/02/28 14:07:09 $ + Version: $Revision: 1.1 $ +=========================================================================*/ + +/* --------------------------------------------------------------------- + +* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) +* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux +* +* 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. +* ------------------------------------------------------------------------ */ + + +#ifndef __bbstdStringVectorToNumericalVector_INCLUDED_h__ +#define __bbstdStringVectorToNumericalVector_INCLUDED_h__ + +#include "bbtkAtomicBlackBox.h" +#include "bbstd_EXPORT.h" + +namespace bbstd +{ + //================================================================= + // BlackBox declaration + template + class bbstd_EXPORT StringVectorToNumericalVector : public bbtk::AtomicBlackBox + { + BBTK_TEMPLATE_BLACK_BOX_INTERFACE(StringVectorToNumericalVector,bbtk::AtomicBlackBox,T); + BBTK_DECLARE_INPUT(In,std::vector); + BBTK_DECLARE_OUTPUT(Out,std::vector); + BBTK_PROCESS(DoIt); + void DoIt(); + T decode_item(const std::string&); + }; + //================================================================= + + //================================================================= + // BlackBox description + BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(StringVectorToNumericalVector,bbtk::AtomicBlackBox); + BBTK_NAME("StringVectorTo"+bbtk::HumanTypeName >()); + BBTK_AUTHOR("jpr@creatis.univ-lyon1.fr"); + BBTK_DEFAULT_ADAPTOR(); + BBTK_DESCRIPTION("Converts the content of the input string vector to a " + +bbtk::HumanTypeName >() + +" ("+bbtk::TypeName >()+")"); + BBTK_TEMPLATE_INPUT(StringVectorToNumericalVector, In, "Input", std::vector); + typedef std::vector Tvector; + BBTK_TEMPLATE_OUTPUT(StringVectorToNumericalVector, Out, "Output", Tvector); + BBTK_END_DESCRIBE_TEMPLATE_BLACK_BOX(StringVectorToNumericalVector); + //================================================================= + + + template void StringVectorToNumericalVector::bbUserSetDefaultValues() {} + template void StringVectorToNumericalVector::bbUserInitializeProcessing() {} + template void StringVectorToNumericalVector::bbUserFinalizeProcessing() {} + //================================================================= + template + void StringVectorToNumericalVector::DoIt() + { + // std::cout << "StringVectorToNumericalVector<"<()<<">::DoIt()"< // recopie? // JPR + //std::vector vect (bbGetInputIn() ); + + // get a std::string, add it to the > + int lgt=bbGetInputIn().size(); + for (int i=0; ibbGetOutputOut().size(); + for (int j=0; jbbGetOutputOut()[j] << std::endl; + } + // end just to see // JPR + } + //================================================================= + + +} // namespace bbstd + +#endif //__bbstdStringVectorToNumericalVector_INCLUDED_h__ -- 2.47.1