1 #ifndef PARALLEL_IFSTREAM
2 #define PARALLEL_IFSTREAM
12 virtual int_type sync()
14 return std::filebuf::sync();
17 virtual std::streamsize xsgetn( char_type* s, std::streamsize count )
19 return std::filebuf::xsgetn( s, count );
22 virtual int_type overflow( int_type c = traits_type::eof() )
24 return std::filebuf::overflow( c );
35 parallel_ifstream(
const char* filename, std::ios_base::openmode mode = std::ios_base::in )
39 this->open( filename, mode );
44 return _buf.is_open();
52 void open(
const char* filename, std::ios_base::openmode mode = std::ios_base::out )
54 _buf.open(filename, mode);
72 std::cout << s << std::endl;
76 const size_t buffersize = 1e+6;
77 unsigned char checksum = 0;
78 char buffer[buffersize];
81 std::streambuf& sbuf = *(file.rdbuf());
82 sbuf.pubsetbuf(buffer, buffersize);
83 file.open(
"/home/igel/work/lirmm/Scaffolding/data/big/azucena.dot");
85 checksum += (
unsigned char)c;
88 size_t avail1 = sbuf.in_avail();
91 for(
size_t i = 0; i < (buffersize-100); ++i){
94 checksum += (
unsigned char)c;
96 size_t avail2 = sbuf.in_avail();
100 checksum += (
unsigned char)c;
104 std::cout <<
"available data: "<<avail1<<
" "<<avail2<<
" checksum is "<<(int)checksum<<std::endl;
Definition: parallel_ifstream.hpp:9
Definition: parallel_ifstream.hpp:28