From: Takenori Y. <tak...@us...> - 2015-12-14 11:56:44
|
Update of /cvsroot/sp-tk/SPTK4/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv18467 Modified Files: sptk_utils.cc sptk_utils.h Log Message: modify io functions Index: sptk_utils.cc =================================================================== RCS file: /cvsroot/sp-tk/SPTK4/src/sptk_utils.cc,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sptk_utils.cc 25 Nov 2015 11:35:26 -0000 1.3 --- sptk_utils.cc 14 Dec 2015 11:56:42 -0000 1.4 *************** *** 47,58 **** #include <algorithm> #include <cerrno> #include <cstdlib> namespace sptk { ! bool ReadStream(const bool& zero_padding, const int& size, std::vector<double>* sequence_to_read, std::istream* input_stream) { ! if (1 > size || NULL == sequence_to_read || NULL == input_stream) --- 47,59 ---- #include <algorithm> #include <cerrno> + #include <cmath> #include <cstdlib> namespace sptk { ! bool ReadStream(const bool& zero_padding, const int& read_size, std::vector<double>* sequence_to_read, std::istream* input_stream) { ! if (1 > read_size || NULL == sequence_to_read || NULL == input_stream) *************** *** 62,69 **** return false; ! if (static_cast<std::size_t>(size) > sequence_to_read->size()) ! sequence_to_read->resize(size); ! const int num_bytes(sizeof((*sequence_to_read)[0]) * size); input_stream->read(reinterpret_cast<char*>(&((*sequence_to_read)[0])), num_bytes); --- 63,71 ---- return false; ! if (static_cast<std::size_t>(read_size) > sequence_to_read->size()) ! sequence_to_read->resize(read_size); ! const int type_byte(sizeof((*sequence_to_read)[0])); ! const int num_bytes(type_byte * read_size); input_stream->read(reinterpret_cast<char*>(&((*sequence_to_read)[0])), num_bytes); *************** *** 73,78 **** return !input_stream->fail(); } else if (zero_padding && 0 < gcount) { ! std::fill(sequence_to_read->end() - ! (num_bytes - gcount) / sizeof((*sequence_to_read)[0]), sequence_to_read->end(), 0.0); return !input_stream->bad(); --- 75,86 ---- return !input_stream->fail(); } else if (zero_padding && 0 < gcount) { ! // Use std::ceil to zero the last incomplete data ! // as gcount may not be a multiple of sizeof(double). ! const int num_zeros(std::ceil( ! static_cast<double>(num_bytes - gcount) / type_byte)); ! if (num_zeros < 0) ! return false; // Something wrong! ! ! std::fill(sequence_to_read->end() - num_zeros, sequence_to_read->end(), 0.0); return !input_stream->bad(); *************** *** 82,97 **** } ! bool WriteStream(const int& size, const std::vector<double>& sequence_to_write, std::ostream* output_stream) { ! if (1 > size || NULL == output_stream) return false; ! if (static_cast<std::size_t>(size) > sequence_to_write.size()) return false; output_stream->write(reinterpret_cast<const char*>(&(sequence_to_write[0])), ! sizeof(sequence_to_write[0]) * size); return !output_stream->fail(); --- 90,105 ---- } ! bool WriteStream(const int& write_size, const std::vector<double>& sequence_to_write, std::ostream* output_stream) { ! if (1 > write_size || NULL == output_stream) return false; ! if (static_cast<std::size_t>(write_size) > sequence_to_write.size()) return false; output_stream->write(reinterpret_cast<const char*>(&(sequence_to_write[0])), ! sizeof(sequence_to_write[0]) * write_size); return !output_stream->fail(); Index: sptk_utils.h =================================================================== RCS file: /cvsroot/sp-tk/SPTK4/src/sptk_utils.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sptk_utils.h 25 Nov 2015 11:35:26 -0000 1.3 --- sptk_utils.h 14 Dec 2015 11:56:42 -0000 1.4 *************** *** 55,62 **** static const char* const kVersion("4.0"); ! bool ReadStream(const bool& zero_padding, const int& size, std::vector<double>* sequence_to_read, std::istream* input_stream); ! bool WriteStream(const int& size, const std::vector<double>& sequence_to_write, std::ostream* output_stream); --- 55,62 ---- static const char* const kVersion("4.0"); ! bool ReadStream(const bool& zero_padding, const int& read_size, std::vector<double>* sequence_to_read, std::istream* input_stream); ! bool WriteStream(const int& write_size, const std::vector<double>& sequence_to_write, std::ostream* output_stream); |