blob: a2edf63cd0f0f64ceb7656b8d713154f188844f2 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-additional-options "-Wno-return-type" } */
/* { dg-skip-if "no pthread_barrier" { *-*-darwin* } } */
extern "C" {
typedef __SIZE_TYPE__ size_t;
typedef struct {
} __sigset_t;
typedef union {
} pthread_barrierattr_t;
}
typedef unsigned short XMLCh;
typedef unsigned long XMLSize_t;
namespace xercesc_2_5 {
class DOMNodeList;
class DOMNode {
};
class DOMDocumentRange {
};
class DOMDocument: public DOMDocumentRange, public DOMNode {
};
union wait {
struct {
}
__wait_stopped;
}
div_t;
class MemoryManager;
class XMemory {
public : void* operator new(size_t size, MemoryManager* memMgr);
void operator delete(void* p);
void operator delete(void* p, MemoryManager* memMgr);
};
class XMLExcepts {
public : enum Codes {
NoError = 0 , HshTbl_ZeroModulus = 48 , HshTbl_BadHashFromKey = 49 };
};
class XMLUni {
};
}
namespace xercesc_2_5 {
class XMLException : public XMemory {
public:
virtual ~XMLException();
XMLException(const char* const srcFile, const unsigned int srcLine, MemoryManager* const memoryManager = 0);
void loadExceptText ( const XMLExcepts::Codes toLoad );
};
class XMLDeleter {
};
class XMLPlatformUtils {
public : static MemoryManager* fgMemoryManager;
static inline size_t alignPointerForNewBlockAllocation(size_t ptrSize);
};
inline size_t XMLPlatformUtils::alignPointerForNewBlockAllocation(size_t ptrSize) {
}
class HashBase : public XMemory {
public:
virtual bool equals(const void *const key1, const void *const key2) = 0;
virtual ~HashBase() {
};
};
class IllegalArgumentException : public XMLException {
public:
IllegalArgumentException(const char* const srcFile , const unsigned int srcLine , const XMLExcepts::Codes toThrow , MemoryManager* memoryManager = 0) : XMLException(srcFile, srcLine, memoryManager) {
loadExceptText(toThrow);
}
};
class RuntimeException : public XMLException {
public:
RuntimeException(const char* const srcFile , const unsigned int srcLine , const XMLExcepts::Codes toThrow , MemoryManager* memoryManager = 0) : XMLException(srcFile, srcLine, memoryManager) {
loadExceptText(toThrow);
}
};
class MemoryManager {
public:
virtual ~MemoryManager() {
}
virtual void* allocate(size_t size) = 0;
};
template <class TElem> class BaseRefVectorOf : public XMemory {
BaseRefVectorOf ( const unsigned int maxElems , const bool adoptElems = true , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager );
virtual ~BaseRefVectorOf();
bool fAdoptedElems;
TElem** fElemList;
};
template <class TElem> BaseRefVectorOf<TElem>::BaseRefVectorOf( const unsigned int maxElems , const bool adoptElems , MemoryManager* const manager) : fAdoptedElems(adoptElems) {
for (unsigned int index = 0;
index < maxElems;
index++) fElemList[index] = 0;
}
template <class TElem> BaseRefVectorOf<TElem>::~BaseRefVectorOf() {
}
class XMLString {
public:
static bool equals ( const XMLCh* const str1 , const XMLCh* const str2 );
static void moveChars ( XMLCh* const targetStr , const XMLCh* const srcStr , const unsigned int count );
};
inline void XMLString::moveChars( XMLCh* const targetStr , const XMLCh* const srcStr , const unsigned int count) {
}
inline bool XMLString::equals( const XMLCh* const str1 , const XMLCh* const str2) {
const XMLCh* psz1 = str1;
const XMLCh* psz2 = str2;
if (psz1 == 0 || psz2 == 0) {
return true;
}
}
}
namespace xercesc_2_5 {
class HashPtr : public HashBase {
virtual bool equals(const void *const key1, const void *const key2);
};
template <class TVal> struct DOMDeepNodeListPoolTableBucketElem : public XMemory {
void* fKey1;
XMLCh* fKey2;
XMLCh* fKey3;
};
template <class TVal> class DOMDeepNodeListPool {
public:
DOMDeepNodeListPool ( const XMLSize_t modulus , const bool adoptElems , const XMLSize_t initSize = 128 );
TVal* getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3);
DOMDeepNodeListPoolTableBucketElem<TVal>* findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal);
bool fAdoptedElems;
DOMDeepNodeListPoolTableBucketElem<TVal>** fBucketList;
XMLSize_t fHashModulus;
HashBase* fHash;
TVal** fIdPtrs;
XMLSize_t fIdPtrsCount;
MemoryManager* fMemoryManager;
};
template <class TVal> DOMDeepNodeListPool<TVal>::DOMDeepNodeListPool( const XMLSize_t modulus , const bool adoptElems , const XMLSize_t initSize) : fAdoptedElems(adoptElems) , fBucketList(0) , fHash(0) , fIdPtrs(0) {
fHash = new (fMemoryManager) HashPtr();
fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*));
if (modulus == 0) throw IllegalArgumentException("./xercesc/dom/impl/bad.c", 38, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager);
}
template <class TVal> TVal* DOMDeepNodeListPool<TVal>::getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) {
XMLSize_t hashVal;
DOMDeepNodeListPoolTableBucketElem<TVal>* findIt = findBucketElem(key1, key2, key3, hashVal);
}
template <class TVal> DOMDeepNodeListPoolTableBucketElem<TVal>* DOMDeepNodeListPool<TVal>:: findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal) {
if (hashVal > fHashModulus) throw RuntimeException("./xercesc/dom/impl/bad.c", 64, XMLExcepts::HshTbl_BadHashFromKey, fMemoryManager);
DOMDeepNodeListPoolTableBucketElem<TVal>* curElem = fBucketList[hashVal];
if (fHash->equals(key1, curElem->fKey1) && (XMLString::equals(key2, curElem->fKey2)) && (XMLString::equals(key3, curElem->fKey3))) {
return curElem;
}
}
class DOMDeepNodeListImpl;
class DOMDocumentImpl: public DOMDocument {
DOMNodeList* getElementsByTagName(const XMLCh * tagname) const;
DOMNodeList* getDeepNodeList(const DOMNode *rootNode, const XMLCh *tagName);
DOMNodeList* getDeepNodeList(const DOMNode *rootNode, const XMLCh *namespaceURI, const XMLCh *localName);
DOMDeepNodeListPool<DOMDeepNodeListImpl>* fNodeListPool;
};
}
void * operator new(size_t amt, xercesc_2_5:: DOMDocument *doc);
namespace xercesc_2_5 {
class DOMNodeList {
};
class DOMDeepNodeListImpl: public DOMNodeList {
};
DOMNodeList *DOMDocumentImpl::getElementsByTagName(const XMLCh *tagname) const {
return ((DOMDocumentImpl*)this)->getDeepNodeList(this,tagname);
}
DOMNodeList *DOMDocumentImpl::getDeepNodeList(const DOMNode *rootNode, const XMLCh *tagName) {
if(!fNodeListPool) {
fNodeListPool = new (this) DOMDeepNodeListPool<DOMDeepNodeListImpl>(109, false);
}
DOMNodeList* retList = fNodeListPool->getByKey(rootNode, tagName, 0);
}
DOMNodeList *DOMDocumentImpl::getDeepNodeList(const DOMNode *rootNode, const XMLCh *namespaceURI, const XMLCh *localName) {
DOMNodeList* retList = fNodeListPool->getByKey(rootNode, localName, namespaceURI);
}
}