~ubuntu-branches/ubuntu/maverick/freecad/maverick

« back to all changes in this revision

Viewing changes to src/Base/zipios/zipinputstreambuf.h

  • Committer: Bazaar Package Importer
  • Author(s): Adam C. Powell, IV
  • Date: 2010-01-11 08:48:33 UTC
  • mfrom: (3.1.3 sid)
  • Revision ID: james.westby@ubuntu.com-20100111084833-4g9vgdqbkw8u34zb
Tags: 0.9.2646.5-1
* New upstream version (closes: #561696).
* Added swig to Build-Depends (closes: #563523, #563772).
* Removed python-opencv from Build-Depends and Recommends (closes: #560768).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef ZIPINPUTSTREAMBUF_H
2
 
#define ZIPINPUTSTREAMBUF_H
3
 
 
4
 
#include "zipios-config.h"
5
 
 
6
 
#include <vector>
7
 
 
8
 
#include <zlib.h>
9
 
 
10
 
#include "fcoll.h"
11
 
#include "inflateinputstreambuf.h"
12
 
#include "ziphead.h"
13
 
 
14
 
namespace zipios {
15
 
 
16
 
/** ZipInputStreambuf is a zip input streambuf filter.
17
 
 */
18
 
class ZipInputStreambuf : public InflateInputStreambuf {
19
 
public:
20
 
  /** ZipInputStreambuf constructor.
21
 
      @param inbuf the streambuf to use for input.
22
 
      @param s_pos a position to reset the inbuf to before reading. Specify
23
 
      -1 to read from the current position.
24
 
      @param del_inbuf if true is specified inbuf will be deleted, when 
25
 
      the ZipInputStreambuf is destructed.
26
 
  */
27
 
  explicit ZipInputStreambuf( streambuf *inbuf, int s_pos = -1, bool del_inbuf = false ) ;
28
 
 
29
 
  /** Closes the current entry, and positions the stream read pointer at 
30
 
      the beginning of the next entry (if there is one). */
31
 
  void closeEntry() ;
32
 
  /** Closes the streambuf. */
33
 
  void close() ;
34
 
 
35
 
  /** Opens the next entry in the zip archive and returns a const pointer to a 
36
 
      FileEntry object for the entry.
37
 
      @return a const FileEntry * containing information about the (now) current 
38
 
      entry.
39
 
  */
40
 
  ConstEntryPointer getNextEntry() ;
41
 
 
42
 
  /** Destructor. */
43
 
  virtual ~ZipInputStreambuf() ;
44
 
protected:
45
 
  virtual int underflow() ;
46
 
private:
47
 
  bool _open_entry ;
48
 
  ZipLocalEntry _curr_entry ;
49
 
  int _data_start ; // Don't forget entry header has a length too.
50
 
  int _remain ; // For STORED entry only. the number of bytes that
51
 
  // hasn't been put in the _outvec yet.
52
 
 
53
 
  /** Copy-constructor is private to prevent copying. */
54
 
  ZipInputStreambuf( const ZipInputStreambuf &src ) ;
55
 
 
56
 
  /** Copy-assignment operator is private to prevent copying.  */
57
 
  const ZipInputStreambuf &operator= ( const ZipInputStreambuf &src ) ;
58
 
 
59
 
};
60
 
 
61
 
 
62
 
} // namespace
63
 
 
64
 
 
65
 
 
66
 
#endif
67
 
 
68
 
/** \file
69
 
    Header file that defines ZipInputStreambuf.
70
 
*/
71
 
 
72
 
/*
73
 
  Zipios++ - a small C++ library that provides easy access to .zip files.
74
 
  Copyright (C) 2000  Thomas S�ndergaard
75
 
  
76
 
  This library is free software; you can redistribute it and/or
77
 
  modify it under the terms of the GNU Lesser General Public
78
 
  License as published by the Free Software Foundation; either
79
 
  version 2 of the License, or (at your option) any later version.
80
 
  
81
 
  This library is distributed in the hope that it will be useful,
82
 
  but WITHOUT ANY WARRANTY; without even the implied warranty of
83
 
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
84
 
  Lesser General Public License for more details.
85
 
  
86
 
  You should have received a copy of the GNU Lesser General Public
87
 
  License along with this library; if not, write to the Free Software
88
 
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
89
 
*/