void process_line(const std::string& line, T& dest) { csv_separator sep; Tokenizer tok(line, sep); Tokenizer::iterator s = tok.begin(); ItemWalker ir(s, tok.end()); tuple_for_each(ir, dest); }
constexpr const char* findColumnName(const ColumnDefinitions<ClassT, DataTs...>& colDefs, DataT ClassT::* pMember) { const char* columnName = nullptr; ColumnFinder<ClassT, DataT> columnFinder{ pMember, columnName }; tuple_for_each(colDefs, columnFinder); return columnName; }
void cartesian_product( T1 const& t1, T2 const& t2, F f ) { boost::fusion::for_each( t1, boost::bind<void>( tuple_for_each(), t2, _1, f ) ); }
inline __host__ __device__ void tuple_for_each( Tuple& t , Fun f ) { f( t.get_head() ); tuple_for_each( t.get_tail() , f ); }