#ifndef __bbstdVectorToString_INCLUDED_h__ #define __bbstdVectorToString_INCLUDED_h__ #include "bbtkAtomicBlackBox.h" namespace bbstd { //================================================================= // BlackBox declaration template class VectorToString : public bbtk::AtomicBlackBox { BBTK_USER_BLACK_BOX_INTERFACE(VectorToString,bbtk::AtomicBlackBox); BBTK_DECLARE_INPUT(In,std::vector); BBTK_DECLARE_INPUT(Separator,std::string); BBTK_DECLARE_OUTPUT(Out,std::string); BBTK_PROCESS(DoIt); void DoIt(); virtual void bbUserConstructor(); }; //================================================================= //================================================================= // BlackBox description BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(VectorToString); BBTK_NAME(bbtk::HumanTypeName >()+"ToString"); BBTK_AUTHOR("laurent.guigues@creatis.insa-lyon.fr"); BBTK_DEFAULT_ADAPTOR(); BBTK_DESCRIPTION("Converts the content of the input vector ("+bbtk::TypeName >()+") to a string in which each item is separated by the value of the input 'Separator'"); typedef std::vector Tvector; BBTK_TEMPLATE_INPUT(VectorToString, In,"Input",Tvector); BBTK_TEMPLATE_INPUT(VectorToString, Separator,"Separator of item in the output string. Default is whitespace.",std::string); BBTK_TEMPLATE_OUTPUT(VectorToString, Out,"Output",std::string); BBTK_END_DESCRIBE_TEMPLATE_BLACK_BOX(VectorToString); //================================================================= //================================================================= template void VectorToString::DoIt() { std::string out; typename std::vector::const_iterator i; for (i=bbmInputIn.begin();i!=bbmInputIn.end();++i) { if (i!=bbmInputIn.begin()) out += bbGetInputSeparator(); std::ostringstream s; s << *i; out += s.str(); } bbSetOutputOut(out); } //================================================================= //================================================================= template void VectorToString::bbUserConstructor() { bbSetInputSeparator(" "); } //================================================================= } // namespace bbstd #endif //__bbstdVectorToString_INCLUDED_h__