1 //===-- Baton.h -------------------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef lldb_Baton_h_ 11 #define lldb_Baton_h_ 12 13 // C Includes 14 // C++ Includes 15 // Other libraries and framework includes 16 // Project includes 17 #include "lldb/lldb-public.h" 18 19 namespace lldb_private { 20 21 //---------------------------------------------------------------------- 22 /// @class Baton Baton.h "lldb/Core/Baton.h" 23 /// @brief A class designed to wrap callback batons so they can cleanup 24 /// any acquired resources 25 /// 26 /// This class is designed to be used by any objects that have a 27 /// callback function that takes a baton where the baton might need to 28 /// free/delete/close itself. 29 /// 30 /// The default behavior is to not free anything. Subclasses can 31 /// free any needed resources in their destructors. 32 //---------------------------------------------------------------------- 33 class Baton 34 { 35 public: Baton(void * p)36 explicit Baton(void *p) : 37 m_data (p) 38 { 39 } 40 41 virtual ~Baton()42 ~Baton() 43 { 44 // The default destructor for a baton does NOT attempt to clean up 45 // anything in m_baton 46 } 47 48 virtual void 49 GetDescription (Stream *s, lldb::DescriptionLevel level) const; 50 51 void *m_data; // Leave baton public for easy access 52 53 private: 54 //------------------------------------------------------------------ 55 // For Baton only 56 //------------------------------------------------------------------ 57 DISALLOW_COPY_AND_ASSIGN (Baton); 58 }; 59 60 } // namespace lldb_private 61 62 #endif // lldb_Baton_h_ 63