mhoyt 2004/09/28 11:48:58
Modified: c/src/xalanc/Harness XalanXMLFileReporter.hpp
c/src/xalanc/Include SolarisDefinitions.hpp XalanList.hpp
XalanVector.hpp
Log:
Enable Solaris build: Removed nested template, correct reverse_iterator
parameters, workaround for compiler assert
Revision Changes Path
1.2 +9 -6 xml-xalan/c/src/xalanc/Harness/XalanXMLFileReporter.hpp
Index: XalanXMLFileReporter.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/xalanc/Harness/XalanXMLFileReporter.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XalanXMLFileReporter.hpp 3 Aug 2004 15:59:09 -0000 1.1
+++ XalanXMLFileReporter.hpp 28 Sep 2004 18:48:58 -0000 1.2
@@ -23,7 +23,14 @@
#include <cstdio>
-#include <map>
+
+
+
+#include "xalanc/Include/XalanMap.hpp"
+
+
+
+#include "xalanc/PlatformSupport/DOMStringHelper.hpp"
@@ -40,11 +47,7 @@
{
public:
-#if defined(XALAN_NO_STD_NAMESPACE)
- typedef map<XalanDOMString, XalanDOMString, less<XalanDOMString> >
Hashtable;
-#else
- typedef std::map<XalanDOMString, XalanDOMString> Hashtable;
-#endif
+ typedef XalanMap<XalanDOMString, XalanDOMString> Hashtable;
#if defined(XALAN_STRICT_ANSI_HEADERS)
typedef std::FILE FileHandleType;
1.7 +1 -0 xml-xalan/c/src/xalanc/Include/SolarisDefinitions.hpp
Index: SolarisDefinitions.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/xalanc/Include/SolarisDefinitions.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SolarisDefinitions.hpp 30 Jul 2004 01:24:33 -0000 1.6
+++ SolarisDefinitions.hpp 28 Sep 2004 18:48:58 -0000 1.7
@@ -63,6 +63,7 @@
// Standard allocators don't seem to work correctly with this compiler.
// I don't know if this is their bug, or ours...
#define XALAN_NO_STD_ALLOCATORS
+#define XALAN_RW_NO_CLASS_PARTIAL_SPEC
#define XALAN_XALANDOMCHAR_USHORT_MISMATCH
#define XALAN_POSIX2_AVAILABLE
1.4 +120 -94 xml-xalan/c/src/xalanc/Include/XalanList.hpp
Index: XalanList.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/xalanc/Include/XalanList.hpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XalanList.hpp 17 Sep 2004 22:23:10 -0000 1.3
+++ XalanList.hpp 28 Sep 2004 18:48:58 -0000 1.4
@@ -44,6 +44,112 @@
XALAN_CPP_NAMESPACE_BEGIN
+
+template <class Value>
+struct XalanListIteratorTraits
+{
+ typedef Value value_type;
+ typedef Value& reference;
+ typedef Value* pointer;
+};
+
+template <class Value>
+struct XalanListConstIteratorTraits
+{
+ typedef Value value_type;
+ typedef const Value& reference;
+ typedef const Value* pointer;
+};
+
+template<class XalanListTraits, class Node>
+struct XalanListIteratorBase
+{
+ typedef typename XalanListTraits::value_type value_type;
+ typedef typename XalanListTraits::reference reference;
+ typedef typename XalanListTraits::pointer pointer;
+
+ typedef ptrdiff_t difference_type;
+
+ typedef XALAN_STD_QUALIFIER bidirectional_iterator_tag
iterator_category;
+
+ typedef XalanListIteratorBase<XalanListIteratorTraits<value_type>,
Node> iterator;
+
+ XalanListIteratorBase(Node& node) :
+ currentNode(&node)
+ {
+ }
+
+ XalanListIteratorBase(const iterator& theRhs) :
+ currentNode(theRhs.currentNode)
+ {
+ }
+
+ XalanListIteratorBase operator++()
+ {
+ currentNode = currentNode->next;
+ return *this;
+ }
+
+ XalanListIteratorBase operator++(int)
+ {
+ Node& origNode = *currentNode;
+ currentNode = currentNode->next;
+ return XalanListIteratorBase(origNode);
+ }
+
+ XalanListIteratorBase operator--()
+ {
+ currentNode = currentNode->prev;
+ return *this;
+ }
+
+ XalanListIteratorBase operator-(difference_type decrement) const
+ {
+ Node* node = currentNode;
+ while (decrement > 0)
+ {
+ node = node->prev;
+ --decrement;
+ };
+ return XalanListIteratorBase(*node);
+ }
+
+ reference operator*() const
+ {
+ return currentNode->value;
+ }
+
+ pointer operator->() const
+ {
+ return ¤tNode->value;
+ }
+
+ const XalanListIteratorBase & operator=(const XalanListIteratorBase&
theRhs)
+ {
+ currentNode = theRhs.currentNode;
+ return *this;
+ }
+
+ bool operator!=(const XalanListIteratorBase& theRhs) const
+ {
+ return !operator==(theRhs);
+ }
+
+ bool operator==(const XalanListIteratorBase& theRhs) const
+ {
+ return currentNode == theRhs.currentNode;
+ }
+
+ Node& node()
+ {
+ return *currentNode;
+ }
+
+ Node* currentNode;
+};
+
+
+
/**
* Xalan implementation of a doubly linked list
*/
@@ -80,102 +186,22 @@
Node* next;
};
-
- template<class Value>
- struct iterator_base
- {
- typedef Value value_type;
- typedef Value& reference;
- typedef Value* pointer;
-
- typedef size_type difference_type;
- typedef XALAN_STD_QUALIFIER bidirectional_iterator_tag
iterator_category;
-
- typedef iterator_base<Type> iterator;
-
- typedef iterator_base<value_type> ThisType;
-
- iterator_base(Node& node) :
- currentNode(&node)
- {
- }
-
- iterator_base(const iterator& theRhs) :
- currentNode(theRhs.currentNode)
- {
- }
-
- iterator_base operator++()
- {
- currentNode = currentNode->next;
- return *this;
- }
-
- iterator_base operator++(int)
- {
- Node& origNode = *currentNode;
- currentNode = currentNode->next;
- return iterator_base(origNode);
- }
-
- iterator_base operator--()
- {
- currentNode = currentNode->prev;
- return *this;
- }
-
- iterator_base operator-(difference_type decrement) const
- {
- Node* node = currentNode;
- while (decrement > 0)
- {
- node = node->prev;
- --decrement;
- };
- return iterator_base(*node);
- }
-
- reference operator*() const
- {
- return currentNode->value;
- }
-
- pointer operator->() const
- {
- return ¤tNode->value;
- }
-
- const ThisType & operator=(const ThisType& theRhs)
- {
- currentNode = theRhs.currentNode;
- return *this;
- }
-
- bool operator!=(const ThisType& theRhs) const
- {
- return !operator==(theRhs);
- }
-
- bool operator==(const ThisType& theRhs) const
- {
- return currentNode == theRhs.currentNode;
- }
-
- Node& node()
- {
- return *currentNode;
- }
-
- Node* currentNode;
- };
-
- typedef iterator_base<value_type> iterator;
+ typedef XalanListIteratorBase<XalanListIteratorTraits<value_type>,
Node> iterator;
- typedef iterator_base<const value_type> const_iterator;
-
+ typedef XalanListIteratorBase<XalanListConstIteratorTraits<value_type>,
Node> const_iterator;
+
#if defined(XALAN_HAS_STD_ITERATORS)
- typedef XALAN_STD_QUALIFIER reverse_iterator<iterator>
reverse_iterator_;
- typedef XALAN_STD_QUALIFIER reverse_iterator<const_iterator>
const_reverse_iterator_;
+ typedef XALAN_STD_QUALIFIER reverse_iterator<iterator,
XALAN_STD_QUALIFIER bidirectional_iterator_tag, value_type>
reverse_iterator_;
+ typedef XALAN_STD_QUALIFIER reverse_iterator<const_iterator,
XALAN_STD_QUALIFIER bidirectional_iterator_tag, value_type>
const_reverse_iterator_;
+#elif defined(XALAN_RW_NO_CLASS_PARTIAL_SPEC)
+ typedef XALAN_STD_QUALIFIER reverse_iterator<
+ iterator,
+ XALAN_STD_QUALIFIER bidirectional_iterator_tag,
+ value_type> reverse_iterator_;
+ typedef XALAN_STD_QUALIFIER reverse_iterator<
+ const_iterator,
+ XALAN_STD_QUALIFIER bidirectional_iterator_tag,
+ const value_type> const_reverse_iterator_;
#else
typedef XALAN_STD_QUALIFIER reverse_iterator<iterator, value_type>
reverse_iterator_;
typedef XALAN_STD_QUALIFIER reverse_iterator<const_iterator,
value_type, const_reference> const_reverse_iterator_;
1.6 +15 -1 xml-xalan/c/src/xalanc/Include/XalanVector.hpp
Index: XalanVector.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/xalanc/Include/XalanVector.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- XalanVector.hpp 7 Aug 2004 19:57:43 -0000 1.5
+++ XalanVector.hpp 28 Sep 2004 18:48:58 -0000 1.6
@@ -89,6 +89,15 @@
#if defined(XALAN_HAS_STD_ITERATORS)
typedef XALAN_STD_QUALIFIER reverse_iterator<iterator>
reverse_iterator_;
typedef XALAN_STD_QUALIFIER reverse_iterator<const_iterator>
const_reverse_iterator_;
+#elif defined(XALAN_RW_NO_CLASS_PARTIAL_SPEC)
+ typedef XALAN_STD_QUALIFIER reverse_iterator<
+ iterator,
+ XALAN_STD_QUALIFIER random_access_iterator_tag,
+ value_type> reverse_iterator_;
+ typedef XALAN_STD_QUALIFIER reverse_iterator<
+ const_iterator,
+ XALAN_STD_QUALIFIER random_access_iterator_tag,
+ const value_type> const_reverse_iterator_;
#else
typedef XALAN_STD_QUALIFIER reverse_iterator<iterator, value_type>
reverse_iterator_;
typedef XALAN_STD_QUALIFIER reverse_iterator<const_iterator, value_type,
const_reference> const_reverse_iterator_;
@@ -537,7 +546,12 @@
void
resize(
size_type theSize,
- const value_type& theValue = value_type())
+#if !defined(SOLARIS) // Causes Solaris 5.3 compiler assert
+ const value_type& theValue = value_type()
+#else
+ value_type theValue = value_type()
+#endif
+)
{
invariants();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]