Xerces-C++
3.1.3
Main Page
Related Pages
Classes
Files
File List
File Members
src
xercesc
util
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
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
{
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
// -----------------------------------------------------------------------
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
78
private
:
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
Generated on Mon Feb 1 2016 13:04:19 for Xerces-C++ by
1.8.1.2