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 568078 2007-08-21 11:43:25Z amassari $
00020  */
00021 
00022 #ifndef LocalFileFormatTarget_HEADER_GUARD_
00023 #define LocalFileFormatTarget_HEADER_GUARD_
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 unsigned int   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 unsigned int 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     unsigned int    fIndex;
00093     unsigned int    fCapacity;
00094     MemoryManager*  fMemoryManager;
00095 };
00096 
00097 
00098 XERCES_CPP_NAMESPACE_END
00099 
00100 #endif
00101 

Generated on Thu Feb 19 11:35:43 2009 for Xerces-C++ by  doxygen 1.5.4