You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by jb...@apache.org on 2002/02/18 06:50:42 UTC

cvs commit: xml-xerces/c/src/xercesc/util/NetAccessors/MacOSURLAccessCF MacOSURLAccessCF.cpp MacOSURLAccessCF.hpp Makefile.in URLAccessCFBinInputStream.cpp URLAccessCFBinInputStream.hpp

jberry      02/02/17 21:50:42

  Added:       c/src/xercesc/util/NetAccessors/MacOSURLAccessCF
                        MacOSURLAccessCF.cpp MacOSURLAccessCF.hpp
                        Makefile.in URLAccessCFBinInputStream.cpp
                        URLAccessCFBinInputStream.hpp
  Log:
  Create new NetAccessor class for Mac OS that doesn't rely on Carbon
  APIs, but only on CoreServices APIs, and thus can be run from a
  remote context.
  
  Revision  Changes    Path
  1.1                  xml-xerces/c/src/xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.cpp
  
  Index: MacOSURLAccessCF.cpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * Written by James D. Berry, Critical Path Software, Inc., 2002-02-17
   *
   */
  
  /*
   * $Id: MacOSURLAccessCF.cpp,v 1.1 2002/02/18 05:50:42 jberry Exp $
   */
  
  
  #include <xercesc/util/XMLUni.hpp>
  #include <xercesc/util/XMLUniDefs.hpp>
  #include <xercesc/util/XMLString.hpp>
  #include <xercesc/util/XMLExceptMsgs.hpp>
  #include <xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.hpp>
  #include <xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.hpp>
  
  
  const XMLCh
  MacOSURLAccessCF::sMyID[] =
  {
      chLatin_M, chLatin_a, chLatin_c, chLatin_O, chLatin_S, chLatin_U,
      chLatin_R, chLatin_L, chLatin_A, chLatin_c, chLatin_c, chLatin_e,
      chLatin_s, chLatin_s, chLatin_C, chLatin_F,
      chNull
  };
  
  
  MacOSURLAccessCF::MacOSURLAccessCF()
  {
  }
  
  
  MacOSURLAccessCF::~MacOSURLAccessCF()
  {
  }
  
  
  BinInputStream*
  MacOSURLAccessCF::makeNew(const XMLURL&  urlSource)
  {
  	BinInputStream* result = new URLAccessCFBinInputStream(urlSource);
  	return result;
  }
  
  
  
  
  1.1                  xml-xerces/c/src/xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.hpp
  
  Index: MacOSURLAccessCF.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * Written by James D. Berry, Critical Path Software, Inc., 2002-02-17
   * 
   */
  
  /*
   * $Id: MacOSURLAccessCF.hpp,v 1.1 2002/02/18 05:50:42 jberry Exp $
   */
  
  
  #if !defined(MACOSURLACCESSCF_HPP)
  #define MACOSURLACCESSCF_HPP
  
  
  #include <xercesc/util/XercesDefs.hpp>
  #include <xercesc/util/XMLURL.hpp>
  #include <xercesc/util/BinInputStream.hpp>
  #include <xercesc/util/XMLNetAccessor.hpp>
  
  
  //
  // This class is the wrapper for the Mac OS URLAccess code
  // which provides access to network resources. 
  // It's being used here to add the ability to
  // use HTTP URL's as the system id's in the XML decl clauses.
  //
  
  class XMLUTIL_EXPORT MacOSURLAccessCF : public XMLNetAccessor
  {
  public :
      MacOSURLAccessCF();
      ~MacOSURLAccessCF();
  
      BinInputStream* makeNew(const XMLURL&  urlSource);
      const XMLCh* getId() const;
  
  private :
      static const XMLCh sMyID[];
  
      MacOSURLAccessCF(const MacOSURLAccessCF&);
      void operator=(const MacOSURLAccessCF&);
  
  };
  
  inline const XMLCh*
  MacOSURLAccessCF::getId() const
  {
      return sMyID;
  }
  
  
  
  
  #endif // MACOSURLACCESSCF_HPP
  
  
  
  1.1                  xml-xerces/c/src/xercesc/util/NetAccessors/MacOSURLAccessCF/Makefile.in
  
  Index: Makefile.in
  ===================================================================
  #
  # The Apache Software License, Version 1.1
  #
  # Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
  # reserved.
  #
  # Redistribution and use in source and binary forms, with or without
  # modification, are permitted provided that the following conditions
  # are met:
  #
  # 1. Redistributions of source code must retain the above copyright
  #    notice, this list of conditions and the following disclaimer.
  #
  # 2. Redistributions in binary form must reproduce the above copyright
  #    notice, this list of conditions and the following disclaimer in
  #    the documentation and/or other materials provided with the
  #    distribution.
  #
  # 3. The end-user documentation included with the redistribution,
  #    if any, must include the following acknowledgment:
  #       "This product includes software developed by the
  #        Apache Software Foundation (http://www.apache.org/)."
  #    Alternately, this acknowledgment may appear in the software itself,
  #    if and wherever such third-party acknowledgments normally appear.
  #
  # 4. The names "Xerces" and "Apache Software Foundation" must
  #    not be used to endorse or promote products derived from this
  #    software without prior written permission. For written
  #    permission, please contact apache\@apache.org.
  #
  # 5. Products derived from this software may not be called "Apache",
  #    nor may "Apache" appear in their name, without prior written
  #    permission of the Apache Software Foundation.
  #
  # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  # DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  # ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  # SUCH DAMAGE.
  # ====================================================================
  #
  # This software consists of voluntary contributions made by many
  # individuals on behalf of the Apache Software Foundation, and was
  # originally based on software copyright (c) 1999, International
  # Business Machines, Inc., http://www.ibm.com .  For more information
  # on the Apache Software Foundation, please see
  # <http://www.apache.org/>.
  #
  #
  # $Log: Makefile.in,v $
  # Revision 1.1  2002/02/18 05:50:42  jberry
  # Create new NetAccessor class for Mac OS that doesn't rely on Carbon
  # APIs, but only on CoreServices APIs, and thus can be run from a
  # remote context.
  #
  #
  #
  PLATFORM = @platform@
  CC  = @cc@
  CXX = @cxx@
  CXXFLAGS = @cxxflags@
  CFLAGS = @cflags@
  PREFIX = @prefix@
  PREFIX_INCLUDE = @prefix_include@
  LDFLAGS = @ldflags@
  LIBS = @libs@
  OSVER = @osver@
  USELIBWWW = @uselibwww@
  MESSAGELOADER = @messageloader@
  TRANSCODER = @transcoder@
  NETACCESSOR = @netaccessor@
  THREADS = @threads@
  
  MODULE = util
  SUBMODULE = NetAccessors/MacOSURLAccessCF
  
  include ../../../Makefile.incl
  
  CPP_PUBHEADERS = \
  	MacOSURLAccessCF.hpp \
  	URLAccessCFBinInputStream.hpp
  
  CPP_OBJECTS = \
  	MacOSURLAccessCF.$(TO) \
  	URLAccessCFBinInputStream.$(TO)
  
  include ../../Makefile.util.submodule
  
  
  
  1.1                  xml-xerces/c/src/xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.cpp
  
  Index: URLAccessCFBinInputStream.cpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * Written by James D. Berry, Critical Path Software, Inc., 2002-02-17
   *
   */
  
  /*
   * $Id: URLAccessCFBinInputStream.cpp,v 1.1 2002/02/18 05:50:42 jberry Exp $
   */
  
  #include <xercesc/util/XMLNetAccessor.hpp>
  #include <xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.hpp>
  #include <xercesc/util/XMLString.hpp>
  #include <xercesc/util/XMLExceptMsgs.hpp>
  #include <xercesc/util/Janitor.hpp>
  
  #include <cstdlib>
  #include <cstring>
  
  
  URLAccessCFBinInputStream::URLAccessCFBinInputStream(const XMLURL& urlSource)
        : mBytesProcessed(0),
          mDataRef(NULL)
  {
      //	Figure out what we're dealing with
      const XMLCh* urlText = urlSource.getURLText();
      unsigned int urlLength = XMLString::stringLen(urlText);
      
      //	Create a CFString from the path
      CFStringRef stringRef = NULL;
      if (urlText)
      {
          stringRef = CFStringCreateWithCharacters(
              kCFAllocatorDefault,
              urlText,
              urlLength
              );
      }
          
      //	Create a URLRef from the CFString
      CFURLRef urlRef = NULL;
      if (stringRef)
      {
          urlRef = CFURLCreateWithString(
              kCFAllocatorDefault, 
              stringRef, 
              NULL				// CFURLRef baseURL
              );
      }
      
  	//	Fetch the data
      mDataRef = NULL;
      SInt32 errorCode = 0;
      Boolean success = false;
      if (stringRef)
      {
          success = CFURLCreateDataAndPropertiesFromResource(
              kCFAllocatorDefault,
              urlRef,
              &mDataRef,
              NULL,				// CFDictionaryRef *properties,
              NULL,				// CFArrayRef desiredProperties,
              &errorCode
              );
      }
      
      //	Cleanup temporary stuff
      if (stringRef)
          CFRelease(stringRef);
      if (urlRef)
          CFRelease(urlRef);
      
      //	Check for an error in fetching the data
      if (!success || errorCode)
      {
          //	Dispose any potential dataRef
          if (mDataRef)
          {
              CFRelease(mDataRef);
              mDataRef = NULL;
          }
              
          //	Do a best attempt at mapping some errors
          switch (errorCode)
          {
              case kCFURLUnknownSchemeError:
                  ThrowXML(MalformedURLException, XMLExcepts::URL_UnsupportedProto);
                  break;
                  
              case kCFURLRemoteHostUnavailableError:
                  ThrowXML(NetAccessorException,  XMLExcepts::NetAcc_TargetResolution);
                  break;
                  
              case kCFURLUnknownError:
                  ThrowXML(NetAccessorException, XMLExcepts::NetAcc_ReadSocket);
                  break;
                  
              case kCFURLResourceNotFoundError:
              case kCFURLResourceAccessViolationError:
              case kCFURLTimeoutError:
                  ThrowXML(NetAccessorException, XMLExcepts::File_CouldNotOpenFile);
                  break;
              
              case kCFURLImproperArgumentsError:
              case kCFURLUnknownPropertyKeyError:
              case kCFURLPropertyKeyUnavailableError:
              default:
                  ThrowXML(NetAccessorException, XMLExcepts::NetAcc_InternalError);
                  break;
          }
      }
  }
  
  
  URLAccessCFBinInputStream::~URLAccessCFBinInputStream()
  {
      //	Release any dataRef
      if (mDataRef)
          CFRelease(mDataRef);
  }
  
  
  //
  //	We've already read the data into a dataRef.
  //	Just spoon it out to the caller as they ask for it.
  //
  unsigned int
  URLAccessCFBinInputStream::readBytes(XMLByte* const    toFill
                                      , const unsigned int    maxToRead)
  {
      //	If we don't have a dataRef, we can't return any data
      if (!mDataRef)
          return 0;
      
      //	Get the length of the data we've fetched
      CFIndex dataLength = CFDataGetLength(mDataRef);
      
      //	Calculate how much to return based on how much
      //	we've already returned, and how much the user wants
      CFIndex n = dataLength - mBytesProcessed;			// Amount remaining
      CFIndex desired = maxToRead & 0x7fffffff;			// CFIndex is signed
      if (n > desired)									// Amount desired
          n = desired;
      
      //	Read the appropriate bytes into the user buffer
      CFRange range = CFRangeMake(mBytesProcessed, n);
      CFDataGetBytes(mDataRef, range, reinterpret_cast<UInt8*>(toFill));
  	
      //	Update bytes processed
      mBytesProcessed += n;
      
      //	Return the number of bytes delivered
      return n;
  }
  
  
  
  1.1                  xml-xerces/c/src/xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.hpp
  
  Index: URLAccessCFBinInputStream.hpp
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   * 
   * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights
   * reserved.
   * 
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer. 
   * 
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   * 
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:  
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "Xerces" and "Apache Software Foundation" must
   *    not be used to endorse or promote products derived from this
   *    software without prior written permission. For written 
   *    permission, please contact apache\@apache.org.
   * 
   * 5. Products derived from this software may not be called "Apache",
   *    nor may "Apache" appear in their name, without prior written
   *    permission of the Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   * 
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation, and was
   * originally based on software copyright (c) 1999, International
   * Business Machines, Inc., http://www.ibm.com .  For more information
   * on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * Written by James D. Berry, Critical Path Software, Inc., 2002-02-17
   *
   */
  
  /*
   * $Id: URLAccessCFBinInputStream.hpp,v 1.1 2002/02/18 05:50:42 jberry Exp $
   */
  
  #if !defined(URLACCESSCFBININPUTSTREAM_HPP)
  #define URLACCESSCFBININPUTSTREAM_HPP
  
  
  #include <xercesc/util/XMLURL.hpp>
  #include <xercesc/util/XMLExceptMsgs.hpp>
  #include <xercesc/util/BinInputStream.hpp>
  
  #if defined(XML_MACOSX)
      //	Framework includes from ProjectBuilder
  	#include <CoreServices/CoreServices.h>
  #else
      //	Classic includes otherwise
  	#include <CFURL.h>
  	#include <CFURLAccess.h>
  #endif
  
  
  //
  // This class implements the BinInputStream interface specified by the XML
  // parser.
  //
  
  class XMLUTIL_EXPORT URLAccessCFBinInputStream : public BinInputStream
  {
  public :
      URLAccessCFBinInputStream(const XMLURL&  urlSource);
      ~URLAccessCFBinInputStream();
  
      unsigned int curPos() const;
      unsigned int readBytes
      (
                  XMLByte* const  toFill
          , const unsigned int    maxToRead
      );
  
  
  private :
      CFDataRef			mDataRef;
      CFIndex				mBytesProcessed;
  };
  
  
  inline unsigned int
  URLAccessCFBinInputStream::curPos() const
  {
      return mBytesProcessed;
  }
  
  
  
  #endif // URLACCESSCFBININPUTSTREAM_HPP
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org