AMF-Placer  2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
readZip.h
Go to the documentation of this file.
1 
25 #ifndef _READZIP
26 #define _READZIP
27 
28 #include <cstdio>
29 #include <iostream>
30 
31 // create a FILEBUF to read the unzip file pipe
32 
33 struct FILEbuf : std::streambuf
34 {
35  FILEbuf(FILE *fp) : fp_(fp)
36  {
37  }
38  int underflow()
39  {
40  if (this->gptr() == this->egptr())
41  {
42  int size = fread(this->buffer_, 1, int(s_size), this->fp_);
43  if (0 < size)
44  {
45  this->setg(this->buffer_, this->buffer_, this->buffer_ + size);
46  }
47  }
48  return this->gptr() == this->egptr() ? traits_type::eof() : traits_type::to_int_type(*gptr());
49  }
50  FILE *fp_;
51  enum
52  {
53  s_size = 1024
54  };
55  char buffer_[s_size];
56 };
57 
58 #endif
FILEbuf::FILEbuf
FILEbuf(FILE *fp)
Definition: readZip.h:35
FILEbuf::buffer_
char buffer_[s_size]
Definition: readZip.h:55
FILEbuf
Definition: readZip.h:34
FILEbuf::underflow
int underflow()
Definition: readZip.h:38
FILEbuf::s_size
@ s_size
Definition: readZip.h:53
FILEbuf::fp_
FILE * fp_
Definition: readZip.h:50