blob: 627e7203a4ac22aaafa51d2a1596abdff62ab6e0 [file] [log] [blame]
//===-- Baton.h -------------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef lldb_Baton_h_
#define lldb_Baton_h_
// C Includes
// C++ Includes
// Other libraries and framework includes
// Project includes
#include "lldb/lldb-public.h"
namespace lldb_private {
//----------------------------------------------------------------------
/// @class Baton Baton.h "lldb/Core/Baton.h"
/// @brief A class designed to wrap callback batons so they can cleanup
/// any acquired resources
///
/// This class is designed to be used by any objects that have a
/// callback function that takes a baton where the baton might need to
/// free/delete/close itself.
///
/// The default behavior is to not free anything. Subclasses can
/// free any needed resources in their destructors.
//----------------------------------------------------------------------
class Baton
{
public:
explicit Baton(void *p) :
m_data (p)
{
}
virtual
~Baton()
{
// The default destructor for a baton does NOT attempt to clean up
// anything in m_baton
}
virtual void
GetDescription (Stream *s, lldb::DescriptionLevel level) const;
void *m_data; // Leave baton public for easy access
private:
//------------------------------------------------------------------
// For Baton only
//------------------------------------------------------------------
DISALLOW_COPY_AND_ASSIGN (Baton);
};
} // namespace lldb_private
#endif // lldb_Baton_h_