SourceForge.net Logo

LocalFileFormatTarget.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  * $Id: LocalFileFormatTarget.hpp 882540 2009-11-20 13:02:07Z borisk $
00020  */
00021 
00022 #if !defined(XERCESC_INCLUDE_GUARD_LOCALFILEFORMATTARGET_HPP)
00023 #define XERCESC_INCLUDE_GUARD_LOCALFILEFORMATTARGET_HPP
00024 
00025 #include <xercesc/framework/XMLFormatter.hpp>
00026 
00027 XERCES_CPP_NAMESPACE_BEGIN
00028 
00029 class XMLPARSER_EXPORT LocalFileFormatTarget : public XMLFormatTarget {
00030 public:
00031 
00034     LocalFileFormatTarget
00035     (
00036         const XMLCh* const
00037         , MemoryManager* const  manager = XMLPlatformUtils::fgMemoryManager
00038     );
00039 
00040     LocalFileFormatTarget
00041     (
00042         const char* const
00043         , MemoryManager* const  manager = XMLPlatformUtils::fgMemoryManager
00044     );
00045 
00046     ~LocalFileFormatTarget();
00048 
00049     // -----------------------------------------------------------------------
00050     //  Implementations of the format target interface
00051     // -----------------------------------------------------------------------
00052     virtual void writeChars(const XMLByte* const toWrite
00053                           , const XMLSize_t      count
00054                           , XMLFormatter* const  formatter);
00055 
00056     virtual void flush();
00057 
00058 private:
00059     // -----------------------------------------------------------------------
00060     //  Unimplemented methods.
00061     // -----------------------------------------------------------------------
00062     LocalFileFormatTarget(const LocalFileFormatTarget&);
00063     LocalFileFormatTarget& operator=(const LocalFileFormatTarget&);
00064 
00065     // -----------------------------------------------------------------------
00066     //  Private helpers
00067     // -----------------------------------------------------------------------
00068     void insureCapacity(const XMLSize_t extraNeeded);
00069 
00070     // -----------------------------------------------------------------------
00071     //  Private data members
00072     //
00073     //  fSource
00074     //      The source file that we represent. The FileHandle type is defined
00075     //      per platform.
00076     //
00077     //  fDataBuf
00078     //      The pointer to the buffer data. Its always
00079     //      one larger than fCapacity, to leave room for the null terminator.
00080     //
00081     //  fIndex
00082     //      The current index into the buffer, as characters are appended
00083     //      to it. If its zero, then the buffer is empty.
00084     //
00085     //  fCapacity
00086     //      The current capacity of the buffer. Its actually always one
00087     //      larger, to leave room for the null terminator.
00088     // -----------------------------------------------------------------------
00089     FileHandle      fSource;
00090     XMLByte*        fDataBuf;
00091     XMLSize_t       fIndex;
00092     XMLSize_t       fCapacity;
00093     MemoryManager*  fMemoryManager;
00094 };
00095 
00096 
00097 XERCES_CPP_NAMESPACE_END
00098 
00099 #endif