secureswitools/swisistools/source/xmlparser/xerces/include/xercesc/internal/BinMemOutputStream.hpp
changeset 4 3eebb1e54d3a
parent 3 127731b7107d
child 5 aba6b8104af3
equal deleted inserted replaced
3:127731b7107d 4:3eebb1e54d3a
     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: BinMemOutputStream.hpp 568078 2007-08-21 11:43:25Z amassari $
       
    20  */
       
    21 
       
    22 #ifndef BINMEMOUTPUTSTREAM_HEADER_GUARD_
       
    23 #define BINMEMOUTPUTSTREAM_HEADER_GUARD_
       
    24 
       
    25 #include <xercesc/framework/BinOutputStream.hpp>
       
    26 #include <xercesc/util/PlatformUtils.hpp>
       
    27 
       
    28 XERCES_CPP_NAMESPACE_BEGIN
       
    29 
       
    30 class XMLUTIL_EXPORT BinMemOutputStream : public BinOutputStream 
       
    31 {
       
    32 public :
       
    33     // -----------------------------------------------------------------------
       
    34     //  Constructors and Destructor
       
    35     // -----------------------------------------------------------------------
       
    36 
       
    37     ~BinMemOutputStream();
       
    38 
       
    39     BinMemOutputStream
       
    40     (
       
    41          int                     initCapacity = 1023
       
    42        , MemoryManager* const    manager      = XMLPlatformUtils::fgMemoryManager
       
    43     );
       
    44 
       
    45     // -----------------------------------------------------------------------
       
    46     //  Implementation of the output stream interface
       
    47     // -----------------------------------------------------------------------
       
    48     virtual unsigned int curPos() const;
       
    49 
       
    50     virtual void writeBytes
       
    51     (
       
    52       const XMLByte*     const      toGo
       
    53     , const unsigned int            maxToWrite
       
    54     ) ;
       
    55 
       
    56     // -----------------------------------------------------------------------
       
    57     //  Getter methods
       
    58     // -----------------------------------------------------------------------
       
    59     const XMLByte* getRawBuffer() const;
       
    60 
       
    61     unsigned int getSize() const;
       
    62     void reset();
       
    63 
       
    64 private :
       
    65     // -----------------------------------------------------------------------
       
    66     //  Unimplemented methods.
       
    67     // -----------------------------------------------------------------------
       
    68     BinMemOutputStream(const BinMemOutputStream&);
       
    69     BinMemOutputStream& operator=(const BinMemOutputStream&);
       
    70 
       
    71     // -----------------------------------------------------------------------
       
    72     //  Private helpers
       
    73     // -----------------------------------------------------------------------
       
    74     void insureCapacity(const unsigned int extraNeeded);
       
    75 
       
    76     // -----------------------------------------------------------------------
       
    77     //  Private data members
       
    78     //
       
    79     //  fDataBuf
       
    80     //      The pointer to the buffer data. Its grown as needed. Its always
       
    81     //      one larger than fCapacity, to leave room for the null terminator.
       
    82     //
       
    83     //  fIndex
       
    84     //      The current index into the buffer, as characters are appended
       
    85     //      to it. If its zero, then the buffer is empty.
       
    86     //
       
    87     //  fCapacity
       
    88     //      The current capacity of the buffer. Its actually always one
       
    89     //      larger, to leave room for the null terminator.
       
    90     //
       
    91     // -----------------------------------------------------------------------
       
    92     MemoryManager*  fMemoryManager;
       
    93     XMLByte*        fDataBuf;
       
    94     unsigned int    fIndex;
       
    95     unsigned int    fCapacity;
       
    96 
       
    97 };
       
    98 
       
    99 
       
   100 XERCES_CPP_NAMESPACE_END
       
   101 
       
   102 #endif
       
   103