1 /* Pending_List class implementation: inline functions.
2    Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it>
3    Copyright (C) 2010-2016 BUGSENG srl (http://bugseng.com)
4 
5 This file is part of the Parma Polyhedra Library (PPL).
6 
7 The PPL is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 3 of the License, or (at your
10 option) any later version.
11 
12 The PPL is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
20 
21 For the most up-to-date information see the Parma Polyhedra Library
22 site: http://bugseng.com/products/ppl/ . */
23 
24 #ifndef PPL_Pending_List_inlines_hh
25 #define PPL_Pending_List_inlines_hh 1
26 
27 #include <cassert>
28 
29 namespace Parma_Polyhedra_Library {
30 
31 namespace Implementation {
32 
33 namespace Watchdog {
34 
35 template <typename Traits>
36 inline
Pending_List()37 Pending_List<Traits>::Pending_List()
38   : active_list(),
39     free_list() {
40   assert(OK());
41 }
42 
43 template <typename Traits>
44 inline
~Pending_List()45 Pending_List<Traits>::~Pending_List() {
46 }
47 
48 template <typename Traits>
49 inline typename Pending_List<Traits>::iterator
begin()50 Pending_List<Traits>::begin() {
51   return active_list.begin();
52 }
53 
54 template <typename Traits>
55 inline typename Pending_List<Traits>::iterator
end()56 Pending_List<Traits>::end() {
57   return active_list.end();
58 }
59 
60 template <typename Traits>
61 inline bool
empty() const62 Pending_List<Traits>::empty() const {
63   return active_list.empty();
64 }
65 
66 template <typename Traits>
67 inline typename Pending_List<Traits>::iterator
erase(iterator position)68 Pending_List<Traits>::erase(iterator position) {
69   assert(!empty());
70   iterator next = active_list.erase(position);
71   free_list.push_back(*position);
72   assert(OK());
73   return next;
74 }
75 
76 } // namespace Watchdog
77 
78 } // namespace Implementation
79 
80 } // namespace Parma_Polyhedra_Library
81 
82 #endif // !defined(PPL_Pending_List_inlines_hh)
83