Xerces-C++: BinMemInputStream.hpp Source File

| API Docs for SAX and DOM |
| Main Page Classes Files Related Pages # BinMemInputStream.hpp Go to the documentation of this file.
    00001 /*
    00002  * Licensed to the Apache Software Foundation (ASF) under one or more
    00003  * contributor license agreements.  See the NOTICE file distributed with
    00004  * this work for additional information regarding copyright ownership.
    00005  * The ASF licenses this file to You under the Apache License, Version 2.0
    00006  * (the "License"); you may not use this file except in compliance with
    00007  * the License.  You may obtain a copy of the License at
    00008  *
    00009  *      http://www.apache.org/licenses/LICENSE-2.0
    00010  *
    00011  * Unless required by applicable law or agreed to in writing, software
    00012  * distributed under the License is distributed on an "AS IS" BASIS,
    00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    00014  * See the License for the specific language governing permissions and
    00015  * limitations under the License.
    00016  */
    00017
    00018 /*
    00019  *
    00020  * Revision 1.5  2004/09/08 13:56:21  peiyongz
    00021  * Apache License Version 2.0
    00022  *
    00023  * Revision 1.4  2004/01/29 11:48:46  cargilld
    00024  * Code cleanup changes to get rid of various compiler diagnostic messages.
    00025  *
    00026  * Revision 1.3  2003/05/16 03:11:22  knoaman
    00027  * Partial implementation of the configurable memory manager.
    00028  *
    00029  * Revision 1.2  2002/11/04 15:22:03  tng
    00030  * C++ Namespace Support.
    00031  *
    00032  * Revision 1.1.1.1  2002/02/01 22:22:10  peiyongz
    00033  * sane_include
    00034  *
    00035  * Revision 1.3  2000/02/24 20:05:24  abagchi
    00036  * Swat for removing Log from API docs
    00037  *
    00038  * Revision 1.2  2000/02/06 07:48:01  rahulj
    00039  * Year 2K copyright swat.
    00040  *
    00041  * Revision 1.1.1.1  1999/11/09 01:04:07  twl
    00042  * Initial checkin
    00043  *
    00044  * Revision 1.3  1999/11/08 20:45:04  rahul
    00045  * Swat for adding in Product name and CVS comment log variable.
    00046  *
    00047  */
    00048
    00049 #if !defined(BINMEMINPUTSTREAM_HPP)
    00050 #define BINMEMINPUTSTREAM_HPP
    00051
    00052 #include <xercesc/util/BinInputStream.hpp>
    00053 #include <xercesc/util/PlatformUtils.hpp>
    00054
    00055 XERCES_CPP_NAMESPACE_BEGIN
    00056
    00057 class  BinMemInputStream : public BinInputStream
    00058 {
    00059 public :
    00060     // -----------------------------------------------------------------------
    00061     //  Class specific types
    00062     // -----------------------------------------------------------------------
    00063     enum BufOpts
    00064     {
    00065         BufOpt_Adopt
    00066         , BufOpt_Copy
    00067         , BufOpt_Reference
    00068     };
    00069
    00070
    00071     // -----------------------------------------------------------------------
    00072     //  Constructors and Destructor
    00073     // -----------------------------------------------------------------------
    00074     BinMemInputStream
    00075     (
    00076         const   XMLByte* const  initData
    00077         , const unsigned int    capacity
    00078         , const BufOpts         bufOpt = BufOpt_Copy
    00079         , MemoryManager* const  manager = XMLPlatformUtils::fgMemoryManager
    00080     );
    00081     virtual ~BinMemInputStream();
    00082
    00083
    00084     // -----------------------------------------------------------------------
    00085     //  Stream management methods
    00086     // -----------------------------------------------------------------------
    00087     void reset();
    00088
    00089
    00090     // -----------------------------------------------------------------------
    00091     //  Implementation of the input stream interface
    00092     // -----------------------------------------------------------------------
    00093     virtual unsigned int curPos() const;
    00094
    00095     virtual unsigned int readBytes
    00096     (
    00097                 XMLByte* const  toFill
    00098         , const unsigned int    maxToRead
    00099     );
    00100
    00101     inline unsigned int getSize() const;
    00102
    00103 private :
    00104     // -----------------------------------------------------------------------
    00105     //  Unimplemented constructors and operators
    00106     // -----------------------------------------------------------------------
    00107     BinMemInputStream(const BinMemInputStream&);
    00108     BinMemInputStream& operator=(const BinMemInputStream&);
    00109     // -----------------------------------------------------------------------
    00110     //  Private data members
    00111     //
    00112     //  fBuffer
    00113     //      The buffer of bytes that we are streaming.
    00114     //
    00115     //  fBufOpt
    00116     //      Indicates the ownership status of the buffer. The caller can have
    00117     //      us adopt it (we delete it), reference it, or just make our own
    00118     //      copy of it.
    00119     //
    00120     //  fCapacity
    00121     //      The size of the buffer being streamed.
    00122     //
    00123     //  fCurIndex
    00124     //      The current index where the next byte will be read from. When it
    00125     //      hits fCapacity, we are done.
    00126     // -----------------------------------------------------------------------
    00127     const XMLByte*  fBuffer;
    00128     BufOpts         fBufOpt;
    00129     unsigned int    fCapacity;
    00130     unsigned int    fCurIndex;
    00131     MemoryManager*  fMemoryManager;
    00132 };
    00133
    00134
    00135 // ---------------------------------------------------------------------------
    00136 //  BinMemInputStream: Stream management methods
    00137 // ---------------------------------------------------------------------------
    00138 inline void BinMemInputStream::reset()
    00139 {
    00140     fCurIndex = 0;
    00141 }
    00142
    00143
    00144 // ---------------------------------------------------------------------------
    00145 //  BinMemInputStream: Implementation of the input stream interface
    00146 // ---------------------------------------------------------------------------
    00147 inline unsigned int BinMemInputStream::curPos() const
    00148 {
    00149     return fCurIndex;
    00150 }
    00151
    00152 inline unsigned int BinMemInputStream::getSize() const
    00153 {
    00154     return fCapacity;
    00155 }
    00156
    00157 XERCES_CPP_NAMESPACE_END
    00158
    00159 #endif

Copyright © 1994-2004 The Apache Software Foundation. All Rights Reserved.