SpectMorph
smmmapin.hh
1 // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl-2.1.html
2 
3 #ifndef SPECTMORPH_MMAP_IN_HH
4 #define SPECTMORPH_MMAP_IN_HH
5 
6 #include <string>
7 #include <glib.h>
8 #include "smgenericin.hh"
9 
10 namespace SpectMorph
11 {
12 
13 class MMapIn : public GenericIn
14 {
15  unsigned char *mapfile;
16  unsigned char *mapend;
17  unsigned char *pos;
18  GMappedFile *g_mapped_file;
19 
20  MMapIn (unsigned char *mapfile, unsigned char *mapend, GMappedFile *g_mapped_file);
21  ~MMapIn();
22 public:
23  static GenericIn* open (const std::string& filename);
24  static GenericIn* open_mem (unsigned char *mem_start, unsigned char *mem_end);
25 
26  int get_byte(); // like fgetc
27  int read (void *ptr, size_t size);
28  bool skip (size_t size);
29  unsigned char *mmap_mem (size_t& remaining);
30  size_t get_pos();
31  GenericIn *open_subfile (size_t pos, size_t len);
32 };
33 
34 }
35 
36 #endif /* SPECTMORPH_MMAP_IN_HH */
Generic Input Stream.
Definition: smgenericin.hh:18
Definition: smmmapin.hh:14
int read(void *ptr, size_t size)
Definition: smmmapin.cc:74
unsigned char * mmap_mem(size_t &remaining)
Definition: smmmapin.cc:101
GenericIn * open_subfile(size_t pos, size_t len)
Definition: smmmapin.cc:114
bool skip(size_t size)
Definition: smmmapin.cc:87
size_t get_pos()
Definition: smmmapin.cc:108
int get_byte()
Definition: smmmapin.cc:65