Added Xerces-C++ 3.1.2

This commit is contained in:
sippeangelo
2015-12-01 10:23:50 +01:00
parent 65d3f3bc31
commit 1b478d3159
815 changed files with 262638 additions and 0 deletions
@@ -0,0 +1,62 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* $Id: MacOSURLAccessCF.cpp 471747 2006-11-06 14:31:56Z amassari $
*/
#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>
XERCES_CPP_NAMESPACE_BEGIN
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, const XMLNetHTTPInfo* httpInfo/*=0*/)
{
if(httpInfo!=0 && httpInfo->fHTTPMethod!=XMLNetHTTPInfo::GET)
ThrowXML(NetAccessorException, XMLExcepts::NetAcc_UnsupportedMethod);
BinInputStream* result = new (urlSource.getMemoryManager()) URLAccessCFBinInputStream(urlSource);
return result;
}
XERCES_CPP_NAMESPACE_END
@@ -0,0 +1,66 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* $Id: MacOSURLAccessCF.hpp 527149 2007-04-10 14:56:39Z amassari $
*/
#if !defined(XERCESC_INCLUDE_GUARD_MACOSURLACCESSCF_HPP)
#define XERCESC_INCLUDE_GUARD_MACOSURLACCESSCF_HPP
#include <xercesc/util/XercesDefs.hpp>
#include <xercesc/util/XMLURL.hpp>
#include <xercesc/util/BinInputStream.hpp>
#include <xercesc/util/XMLNetAccessor.hpp>
XERCES_CPP_NAMESPACE_BEGIN
//
// This class is the wrapper for the Mac OS CFURLAccess code
// (in CoreServices.framework) 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 XMLNetHTTPInfo* httpInfo=0);
const XMLCh* getId() const;
private :
static const XMLCh sMyID[];
MacOSURLAccessCF(const MacOSURLAccessCF&);
MacOSURLAccessCF& operator=(const MacOSURLAccessCF&);
};
inline const XMLCh*
MacOSURLAccessCF::getId() const
{
return sMyID;
}
XERCES_CPP_NAMESPACE_END
#endif // MACOSURLACCESSCF_HPP
@@ -0,0 +1,180 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* $Id: URLAccessCFBinInputStream.cpp 936316 2010-04-21 14:19:58Z borisk $
*/
#include <cstdlib>
#include <cstring>
#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>
XERCES_CPP_NAMESPACE_BEGIN
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:
{
if (urlSource.getHost())
ThrowXML1(NetAccessorException, XMLExcepts::NetAcc_TargetResolution, urlSource.getHost());
else
ThrowXML1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, urlText);
break;
}
case kCFURLUnknownError:
ThrowXML1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, urlText);
break;
case kCFURLResourceNotFoundError:
case kCFURLResourceAccessViolationError:
case kCFURLTimeoutError:
ThrowXML1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, urlText);
break;
case kCFURLImproperArgumentsError:
case kCFURLUnknownPropertyKeyError:
case kCFURLPropertyKeyUnavailableError:
default:
ThrowXML1(NetAccessorException, XMLExcepts::NetAcc_InternalError, urlText);
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.
//
XMLSize_t
URLAccessCFBinInputStream::readBytes(XMLByte* const toFill
, const XMLSize_t 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;
}
const XMLCh* URLAccessCFBinInputStream::getContentType() const
{
// TODO
//
return 0;
}
XERCES_CPP_NAMESPACE_END
@@ -0,0 +1,75 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* $Id: URLAccessCFBinInputStream.hpp 670359 2008-06-22 13:43:45Z borisk $
*/
#if !defined(XERCESC_INCLUDE_GUARD_URLACCESSCFBININPUTSTREAM_HPP)
#define XERCESC_INCLUDE_GUARD_URLACCESSCFBININPUTSTREAM_HPP
#include <xercesc/util/XMLURL.hpp>
#include <xercesc/util/XMLExceptMsgs.hpp>
#include <xercesc/util/BinInputStream.hpp>
#if defined(__APPLE__)
// Framework includes from ProjectBuilder
#include <CoreServices/CoreServices.h>
#else
// Classic includes otherwise
#include <CFURL.h>
#include <CFURLAccess.h>
#endif
XERCES_CPP_NAMESPACE_BEGIN
//
// This class implements the BinInputStream interface specified by the XML
// parser.
//
class XMLUTIL_EXPORT URLAccessCFBinInputStream : public BinInputStream
{
public :
URLAccessCFBinInputStream(const XMLURL& urlSource);
~URLAccessCFBinInputStream();
virtual XMLFilePos curPos() const;
virtual XMLSize_t readBytes
(
XMLByte* const toFill
, const XMLSize_t maxToRead
);
virtual const XMLCh* getContentType() const;
private :
CFDataRef mDataRef;
CFIndex mBytesProcessed;
};
inline XMLFilePos
URLAccessCFBinInputStream::curPos() const
{
return mBytesProcessed;
}
XERCES_CPP_NAMESPACE_END
#endif // URLACCESSCFBININPUTSTREAM_HPP