# XMLFileMgr.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: XMLFileMgr.hpp 527149 2007-04-10 14:56:39Z amassari $
    00020  */
    00021
    00022 #if !defined(XERCESC_INCLUDE_GUARD_XMLFILEMGR_HPP)
    00023 #define XERCESC_INCLUDE_GUARD_XMLFILEMGR_HPP
    00024
    00025 #include <xercesc/util/XercesDefs.hpp>
    00026 #include <xercesc/util/XMemory.hpp>
    00027
    00028 XERCES_CPP_NAMESPACE_BEGIN
    00029
    00030 typedef void* FileHandle;
    00031 #define XERCES_Invalid_File_Handle 0
    00032
    00033 //  Abstract class for files. This is be used to allow multiple file handling implementations.
    00034 class XMLFileMgr : public XMemory
    00035 {
    00036     public:
    00037         XMLFileMgr() {}
    00038         virtual ~XMLFileMgr() {}
    00039
    00040         // File access
    00041         virtual FileHandle  fileOpen(const XMLCh* path, bool toWrite, MemoryManager* const manager) = 0;
    00042         virtual FileHandle  fileOpen(const char* path, bool toWrite, MemoryManager* const manager) = 0;
    00043         virtual FileHandle  openStdIn(MemoryManager* const manager) = 0;
    00044
    00045         virtual void        fileClose(FileHandle f, MemoryManager* const manager) = 0;
    00046         virtual void        fileReset(FileHandle f, MemoryManager* const manager) = 0;
    00047
    00048         virtual XMLFilePos  curPos(FileHandle f, MemoryManager* const manager) = 0;
    00049         virtual XMLFilePos  fileSize(FileHandle f, MemoryManager* const manager) = 0;
    00050
    00051         virtual XMLSize_t   fileRead(FileHandle f, XMLSize_t byteCount, XMLByte* buffer, MemoryManager* const manager) = 0;
    00052         virtual void        fileWrite(FileHandle f, XMLSize_t byteCount, const XMLByte* buffer, MemoryManager* const manager) = 0;
    00053
    00054         // Ancillary path handling routines
    00055         virtual XMLCh*      getFullPath(const XMLCh* const srcPath, MemoryManager* const manager) = 0;
    00056         virtual XMLCh*      getCurrentDirectory(MemoryManager* const manager) = 0;
    00057         virtual bool        isRelative(const XMLCh* const toCheck, MemoryManager* const manager) = 0;
    00058 };
    00059
    00060 XERCES_CPP_NAMESPACE_END
    00061
    00062 #endif
    00063