Xerces-C++ 3.2.4

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$
20 */
21
22#if !defined(XERCESC_INCLUDE_GUARD_BINMEMINPUTSTREAM_HPP)
23#define XERCESC_INCLUDE_GUARD_BINMEMINPUTSTREAM_HPP
24
25#include <xercesc/util/BinInputStream.hpp>
26#include <xercesc/util/PlatformUtils.hpp>
27
28 XERCES_CPP_NAMESPACE_BEGIN
29
30 class XMLUTIL_EXPORT BinMemInputStream : public BinInputStream
31{
32public :
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 // -----------------------------------------------------------------------
47 BinMemInputStream
48 (
49 const XMLByte* const initData
50 , const XMLSize_t capacity
51 , const BufOpts bufOpt = BufOpt_Copy
52 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
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
78private :
79 // -----------------------------------------------------------------------
80 // Unimplemented constructors and operators
81 // -----------------------------------------------------------------------
82 BinMemInputStream(const BinMemInputStream&);
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// ---------------------------------------------------------------------------
113 inline void BinMemInputStream::reset()
114{
115 fCurIndex = 0;
116}
117
118
119// ---------------------------------------------------------------------------
120// BinMemInputStream: Implementation of the input stream interface
121// ---------------------------------------------------------------------------
122 inline XMLFilePos BinMemInputStream::curPos() const
123{
124 return fCurIndex;
125}
126
127 inline XMLSize_t BinMemInputStream::getSize() const
128{
129 return fCapacity;
130}
131
132 XERCES_CPP_NAMESPACE_END
133
134#endif
BinInputStream.hpp
PlatformUtils.hpp
XERCES_CPP_NAMESPACE_BEGIN
#define XERCES_CPP_NAMESPACE_BEGIN
Definition: XercesDefs.hpp:112
XMLByte
unsigned char XMLByte
Definition: XercesDefs.hpp:65
XMLUTIL_EXPORT
#define XMLUTIL_EXPORT
Definition: XercesDefs.hpp:162
XERCES_CPP_NAMESPACE_END
#define XERCES_CPP_NAMESPACE_END
Definition: XercesDefs.hpp:113
XMLCh
uint16_t XMLCh
Definition: Xerces_autoconf_config.hpp:120
XMLSize_t
size_t XMLSize_t
Definition: Xerces_autoconf_config.hpp:112
XMLFilePos
XMLUInt64 XMLFilePos
Definition: Xerces_autoconf_config.hpp:139
BinInputStream
Definition: BinInputStream.hpp:30
BinInputStream::curPos
virtual XMLFilePos curPos() const =0
BinMemInputStream
Definition: BinMemInputStream.hpp:31
BinMemInputStream::reset
void reset()
Definition: BinMemInputStream.hpp:113
BinMemInputStream::getContentType
virtual const XMLCh * getContentType() const
Return the "out-of-band" content type for the data supplied by this input stream in the form of the m...
BinMemInputStream::BinMemInputStream
BinMemInputStream(const XMLByte *const initData, const XMLSize_t capacity, const BufOpts bufOpt=BufOpt_Copy, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
BinMemInputStream::BufOpts
BufOpts
Definition: BinMemInputStream.hpp:37
BinMemInputStream::~BinMemInputStream
virtual ~BinMemInputStream()
BinMemInputStream::getSize
XMLSize_t getSize() const
Definition: BinMemInputStream.hpp:127
BinMemInputStream::curPos
virtual XMLFilePos curPos() const
Definition: BinMemInputStream.hpp:122
BinMemInputStream::readBytes
virtual XMLSize_t readBytes(XMLByte *const toFill, const XMLSize_t maxToRead)
MemoryManager
Configurable memory manager.
Definition: MemoryManager.hpp:40
XMLPlatformUtils::fgMemoryManager
static MemoryManager * fgMemoryManager
The configurable memory manager.
Definition: PlatformUtils.hpp:121