Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/libs/iterator/example/node.hpp @ 12

Last change on this file since 12 was 12, checked in by landauf, 17 years ago

added boost

  • Property svn:executable set to *
File size: 1.1 KB
Line 
1// Copyright David Abrahams 2004. Use, modification and distribution is
2// subject to the Boost Software License, Version 1.0. (See accompanying
3// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
4#ifndef NODE_DWA2004110_HPP
5# define NODE_DWA2004110_HPP
6
7# include <iostream>
8
9// Polymorphic list node base class
10
11struct node_base
12{
13    node_base() : m_next(0) {}
14
15    virtual ~node_base()
16    {
17        delete m_next;
18    }
19
20    node_base* next() const
21    {
22        return m_next;
23    }
24
25    virtual void print(std::ostream& s) const = 0;
26    virtual void double_me() = 0;
27       
28    void append(node_base* p)
29    {
30        if (m_next)
31            m_next->append(p);
32        else
33            m_next = p;
34    }
35   
36 private:
37    node_base* m_next;
38};
39
40inline std::ostream& operator<<(std::ostream& s, node_base const& n)
41{
42    n.print(s);
43    return s;
44}
45
46template <class T>
47struct node : node_base
48{
49    node(T x)
50      : m_value(x)
51    {}
52
53    void print(std::ostream& s) const { s << this->m_value; }
54    void double_me() { m_value += m_value; }
55   
56 private:
57    T m_value;
58};
59   
60#endif // NODE_DWA2004110_HPP
Note: See TracBrowser for help on using the repository browser.