http://xml.apache.org/http://www.apache.org/http://www.w3.org/

Home

Readme
Release Info

Installation
Download
Build

FAQs
Samples
API Docs

DOM C++ Binding
Programming
Migration Guide

Feedback
Bug-Reporting
PDF Document

CVS Repository
Mail Archive

API Docs for SAX and DOM
 

Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

PlatformUtils.hpp

Go to the documentation of this file.
00001 /*
00002  * The Apache Software License, Version 1.1
00003  *
00004  * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
00005  * reserved.
00006  *
00007  * Redistribution and use in source and binary forms, with or without
00008  * modification, are permitted provided that the following conditions
00009  * are met:
00010  *
00011  * 1. Redistributions of source code must retain the above copyright
00012  *    notice, this list of conditions and the following disclaimer.
00013  *
00014  * 2. Redistributions in binary form must reproduce the above copyright
00015  *    notice, this list of conditions and the following disclaimer in
00016  *    the documentation and/or other materials provided with the
00017  *    distribution.
00018  *
00019  * 3. The end-user documentation included with the redistribution,
00020  *    if any, must include the following acknowledgment:
00021  *       "This product includes software developed by the
00022  *        Apache Software Foundation (http://www.apache.org/)."
00023  *    Alternately, this acknowledgment may appear in the software itself,
00024  *    if and wherever such third-party acknowledgments normally appear.
00025  *
00026  * 4. The names "Xerces" and "Apache Software Foundation" must
00027  *    not be used to endorse or promote products derived from this
00028  *    software without prior written permission. For written
00029  *    permission, please contact apache\@apache.org.
00030  *
00031  * 5. Products derived from this software may not be called "Apache",
00032  *    nor may "Apache" appear in their name, without prior written
00033  *    permission of the Apache Software Foundation.
00034  *
00035  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
00036  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00037  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00038  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
00039  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00040  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00041  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
00042  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00043  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00044  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
00045  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00046  * SUCH DAMAGE.
00047  * ====================================================================
00048  *
00049  * This software consists of voluntary contributions made by many
00050  * individuals on behalf of the Apache Software Foundation, and was
00051  * originally based on software copyright (c) 1999, International
00052  * Business Machines, Inc., http://www.ibm.com .  For more information
00053  * on the Apache Software Foundation, please see
00054  * <http://www.apache.org/>.
00055  */
00056 
00057 /*
00058  * $Id: PlatformUtils.hpp,v 1.8 2002/12/20 22:10:20 tng Exp $
00059  */
00060 
00061 
00062 #if !defined(PLATFORMUTILS_HPP)
00063 #define PLATFORMUTILS_HPP
00064 
00065 #include <xercesc/util/XercesDefs.hpp>
00066 #include <xercesc/util/XMLException.hpp>
00067 
00068 XERCES_CPP_NAMESPACE_BEGIN
00069 
00070 class XMLMsgLoader;
00071 class XMLNetAccessor;
00072 class XMLTransService;
00073 
00074 
00075 //
00076 //  For internal use only
00077 //
00078 //  This class provides a simple abstract API via which lazily evaluated
00079 //  data can be cleaned up.
00080 //
00081 class  XMLDeleter
00082 {
00083 public :
00084     virtual ~XMLDeleter();
00085 
00086 protected :
00087     XMLDeleter();
00088 
00089 private :
00090     XMLDeleter(const XMLDeleter&);
00091     void operator=(const XMLDeleter&);
00092 };
00093 
00094 
00103 class  XMLPlatformUtils
00104 {
00105 public :
00108     enum PanicReasons
00109     {
00110         Panic_NoTransService
00111         , Panic_NoDefTranscoder
00112         , Panic_CantFindLib
00113         , Panic_UnknownMsgDomain
00114         , Panic_CantLoadMsgDomain
00115         , Panic_SynchronizationErr
00116         , Panic_SystemInit
00117 
00118         , PanicReasons_Count
00119     };
00121 
00124 
00137     static XMLNetAccessor*      fgNetAccessor;
00138 
00149     static XMLTransService*     fgTransService;
00150 
00152 
00153 
00156 
00175     static void Initialize(const char* const locale = XMLUni::fgXercescDefaultLocale);
00176 
00183     static void Terminate();
00184 
00198     static void panic
00199     (
00200         const   PanicReasons    reason
00201     );
00203 
00206 
00219     static unsigned int curFilePos(FileHandle theFile);
00220 
00230     static void closeFile(FileHandle theFile);
00231 
00242     static unsigned int fileSize(FileHandle theFile);
00243 
00254     static FileHandle openFile(const char* const fileName);
00255 
00266     static FileHandle openFile(const XMLCh* const fileName);
00267 
00278     static FileHandle openFileToWrite(const char* const fileName);
00279 
00290     static FileHandle openFileToWrite(const XMLCh* const fileName);
00291 
00301     static FileHandle openStdInHandle();
00302 
00318     static unsigned int readFileBuffer
00319     (
00320                 FileHandle      theFile
00321         , const unsigned int    toRead
00322         ,       XMLByte* const  toFill
00323     );
00324 
00339     static void writeBufferToFile
00340     (
00341           FileHandle     const  theFile
00342         , long                  toWrite
00343         , const XMLByte* const  toFlush
00344     );
00345 
00354     static void resetFile(FileHandle theFile);
00355 
00357 
00358 
00375     static XMLCh* getFullPath(const XMLCh* const srcPath);
00376 
00390     static bool isRelative(const XMLCh* const toCheck);
00391 
00411     static XMLCh* weavePaths
00412     (
00413         const   XMLCh* const    basePath
00414         , const XMLCh* const    relativePath
00415     );
00417 
00420 
00430     static unsigned long getCurrentMillis();
00432 
00435 
00443     static void closeMutex(void* const mtxHandle);
00444 
00452     static void lockMutex(void* const mtxHandle);
00453 
00461     static void* makeMutex();
00462 
00475     static void unlockMutex(void* const mtxHandle);
00476 
00478 
00479 
00482 
00490     static XMLMsgLoader* loadMsgSet(const XMLCh* const msgDomain);
00491 
00493 
00496 
00522     static void* compareAndSwap
00523     (
00524                 void**      toFill
00525         , const void* const newValue
00526         , const void* const toCompare
00527     );
00528 
00530 
00531 
00534 
00554     static int atomicIncrement(int& location);
00555 
00575     static int atomicDecrement(int& location);
00576 
00578 
00592     static void recognizeNEL(bool state);
00593 
00597     static bool isNELRecognized();
00599 
00611     static void strictIANAEncoding(const bool state);
00612 
00617     static bool isStrictIANAEncoding();
00619 
00620 
00621 private :
00624 
00630     static XMLMsgLoader* loadAMsgSet(const XMLCh* const msgDomain);
00631 
00641     static XMLNetAccessor* makeNetAccessor();
00642 
00653     static XMLTransService* makeTransService();
00654 
00661     static void platformInit();
00662 
00669     static void platformTerm();
00670 
00672 };
00673 
00674 
00675 MakeXMLException(XMLPlatformUtilsException, )
00676 
00677 
00678 
00679 // ---------------------------------------------------------------------------
00680 //  XMLDeleter: Public Destructor
00681 // ---------------------------------------------------------------------------
00682 inline XMLDeleter::~XMLDeleter()
00683 {
00684 }
00685 
00686 // ---------------------------------------------------------------------------
00687 //  XMLDeleter: Hidden constructors and operators
00688 // ---------------------------------------------------------------------------
00689 inline XMLDeleter::XMLDeleter()
00690 {
00691 }
00692 
00693 XERCES_CPP_NAMESPACE_END
00694 
00695 #endif


Copyright © 2000 The Apache Software Foundation. All Rights Reserved.