1 /* Pending_Element class declaration. 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_Element_defs_hh 25 #define PPL_Pending_Element_defs_hh 1 26 27 #include "Pending_Element_types.hh" 28 #include "Doubly_Linked_Object_defs.hh" 29 #include "Handler_types.hh" 30 31 //! A class for pending watchdog events with embedded links. 32 /*! 33 Each pending watchdog event is characterized by a deadline (a positive 34 time interval), an associated handler that will be invoked upon event 35 expiration, and a Boolean flag that indicates whether the event has already 36 expired or not. 37 */ 38 template <typename Threshold> 39 class Parma_Polyhedra_Library::Implementation::Watchdog::Pending_Element 40 : public Doubly_Linked_Object { 41 public: 42 //! Constructs an element with the given attributes. 43 Pending_Element(const Threshold& deadline, 44 const Handler& handler, 45 bool& expired_flag); 46 47 //! Modifies \p *this so that it has the given attributes. 48 void assign(const Threshold& deadline, 49 const Handler& handler, 50 bool& expired_flag); 51 52 //! Returns the deadline of the event. 53 const Threshold& deadline() const; 54 55 //! Returns the handler associated to the event. 56 const Handler& handler() const; 57 58 //! Returns a reference to the "event-expired" flag. 59 bool& expired_flag() const; 60 61 //! Checks if all the invariants are satisfied. 62 bool OK() const; 63 64 private: 65 //! The deadline of the event. 66 Threshold d; 67 68 //! A pointer to the handler associated to the event. 69 const Handler* p_h; 70 71 //! A pointer to a flag saying whether the event has already expired or not. 72 bool* p_f; 73 }; 74 75 #include "Pending_Element_inlines.hh" 76 77 #endif // !defined(PPL_Pending_Element_defs_hh) 78