Xerces-C++: LocalFileFormatTarget.hpp Source File

- Main Page
- Classes
- Files
- Related Pages

# 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 553937 2007-07-06 16:02:19Z amassari $
    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 flushBuffer();
    00069     bool insureCapacity(const XMLSize_t extraNeeded);
    00070
    00071     // -----------------------------------------------------------------------
    00072     //  Private data members
    00073     //
    00074     //  fSource
    00075     //      The source file that we represent. The FileHandle type is defined
    00076     //      per platform.
    00077     //
    00078     //  fDataBuf
    00079     //      The pointer to the buffer data. Its always
    00080     //      one larger than fCapacity, to leave room for the null terminator.
    00081     //
    00082     //  fIndex
    00083     //      The current index into the buffer, as characters are appended
    00084     //      to it. If its zero, then the buffer is empty.
    00085     //
    00086     //  fCapacity
    00087     //      The current capacity of the buffer. Its actually always one
    00088     //      larger, to leave room for the null terminator.
    00089     // -----------------------------------------------------------------------
    00090     FileHandle      fSource;
    00091     XMLByte*        fDataBuf;
    00092     XMLSize_t       fIndex;
    00093     XMLSize_t       fCapacity;
    00094     MemoryManager*  fMemoryManager;
    00095 };
    00096
    00097
    00098 XERCES_CPP_NAMESPACE_END
    00099
    00100 #endif
    00101