//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include "MantidKernel/DataItem.h"
#include <Poco/RWLock.h>

namespace Mantid {
namespace Kernel {

/** Default constructor
 */
DataItem::DataItem() { m_lock = new Poco::RWLock(); }

/** Copy constructor
 */
DataItem::DataItem(const DataItem & /*other*/) {
  // Always make a unique lock!
  m_lock = new Poco::RWLock();
}

/**
 * Destructor. Required in cpp do avoid linker errors when other projects try to
 * inherit from DataItem
 */
DataItem::~DataItem() {
  delete m_lock;
  m_lock = NULL;
}

/** Private method to access the RWLock object.
 *
 * @return the RWLock object.
 */
Poco::RWLock *DataItem::getLock() const { return m_lock; }

} // namespace Mantid
} // namespace Kernel