|
||||
File indexing completed on 2025-01-18 10:14:53
0001 /* 0002 * Licensed to the Apache Software Foundation (ASF) under one or more 0003 * contributor license agreements. See the NOTICE file distributed with 0004 * this work for additional information regarding copyright ownership. 0005 * The ASF licenses this file to You under the Apache License, Version 2.0 0006 * (the "License"); you may not use this file except in compliance with 0007 * the License. You may obtain a copy of the License at 0008 * 0009 * http://www.apache.org/licenses/LICENSE-2.0 0010 * 0011 * Unless required by applicable law or agreed to in writing, software 0012 * distributed under the License is distributed on an "AS IS" BASIS, 0013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 0014 * See the License for the specific language governing permissions and 0015 * limitations under the License. 0016 */ 0017 0018 /* 0019 * $Id$ 0020 */ 0021 0022 #if !defined(XERCESC_INCLUDE_GUARD_BINMEMOUTPUTSTREAM_HPP) 0023 #define XERCESC_INCLUDE_GUARD_BINMEMOUTPUTSTREAM_HPP 0024 0025 #include <xercesc/framework/BinOutputStream.hpp> 0026 #include <xercesc/util/PlatformUtils.hpp> 0027 0028 XERCES_CPP_NAMESPACE_BEGIN 0029 0030 class XMLUTIL_EXPORT BinMemOutputStream : public BinOutputStream 0031 { 0032 public : 0033 // ----------------------------------------------------------------------- 0034 // Constructors and Destructor 0035 // ----------------------------------------------------------------------- 0036 0037 ~BinMemOutputStream(); 0038 0039 BinMemOutputStream 0040 ( 0041 XMLSize_t initCapacity = 1023 0042 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager 0043 ); 0044 0045 // ----------------------------------------------------------------------- 0046 // Implementation of the output stream interface 0047 // ----------------------------------------------------------------------- 0048 virtual XMLFilePos curPos() const; 0049 0050 virtual void writeBytes 0051 ( 0052 const XMLByte* const toGo 0053 , const XMLSize_t maxToWrite 0054 ) ; 0055 0056 // ----------------------------------------------------------------------- 0057 // Getter methods 0058 // ----------------------------------------------------------------------- 0059 const XMLByte* getRawBuffer() const; 0060 0061 XMLFilePos getSize() const; 0062 void reset(); 0063 0064 private : 0065 // ----------------------------------------------------------------------- 0066 // Unimplemented methods. 0067 // ----------------------------------------------------------------------- 0068 BinMemOutputStream(const BinMemOutputStream&); 0069 BinMemOutputStream& operator=(const BinMemOutputStream&); 0070 0071 // ----------------------------------------------------------------------- 0072 // Private helpers 0073 // ----------------------------------------------------------------------- 0074 void ensureCapacity(const XMLSize_t extraNeeded); 0075 0076 // ----------------------------------------------------------------------- 0077 // Private data members 0078 // 0079 // fDataBuf 0080 // The pointer to the buffer data. Its grown as needed. Its always 0081 // one larger than fCapacity, to leave room for the null terminator. 0082 // 0083 // fIndex 0084 // The current index into the buffer, as characters are appended 0085 // to it. If its zero, then the buffer is empty. 0086 // 0087 // fCapacity 0088 // The current capacity of the buffer. Its actually always one 0089 // larger, to leave room for the null terminator. 0090 // 0091 // ----------------------------------------------------------------------- 0092 MemoryManager* fMemoryManager; 0093 XMLByte* fDataBuf; 0094 XMLSize_t fIndex; 0095 XMLSize_t fCapacity; 0096 0097 }; 0098 0099 0100 XERCES_CPP_NAMESPACE_END 0101 0102 #endif 0103
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |