#ifndef PIPE_TRANSFER_H_ #define PIPE_TRANSFER_H_ template void write_vector_to_pipe(int fd, const T & std_vector) { guint32 size = std_vector.size(); write(fd, &size, sizeof(guint32)); write(fd, &std_vector[0], size*sizeof(decltype(std_vector.back()))); } template void write_vector_to_pipe(int fd, const std::vector< std::vector >, std::allocator< std::vector > > >& std_vector_vector) { guint32 size = std_vector_vector.size(); write(fd, &size, sizeof(guint32)); for (guint32 i = 0; i < size; ++i) { write_vector_to_pipe(fd, std_vector_vector[i]); } } template void read_vector_from_pipe(int fd, T & std_vector) { guint32 size = std_vector.size(); read(fd, &size, sizeof(guint32)); std_vector.resize(size); read(fd, &std_vector[0], size*sizeof(decltype(std_vector.back()))); } template void read_vector_from_pipe(int fd, std::vector< std::vector >, std::allocator< std::vector > > >& std_vector_vector) { guint32 size = std_vector_vector.size(); read(fd, &size, sizeof(guint32)); std_vector_vector.resize(size); for (guint32 i = 0; i < size; ++i) { read_vector_from_pipe(fd, std_vector_vector[i]); } } #endif