Xerces-C++  3.1.2
BinMemInputStream.hpp
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 /*
19  * $Id: BinMemInputStream.hpp 670359 2008-06-22 13:43:45Z borisk $
20  */
21 
22 #if !defined(XERCESC_INCLUDE_GUARD_BINMEMINPUTSTREAM_HPP)
23 #define XERCESC_INCLUDE_GUARD_BINMEMINPUTSTREAM_HPP
24 
27 
29 
31 {
32 public :
33  // -----------------------------------------------------------------------
34  // Class specific types
35  // -----------------------------------------------------------------------
36  enum BufOpts
37  {
38  BufOpt_Adopt
39  , BufOpt_Copy
40  , BufOpt_Reference
41  };
42 
43 
44  // -----------------------------------------------------------------------
45  // Constructors and Destructor
46  // -----------------------------------------------------------------------
48  (
49  const XMLByte* const initData
50  , const XMLSize_t capacity
51  , const BufOpts bufOpt = BufOpt_Copy
53  );
54  virtual ~BinMemInputStream();
55 
56 
57  // -----------------------------------------------------------------------
58  // Stream management methods
59  // -----------------------------------------------------------------------
60  void reset();
61 
62 
63  // -----------------------------------------------------------------------
64  // Implementation of the input stream interface
65  // -----------------------------------------------------------------------
66  virtual XMLFilePos curPos() const;
67 
68  virtual XMLSize_t readBytes
69  (
70  XMLByte* const toFill
71  , const XMLSize_t maxToRead
72  );
73 
74  virtual const XMLCh* getContentType() const;
75 
76  inline XMLSize_t getSize() const;
77 
78 private :
79  // -----------------------------------------------------------------------
80  // Unimplemented constructors and operators
81  // -----------------------------------------------------------------------
83  BinMemInputStream& operator=(const BinMemInputStream&);
84  // -----------------------------------------------------------------------
85  // Private data members
86  //
87  // fBuffer
88  // The buffer of bytes that we are streaming.
89  //
90  // fBufOpt
91  // Indicates the ownership status of the buffer. The caller can have
92  // us adopt it (we delete it), reference it, or just make our own
93  // copy of it.
94  //
95  // fCapacity
96  // The size of the buffer being streamed.
97  //
98  // fCurIndex
99  // The current index where the next byte will be read from. When it
100  // hits fCapacity, we are done.
101  // -----------------------------------------------------------------------
102  const XMLByte* fBuffer;
103  BufOpts fBufOpt;
104  XMLSize_t fCapacity;
105  XMLSize_t fCurIndex;
106  MemoryManager* fMemoryManager;
107 };
108 
109 
110 // ---------------------------------------------------------------------------
111 // BinMemInputStream: Stream management methods
112 // ---------------------------------------------------------------------------
114 {
115  fCurIndex = 0;
116 }
117 
118 
119 // ---------------------------------------------------------------------------
120 // BinMemInputStream: Implementation of the input stream interface
121 // ---------------------------------------------------------------------------
123 {
124  return fCurIndex;
125 }
126 
128 {
129  return fCapacity;
130 }
131 
133 
134 #endif
virtual const XMLCh * getContentType() const =0
Return the "out-of-band" content type for the data supplied by this input stream in the form of the m...
XMLUInt64 XMLFilePos
Definition: Xerces_autoconf_config.borland.hpp:111
virtual XMLFilePos curPos() const =0
static MemoryManager * fgMemoryManager
The configurable memory manager.
Definition: PlatformUtils.hpp:121
virtual XMLFilePos curPos() const
Definition: BinMemInputStream.hpp:122
Configurable memory manager.
Definition: MemoryManager.hpp:39
SIZE_T XMLSize_t
Definition: Xerces_autoconf_config.borland.hpp:86
#define XERCES_CPP_NAMESPACE_BEGIN
Definition: XercesDefs.hpp:112
wchar_t XMLCh
Definition: Xerces_autoconf_config.borland.hpp:92
BufOpts
Definition: BinMemInputStream.hpp:36
unsigned char XMLByte
Definition: XercesDefs.hpp:65
void reset()
Definition: BinMemInputStream.hpp:113
#define XMLUTIL_EXPORT
Definition: XercesDefs.hpp:162
#define XERCES_CPP_NAMESPACE_END
Definition: XercesDefs.hpp:113
Definition: BinInputStream.hpp:29
XMLSize_t getSize() const
Definition: BinMemInputStream.hpp:127
Definition: BinMemInputStream.hpp:30
virtual XMLSize_t readBytes(XMLByte *const toFill, const XMLSize_t maxToRead)=0