1 // list stl/clr header
2 #ifndef _CLI_LIST_
3  #define _CLI_LIST_
4 #include <cliext/functional>
5 #include <cliext/iterator>
6
7 namespace cliext {
8     namespace impl {
9 //
10 // TEMPLATE REF CLASS list_node
11 //
12 template<typename _Value_t>
13     ref class list_node
14     :    public _STLCLR Generic::INode<_Value_t>
15     {    // list node
16 public:
17     typedef list_node<_Value_t> _Mytype_t;
18     typedef _STLCLR Generic::INode<_Value_t> _Mynode_it;
19     typedef _STLCLR Generic::IBidirectionalContainer<_Value_t> _Mycont_it;
20     typedef _Value_t value_type;
21
22     list_node(_Mycont_it^ _Owner)
23         :    _Mycont(_Owner)
24         {    // construct a node with defaults
25         }
26
27     _Mycont_it^ container()
28         {    // return owning container
29         return (_Head == nullptr ? nullptr : _Head->_Mycont);
30         }
31
32     bool is_head()
33         {    // test if head node
34         return (_Mycont != nullptr);
35         }
36
37     _Mytype_t^ next_node()
38         {    // return successor node
39         if (this == _Head || _Head == nullptr)
40             throw gcnew System::InvalidOperationException();
41         return (_Next);
42         }
43
44     _Mytype_t^ prev_node()
45         {    // return predecessor node
46         if (_Head == _Prev || _Head == nullptr)
47             throw gcnew System::InvalidOperationException();
48         return (_Prev);
49         }
50
51     property _Value_t% _Value
52         {    // get or set _Myval
53         virtual _Value_t% get()
Lines 54 ... 1820 are skipped.
1821         if (_Pleft->_Myval < _Pright->_Myval)
1822             return (true);
1823         else if (_Pright->_Myval < _Pleft->_Myval)
1824             return (false);
1825         _Pleft = _Pleft->_Next;
1826         _Pright = _Pright->_Next;
1827         }
1828     return (_Idx == _Left.size() && _Idx != _Right.size());
1829     }
1830
1831 template<typename _Value_t> inline
1832     bool operator>=(list<_Value_t>% _Left,
1833         list<_Value_t>% _Right)
1834     {    // test if _Left >= _Right
1835     return (!(_Left < _Right));
1836     }
1837
1838 template<typename _Value_t> inline
1839     bool operator>(list<_Value_t>% _Left,
1840         list<_Value_t>% _Right)
1841     {    // test if _Left > _Right
1842     return (_Right < _Left);
1843     }
1844
1845 template<typename _Value_t> inline
1846     bool operator<=(list<_Value_t>% _Left,
1847         list<_Value_t>% _Right)
1848     {    // test if _Left <= _Right
1849     return (!(_Right < _Left));
1850     }
1851
1852 //
1853 // TEMPLATE FUNCTION swap
1854 //
1855 template<typename _Value_t> inline
1856     void swap(list<_Value_t>% _Left,
1857         list<_Value_t>% _Right)
1858     {    // swap two lists
1859     _Left.swap(_Right);
1860     }
1861
1862 }    // namespace cliext
1863 #endif // _CLI_LIST_
1864
1865 /*
1866  * Copyright (c) 2004-2007 by Dinkumware, Ltd.  ALL RIGHTS RESERVED.
1867  * Consult your license regarding permissions and restrictions.
1868 V5.03:0009 */
1869