fix baseline build (old cairo) - 'cairo_rectangle_int_t' does not name a type
[LibreOffice.git] / external / mdds / mdds-c++98.patch.0
blobeaf1d60a86afba2d0989a8d59d1f4ac2e11fae5f
1 --- include/mdds/multi_type_vector_itr.hpp
2 +++ include/mdds/multi_type_vector_itr.hpp
3 @@ -139,14 +139,15 @@
4      typedef typename parent_type::size_type size_type;
5      typedef iterator_value_node<size_type, typename parent_type::element_block_type> node;
6  
7 -    iterator_common_base() : m_cur_node(0, 0) {}
8 +    iterator_common_base() : m_cur_node(0, 0), m_singular(true) {}
9  
10      iterator_common_base(
11          const base_iterator_type& pos, const base_iterator_type& end,
12          size_type start_pos, size_type block_index) :
13          m_cur_node(start_pos, block_index),
14          m_pos(pos),
15 -        m_end(end)
16 +        m_end(end),
17 +        m_singular(false)
18      {
19          if (m_pos != m_end)
20              update_node();
21 @@ -154,9 +155,13 @@
23      iterator_common_base(const iterator_common_base& other) :
24          m_cur_node(other.m_cur_node),
25 -        m_pos(other.m_pos),
26 -        m_end(other.m_end)
27 +        m_singular(other.m_singular)
28      {
29 +        if (!m_singular)
30 +        {
31 +            m_pos = other.m_pos;
32 +            m_end = other.m_end;
33 +        }
34      }
36      void update_node()
37 @@ -196,6 +201,7 @@
38      node m_cur_node;
39      base_iterator_type m_pos;
40      base_iterator_type m_end;
41 +    bool m_singular;
43  public:
44      bool operator== (const iterator_common_base& other) const
45 @@ -218,8 +224,12 @@
46      iterator_common_base& operator= (const iterator_common_base& other)
47      {
48          m_cur_node = other.m_cur_node;
49 -        m_pos = other.m_pos;
50 -        m_end = other.m_end;
51 +        m_singular = other.m_singular;
52 +        if (!m_singular)
53 +        {
54 +            m_pos = other.m_pos;
55 +            m_end = other.m_end;
56 +        }
57          return *this;
58      }
60 @@ -226,8 +236,22 @@
61      void swap(iterator_common_base& other)
62      {
63          m_cur_node.swap(other.m_cur_node);
64 -        std::swap(m_pos, other.m_pos);
65 -        std::swap(m_end, other.m_end);
66 +        std::swap(m_singular, other.m_singular);
67 +        if (!(m_singular || other.m_singular))
68 +        {
69 +            std::swap(m_pos, other.m_pos);
70 +            std::swap(m_end, other.m_end);
71 +        }
72 +        else if (!m_singular)
73 +        {
74 +            m_pos = other.m_pos;
75 +            m_end = other.m_end;
76 +        }
77 +        else if (!other.m_singular)
78 +        {
79 +            other.m_pos = m_pos;
80 +            other.m_end = m_end;
81 +        }
82      }
84      const node& get_node() const { return m_cur_node; }