Added < operator for iterator class.
[shibboleth/xmltooling.git] / xmltooling / util / XMLObjectChildrenList.h
index 3d5c717..f897df0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2006 Internet2
+ *  Copyright 2001-2007 Internet2
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -15,7 +15,7 @@
  */
 
 /**
- * @file XMLObjectChildrenList.h
+ * @file xmltooling/util/XMLObjectChildrenList.h
  * 
  * STL-compatible container wrapper
  */
@@ -24,6 +24,9 @@
 #define __xmltooling_list_h__
 
 #include <xmltooling/exceptions.h>
+#include <xmltooling/XMLObject.h>
+
+#include <list>
 
 /**
  * Shorthand for an XMLObjectChildrenList wrapped around a vector
@@ -88,13 +91,13 @@ namespace xmltooling {
         template <class _Tx, class _Tz> friend class XMLObjectChildrenList;
         template <class _Tx, class _Tz> friend class XMLObjectPairList;
     public:
-        typedef typename _Ty::iterator::iterator_category iterator_category;
-        typedef typename _Ty::iterator::value_type value_type;
-        typedef typename _Ty::iterator::reference reference;
-        typedef typename _Ty::iterator::pointer pointer;
-        typedef typename _Ty::const_iterator::reference const_reference;
-        typedef typename _Ty::const_iterator::pointer const_pointer;
-        typedef typename _Ty::iterator::difference_type difference_type;
+        typedef typename std::iterator_traits<typename _Ty::iterator>::iterator_category iterator_category;
+        typedef typename std::iterator_traits<typename _Ty::iterator>::value_type value_type;
+        typedef typename std::iterator_traits<typename _Ty::iterator>::difference_type difference_type;
+        typedef typename std::iterator_traits<typename _Ty::iterator>::pointer pointer;
+        typedef typename std::iterator_traits<typename _Ty::iterator>::reference reference;
+        typedef typename _Ty::const_reference const_reference;
+        typedef typename _Ty::const_pointer const_pointer;
 
         XMLObjectChildrenIterator() {
         }
@@ -108,7 +111,7 @@ namespace xmltooling {
         }
 
         const_reference operator->() const {
-            return *(m_iter.operator->());
+            return *m_iter;
         }
 
         XMLObjectChildrenIterator& operator++() {
@@ -178,6 +181,10 @@ namespace xmltooling {
                    // test for iterator inequality
                    return (!(m_iter == _Right.m_iter));
            }
+           
+           bool operator<(const XMLObjectChildrenIterator &_Right) const {
+               return (m_iter < _Right.m_iter);
+           }
         /// @endcond
     };