Throw exception in debug mode when thisRef()/thisWeakRef() is called from the object's constructor.

This commit is contained in:
Vincent Richard 2005-09-02 10:53:24 +00:00
parent 5c3e21ee1d
commit 8cae762d46

View File

@ -104,24 +104,68 @@ void object::releaseWeak(utility::weak_ref_base* w) const
ref <object> object::thisRef()
{
#if VMIME_DEBUG
if (m_strongCount == 0)
{
std::ostringstream oss;
oss << "ERROR: thisRef() MUST NOT be called from the object constructor."
<< " (" << __FILE__ << ", line " << __LINE__ << ")" << std::endl;
throw std::runtime_error(oss.str());
}
#endif // VMIME_DEBUG
return ref <object>::fromPtr(this);
}
ref <const object> object::thisRef() const
{
#if VMIME_DEBUG
if (m_strongCount == 0)
{
std::ostringstream oss;
oss << "ERROR: thisRef() MUST NOT be called from the object constructor."
<< " (" << __FILE__ << ", line " << __LINE__ << ")" << std::endl;
throw std::runtime_error(oss.str());
}
#endif // VMIME_DEBUG
return ref <const object>::fromPtr(this);
}
weak_ref <object> object::thisWeakRef()
{
#if VMIME_DEBUG
if (m_strongCount == 0)
{
std::ostringstream oss;
oss << "ERROR: thisWeakRef() MUST NOT be called from the object constructor."
<< " (" << __FILE__ << ", line " << __LINE__ << ")" << std::endl;
throw std::runtime_error(oss.str());
}
#endif // VMIME_DEBUG
return weak_ref <object>(thisRef());
}
weak_ref <const object> object::thisWeakRef() const
{
#if VMIME_DEBUG
if (m_strongCount == 0)
{
std::ostringstream oss;
oss << "ERROR: thisWeakRef() MUST NOT be called from the object constructor."
<< " (" << __FILE__ << ", line " << __LINE__ << ")" << std::endl;
throw std::runtime_error(oss.str());
}
#endif // VMIME_DEBUG
return weak_ref <const object>(thisRef());
}