source: icXML/icXML-devel/src/xercesc/util/BinMemInputStream.hpp @ 2722

Last change on this file since 2722 was 2722, checked in by cameron, 6 years ago

Original Xerces files with import mods for icxercesc

File size: 4.4 KB
Line 
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 <icxercesc/util/PlatformUtils.hpp>
27
28XERCES_CPP_NAMESPACE_BEGIN
29
30class 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// ---------------------------------------------------------------------------
113inline void BinMemInputStream::reset()
114{
115    fCurIndex = 0;
116}
117
118
119// ---------------------------------------------------------------------------
120//  BinMemInputStream: Implementation of the input stream interface
121// ---------------------------------------------------------------------------
122inline XMLFilePos BinMemInputStream::curPos() const
123{
124    return fCurIndex;
125}
126
127inline XMLSize_t BinMemInputStream::getSize() const
128{
129    return fCapacity;
130}
131
132XERCES_CPP_NAMESPACE_END
133
134#endif
Note: See TracBrowser for help on using the repository browser.