forked from boostorg/smart_ptr
use_count() postconditions added; enable_..._test.cpp renamed.
[SVN r16896]
This commit is contained in:
@ -8,7 +8,7 @@
|
||||
//
|
||||
// detail/shared_count.hpp
|
||||
//
|
||||
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
|
||||
// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd.
|
||||
//
|
||||
// Permission to copy, use, modify, sell and distribute this software
|
||||
// is granted provided this copyright notice appears in all copies.
|
||||
@ -386,7 +386,7 @@ public:
|
||||
|
||||
long use_count() const // nothrow
|
||||
{
|
||||
return pi_ != 0? pi_->use_count(): 42; // '42' is an example of 'unspecified'
|
||||
return pi_ != 0? pi_->use_count(): 0;
|
||||
}
|
||||
|
||||
bool unique() const // nothrow
|
||||
|
@ -6,9 +6,9 @@
|
||||
#endif
|
||||
|
||||
//
|
||||
// enable_shared_from_this_test.cpp
|
||||
// shared_from_this_test.cpp
|
||||
//
|
||||
// Copyright (c) 2002 Peter Dimov
|
||||
// Copyright (c) 2002, 2003 Peter Dimov
|
||||
//
|
||||
// Permission to copy, use, modify, sell and distribute this software
|
||||
// is granted provided this copyright notice appears in all copies.
|
@ -258,7 +258,8 @@ template<class Y> shared_ptr(shared_ptr<Y> const & r); // never
|
||||
<blockquote>
|
||||
<p><b>Effects:</b> If <b>r</b> is <EM>empty</EM>, constructs an <EM>empty</EM> <b>shared_ptr</b>;
|
||||
otherwise, constructs a <b>shared_ptr</b> that <EM>shares ownership</EM> with <b>r</b>.</p>
|
||||
<p><b>Postconditions:</b> <code>get() == r.get()</code>.</p>
|
||||
<p><b>Postconditions:</b> <code>get() == r.get() && use_count() ==
|
||||
r.use_count()</code>.</p>
|
||||
<p><b>Throws:</b> nothing.</p>
|
||||
</blockquote>
|
||||
<pre>template<class Y> explicit shared_ptr(<A href="weak_ptr.htm" >weak_ptr</A><Y> const & r);</pre>
|
||||
@ -266,6 +267,7 @@ template<class Y> shared_ptr(shared_ptr<Y> const & r); // never
|
||||
<p><b>Effects:</b> If <b>r</b> is <EM>empty</EM>, constructs an <EM>empty</EM> <b>shared_ptr</b>;
|
||||
otherwise, constructs a <b>shared_ptr</b> that <EM>shares ownership</EM> with <b>r</b>
|
||||
and stores a copy of the pointer stored in <STRONG>r</STRONG>.</p>
|
||||
<p><b>Postconditions:</b> <code>use_count() == r.use_count()</code>.</p>
|
||||
<p><b>Throws:</b> <b>bad_weak_ptr</b> when <code>r.use_count() == 0</code>.</p>
|
||||
<p><b>Exception safety:</b> If an exception is thrown, the constructor has no
|
||||
effect.</p>
|
||||
@ -359,9 +361,9 @@ q = p;
|
||||
<h3><a name="use_count">use_count</a></h3>
|
||||
<pre>long use_count() const; // never throws</pre>
|
||||
<blockquote>
|
||||
<p><b>Returns:</b> the number of <b>shared_ptr</b> objects that <i>share ownership</i>
|
||||
with <b>*this</b>, or an unspecified nonnegative value when <STRONG>*this</STRONG>
|
||||
is <EM>empty</EM>.</p>
|
||||
<p><b>Returns:</b> the number of <b>shared_ptr</b> objects, <STRONG>*this</STRONG> included, that
|
||||
<i>share ownership</i> with <b>*this</b>, or an unspecified nonnegative value
|
||||
when <STRONG>*this</STRONG> is <EM>empty</EM>.</p>
|
||||
<p><b>Throws:</b> nothing.</p>
|
||||
<P><B>Notes:</B> <code>use_count()</code> is not necessarily efficient. Use only
|
||||
for debugging and testing purposes, not for production code.</P>
|
||||
|
@ -9,7 +9,7 @@
|
||||
//
|
||||
// shared_ptr_test.cpp
|
||||
//
|
||||
// Copyright (c) 2002 Peter Dimov
|
||||
// Copyright (c) 2002, 2003 Peter Dimov
|
||||
//
|
||||
// Permission to copy, use, modify, sell and distribute this software
|
||||
// is granted provided this copyright notice appears in all copies.
|
||||
@ -481,18 +481,21 @@ void copy_constructor()
|
||||
BOOST_TEST(pi2? false: true);
|
||||
BOOST_TEST(!pi2);
|
||||
BOOST_TEST(pi2.get() == 0);
|
||||
BOOST_TEST(pi2.use_count() == pi.use_count());
|
||||
|
||||
boost::shared_ptr<void> pi3(pi);
|
||||
BOOST_TEST(pi3 == pi);
|
||||
BOOST_TEST(pi3? false: true);
|
||||
BOOST_TEST(!pi3);
|
||||
BOOST_TEST(pi3.get() == 0);
|
||||
BOOST_TEST(pi3.use_count() == pi.use_count());
|
||||
|
||||
boost::shared_ptr<void> pi4(pi3);
|
||||
BOOST_TEST(pi4 == pi3);
|
||||
BOOST_TEST(pi4? false: true);
|
||||
BOOST_TEST(!pi4);
|
||||
BOOST_TEST(pi4.get() == 0);
|
||||
BOOST_TEST(pi4.use_count() == pi3.use_count());
|
||||
}
|
||||
|
||||
{
|
||||
@ -503,6 +506,7 @@ void copy_constructor()
|
||||
BOOST_TEST(pv2? false: true);
|
||||
BOOST_TEST(!pv2);
|
||||
BOOST_TEST(pv2.get() == 0);
|
||||
BOOST_TEST(pv2.use_count() == pv.use_count());
|
||||
}
|
||||
|
||||
{
|
||||
@ -513,12 +517,14 @@ void copy_constructor()
|
||||
BOOST_TEST(px2? false: true);
|
||||
BOOST_TEST(!px2);
|
||||
BOOST_TEST(px2.get() == 0);
|
||||
BOOST_TEST(px2.use_count() == px.use_count());
|
||||
|
||||
boost::shared_ptr<void> px3(px);
|
||||
BOOST_TEST(px3 == px);
|
||||
BOOST_TEST(px3? false: true);
|
||||
BOOST_TEST(!px3);
|
||||
BOOST_TEST(px3.get() == 0);
|
||||
BOOST_TEST(px3.use_count() == px.use_count());
|
||||
}
|
||||
|
||||
{
|
||||
@ -531,8 +537,7 @@ void copy_constructor()
|
||||
BOOST_TEST(pi2.get() == 0);
|
||||
BOOST_TEST(pi2.use_count() == 2);
|
||||
BOOST_TEST(!pi2.unique());
|
||||
|
||||
BOOST_TEST(pi.use_count() == pi2.use_count());
|
||||
BOOST_TEST(pi2.use_count() == pi.use_count());
|
||||
BOOST_TEST(!(pi < pi2 || pi2 < pi)); // shared ownership test
|
||||
|
||||
boost::shared_ptr<void> pi3(pi);
|
||||
@ -542,6 +547,8 @@ void copy_constructor()
|
||||
BOOST_TEST(pi3.get() == 0);
|
||||
BOOST_TEST(pi3.use_count() == 3);
|
||||
BOOST_TEST(!pi3.unique());
|
||||
BOOST_TEST(pi3.use_count() == pi.use_count());
|
||||
BOOST_TEST(!(pi < pi3 || pi3 < pi)); // shared ownership test
|
||||
|
||||
boost::shared_ptr<void> pi4(pi2);
|
||||
BOOST_TEST(pi4 == pi2);
|
||||
@ -550,6 +557,8 @@ void copy_constructor()
|
||||
BOOST_TEST(pi4.get() == 0);
|
||||
BOOST_TEST(pi4.use_count() == 4);
|
||||
BOOST_TEST(!pi4.unique());
|
||||
BOOST_TEST(pi4.use_count() == pi2.use_count());
|
||||
BOOST_TEST(!(pi2 < pi4 || pi4 < pi2)); // shared ownership test
|
||||
|
||||
BOOST_TEST(pi3.use_count() == pi4.use_count());
|
||||
BOOST_TEST(!(pi3 < pi4 || pi4 < pi3)); // shared ownership test
|
||||
@ -565,8 +574,7 @@ void copy_constructor()
|
||||
BOOST_TEST(px2.get() == 0);
|
||||
BOOST_TEST(px2.use_count() == 2);
|
||||
BOOST_TEST(!px2.unique());
|
||||
|
||||
BOOST_TEST(px.use_count() == px2.use_count());
|
||||
BOOST_TEST(px2.use_count() == px.use_count());
|
||||
BOOST_TEST(!(px < px2 || px2 < px)); // shared ownership test
|
||||
|
||||
boost::shared_ptr<void> px3(px);
|
||||
@ -576,6 +584,8 @@ void copy_constructor()
|
||||
BOOST_TEST(px3.get() == 0);
|
||||
BOOST_TEST(px3.use_count() == 3);
|
||||
BOOST_TEST(!px3.unique());
|
||||
BOOST_TEST(px3.use_count() == px.use_count());
|
||||
BOOST_TEST(!(px < px3 || px3 < px)); // shared ownership test
|
||||
|
||||
boost::shared_ptr<void> px4(px2);
|
||||
BOOST_TEST(px4 == px2);
|
||||
@ -584,6 +594,8 @@ void copy_constructor()
|
||||
BOOST_TEST(px4.get() == 0);
|
||||
BOOST_TEST(px4.use_count() == 4);
|
||||
BOOST_TEST(!px4.unique());
|
||||
BOOST_TEST(px4.use_count() == px2.use_count());
|
||||
BOOST_TEST(!(px2 < px4 || px4 < px2)); // shared ownership test
|
||||
|
||||
BOOST_TEST(px3.use_count() == px4.use_count());
|
||||
BOOST_TEST(!(px3 < px4 || px4 < px3)); // shared ownership test
|
||||
@ -601,8 +613,7 @@ void copy_constructor()
|
||||
BOOST_TEST(pi2.use_count() == 2);
|
||||
BOOST_TEST(!pi2.unique());
|
||||
BOOST_TEST(*pi2 == 7);
|
||||
|
||||
BOOST_TEST(pi.use_count() == pi2.use_count());
|
||||
BOOST_TEST(pi2.use_count() == pi.use_count());
|
||||
BOOST_TEST(!(pi < pi2 || pi2 < pi)); // shared ownership test
|
||||
}
|
||||
|
||||
@ -618,8 +629,7 @@ void copy_constructor()
|
||||
BOOST_TEST(pv2.get() == p);
|
||||
BOOST_TEST(pv2.use_count() == 2);
|
||||
BOOST_TEST(!pv2.unique());
|
||||
|
||||
BOOST_TEST(pv.use_count() == pv2.use_count());
|
||||
BOOST_TEST(pv2.use_count() == pv.use_count());
|
||||
BOOST_TEST(!(pv < pv2 || pv2 < pv)); // shared ownership test
|
||||
}
|
||||
|
||||
@ -640,7 +650,7 @@ void copy_constructor()
|
||||
|
||||
BOOST_TEST(X::instances == 1);
|
||||
|
||||
BOOST_TEST(px.use_count() == px2.use_count());
|
||||
BOOST_TEST(px2.use_count() == px.use_count());
|
||||
BOOST_TEST(!(px < px2 || px2 < px)); // shared ownership test
|
||||
|
||||
boost::shared_ptr<void> px3(px);
|
||||
@ -650,6 +660,8 @@ void copy_constructor()
|
||||
BOOST_TEST(px3.get() == p);
|
||||
BOOST_TEST(px3.use_count() == 3);
|
||||
BOOST_TEST(!px3.unique());
|
||||
BOOST_TEST(px3.use_count() == px.use_count());
|
||||
BOOST_TEST(!(px < px3 || px3 < px)); // shared ownership test
|
||||
|
||||
boost::shared_ptr<void> px4(px2);
|
||||
BOOST_TEST(px4 == px2);
|
||||
@ -658,6 +670,8 @@ void copy_constructor()
|
||||
BOOST_TEST(px4.get() == p);
|
||||
BOOST_TEST(px4.use_count() == 4);
|
||||
BOOST_TEST(!px4.unique());
|
||||
BOOST_TEST(px4.use_count() == px2.use_count());
|
||||
BOOST_TEST(!(px2 < px4 || px4 < px2)); // shared ownership test
|
||||
|
||||
BOOST_TEST(px3.use_count() == px4.use_count());
|
||||
BOOST_TEST(!(px3 < px4 || px4 < px3)); // shared ownership test
|
||||
@ -678,6 +692,8 @@ void copy_constructor()
|
||||
BOOST_TEST(px.get() == p);
|
||||
BOOST_TEST(px.use_count() == 2);
|
||||
BOOST_TEST(!px.unique());
|
||||
BOOST_TEST(px.use_count() == py.use_count());
|
||||
BOOST_TEST(!(px < py || py < px)); // shared ownership test
|
||||
|
||||
BOOST_TEST(X::instances == 1);
|
||||
BOOST_TEST(Y::instances == 1);
|
||||
@ -689,6 +705,8 @@ void copy_constructor()
|
||||
BOOST_TEST(pv.get() == px.get());
|
||||
BOOST_TEST(pv.use_count() == 3);
|
||||
BOOST_TEST(!pv.unique());
|
||||
BOOST_TEST(pv.use_count() == px.use_count());
|
||||
BOOST_TEST(!(px < pv || pv < px)); // shared ownership test
|
||||
|
||||
boost::shared_ptr<void const> pv2(py);
|
||||
BOOST_TEST(pv2 == py);
|
||||
@ -697,6 +715,8 @@ void copy_constructor()
|
||||
BOOST_TEST(pv2.get() == py.get());
|
||||
BOOST_TEST(pv2.use_count() == 4);
|
||||
BOOST_TEST(!pv2.unique());
|
||||
BOOST_TEST(pv2.use_count() == py.use_count());
|
||||
BOOST_TEST(!(py < pv2 || pv2 < py)); // shared ownership test
|
||||
|
||||
BOOST_TEST(pv.use_count() == pv2.use_count());
|
||||
BOOST_TEST(!(pv < pv2 || pv2 < pv)); // shared ownership test
|
||||
@ -710,6 +730,7 @@ void weak_ptr_constructor()
|
||||
{
|
||||
{
|
||||
boost::weak_ptr<Y> wp;
|
||||
BOOST_TEST(wp.use_count() == 0);
|
||||
|
||||
try
|
||||
{
|
||||
@ -730,48 +751,69 @@ void weak_ptr_constructor()
|
||||
}
|
||||
}
|
||||
|
||||
boost::shared_ptr<Y> p(new Y);
|
||||
boost::weak_ptr<Y> wp(p);
|
||||
|
||||
{
|
||||
boost::shared_ptr<Y> p2(wp);
|
||||
BOOST_TEST(p2? true: false);
|
||||
BOOST_TEST(!!p2);
|
||||
BOOST_TEST(p2.get() == p.get());
|
||||
BOOST_TEST(p2.use_count() == 2);
|
||||
BOOST_TEST(!p2.unique());
|
||||
boost::shared_ptr<Y> p;
|
||||
boost::weak_ptr<Y> wp(p);
|
||||
|
||||
BOOST_TEST(p.use_count() == p2.use_count());
|
||||
BOOST_TEST(!(p < p2 || p2 < p)); // shared ownership test
|
||||
if(wp.use_count() != 0) // 0 allowed but not required
|
||||
{
|
||||
boost::shared_ptr<Y> p2(wp);
|
||||
BOOST_TEST(p2.use_count() == wp.use_count());
|
||||
BOOST_TEST(p2.get() == 0);
|
||||
|
||||
boost::shared_ptr<X> p3(wp);
|
||||
BOOST_TEST(p3? true: false);
|
||||
BOOST_TEST(!!p3);
|
||||
BOOST_TEST(p3.get() == p.get());
|
||||
BOOST_TEST(p3.use_count() == 3);
|
||||
BOOST_TEST(!p3.unique());
|
||||
|
||||
BOOST_TEST(p.use_count() == p3.use_count());
|
||||
boost::shared_ptr<X> p3(wp);
|
||||
BOOST_TEST(p3.use_count() == wp.use_count());
|
||||
BOOST_TEST(p3.get() == 0);
|
||||
}
|
||||
}
|
||||
|
||||
p.reset();
|
||||
{
|
||||
boost::shared_ptr<Y> p(new Y);
|
||||
boost::weak_ptr<Y> wp(p);
|
||||
|
||||
try
|
||||
{
|
||||
boost::shared_ptr<Y> p2(wp);
|
||||
BOOST_ERROR("shared_ptr<Y> p2(wp) failed to throw");
|
||||
}
|
||||
catch(boost::bad_weak_ptr)
|
||||
{
|
||||
}
|
||||
{
|
||||
boost::shared_ptr<Y> p2(wp);
|
||||
BOOST_TEST(p2? true: false);
|
||||
BOOST_TEST(!!p2);
|
||||
BOOST_TEST(p2.get() == p.get());
|
||||
BOOST_TEST(p2.use_count() == 2);
|
||||
BOOST_TEST(!p2.unique());
|
||||
BOOST_TEST(p2.use_count() == wp.use_count());
|
||||
|
||||
try
|
||||
{
|
||||
boost::shared_ptr<X> p3(wp);
|
||||
BOOST_ERROR("shared_ptr<X> p3(wp) failed to throw");
|
||||
}
|
||||
catch(boost::bad_weak_ptr)
|
||||
{
|
||||
BOOST_TEST(p.use_count() == p2.use_count());
|
||||
BOOST_TEST(!(p < p2 || p2 < p)); // shared ownership test
|
||||
|
||||
boost::shared_ptr<X> p3(wp);
|
||||
BOOST_TEST(p3? true: false);
|
||||
BOOST_TEST(!!p3);
|
||||
BOOST_TEST(p3.get() == p.get());
|
||||
BOOST_TEST(p3.use_count() == 3);
|
||||
BOOST_TEST(!p3.unique());
|
||||
BOOST_TEST(p3.use_count() == wp.use_count());
|
||||
|
||||
BOOST_TEST(p.use_count() == p3.use_count());
|
||||
}
|
||||
|
||||
p.reset();
|
||||
BOOST_TEST(wp.use_count() == 0);
|
||||
|
||||
try
|
||||
{
|
||||
boost::shared_ptr<Y> p2(wp);
|
||||
BOOST_ERROR("shared_ptr<Y> p2(wp) failed to throw");
|
||||
}
|
||||
catch(boost::bad_weak_ptr)
|
||||
{
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
boost::shared_ptr<X> p3(wp);
|
||||
BOOST_ERROR("shared_ptr<X> p3(wp) failed to throw");
|
||||
}
|
||||
catch(boost::bad_weak_ptr)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
//
|
||||
// sp_debug_hooks.cpp
|
||||
//
|
||||
// Copyright (c) 2002 Peter Dimov
|
||||
// Copyright (c) 2002, 2003 Peter Dimov
|
||||
//
|
||||
// Permission to copy, use, modify, sell and distribute this software
|
||||
// is granted provided this copyright notice appears in all copies.
|
||||
|
@ -124,7 +124,7 @@ if(shared_ptr<int> r = <A href="#make_shared" >make_shared</A>(q))
|
||||
<pre>weak_ptr();</pre>
|
||||
<blockquote>
|
||||
<p><b>Effects:</b> Constructs an <EM>empty</EM> <b>weak_ptr</b>.</p>
|
||||
<p><b>Postconditions:</b> <code>use count() == 0<i>???</i></code>.</p>
|
||||
<p><b>Postconditions:</b> <code>use_count() == 0</code>.</p>
|
||||
<p><b>Throws:</b> nothing.</p>
|
||||
</blockquote><a name="constructors"></a>
|
||||
<pre>template<class Y> weak_ptr</A>(shared_ptr<Y> const & r);
|
||||
@ -135,6 +135,7 @@ template<class Y> weak_ptr(weak_ptr<Y> const & r);</pre>
|
||||
<STRONG>weak_ptr</STRONG>; otherwise, constructs a <b>weak_ptr</b> that <EM>shares
|
||||
ownership</EM> with <STRONG>r</STRONG> as if by storing a copy of the
|
||||
pointer stored in <b>r</b>.</p>
|
||||
<p><b>Postconditions:</b> <code>use_count() == r.use_count()</code>.</p>
|
||||
<p><b>Throws:</b> nothing.</p>
|
||||
</blockquote>
|
||||
<h3><a name="destructor">destructor</a></h3>
|
||||
@ -244,7 +245,8 @@ public:
|
||||
}
|
||||
};
|
||||
</pre>
|
||||
<p><br></p>
|
||||
<p><br>
|
||||
</p>
|
||||
<hr>
|
||||
<p>$Date$</p>
|
||||
<p>Copyright 1999 Greg Colvin and Beman Dawes. Copyright 2002 Darin Adler.
|
||||
|
@ -9,7 +9,7 @@
|
||||
//
|
||||
// weak_ptr_test.cpp
|
||||
//
|
||||
// Copyright (c) 2002 Peter Dimov
|
||||
// Copyright (c) 2002, 2003 Peter Dimov
|
||||
//
|
||||
// Permission to copy, use, modify, sell and distribute this software
|
||||
// is granted provided this copyright notice appears in all copies.
|
||||
@ -88,10 +88,10 @@ void shared_ptr_constructor()
|
||||
boost::shared_ptr<int> sp;
|
||||
|
||||
boost::weak_ptr<int> wp(sp);
|
||||
BOOST_TEST(wp.use_count() == 0);
|
||||
BOOST_TEST(wp.use_count() == sp.use_count());
|
||||
|
||||
boost::weak_ptr<void> wp2(sp);
|
||||
BOOST_TEST(wp2.use_count() == 0);
|
||||
BOOST_TEST(wp2.use_count() == sp.use_count());
|
||||
}
|
||||
|
||||
{
|
||||
@ -99,6 +99,7 @@ void shared_ptr_constructor()
|
||||
|
||||
{
|
||||
boost::weak_ptr<int> wp(sp);
|
||||
BOOST_TEST(wp.use_count() == sp.use_count());
|
||||
BOOST_TEST(wp.use_count() == 1);
|
||||
boost::shared_ptr<int> sp2(wp);
|
||||
BOOST_TEST(wp.use_count() == 2);
|
||||
@ -107,6 +108,7 @@ void shared_ptr_constructor()
|
||||
|
||||
{
|
||||
boost::weak_ptr<void> wp(sp);
|
||||
BOOST_TEST(wp.use_count() == sp.use_count());
|
||||
BOOST_TEST(wp.use_count() == 1);
|
||||
boost::shared_ptr<void> sp2(wp);
|
||||
BOOST_TEST(wp.use_count() == 2);
|
||||
@ -119,6 +121,7 @@ void shared_ptr_constructor()
|
||||
|
||||
{
|
||||
boost::weak_ptr<int> wp(sp);
|
||||
BOOST_TEST(wp.use_count() == sp.use_count());
|
||||
BOOST_TEST(wp.use_count() == 1);
|
||||
boost::shared_ptr<int> sp2(wp);
|
||||
BOOST_TEST(wp.use_count() == 2);
|
||||
@ -127,6 +130,7 @@ void shared_ptr_constructor()
|
||||
|
||||
{
|
||||
boost::weak_ptr<void> wp(sp);
|
||||
BOOST_TEST(wp.use_count() == sp.use_count());
|
||||
BOOST_TEST(wp.use_count() == 1);
|
||||
boost::shared_ptr<void> sp2(wp);
|
||||
BOOST_TEST(wp.use_count() == 2);
|
||||
@ -138,13 +142,14 @@ void shared_ptr_constructor()
|
||||
boost::shared_ptr<void> sp;
|
||||
|
||||
boost::weak_ptr<void> wp(sp);
|
||||
BOOST_TEST(wp.use_count() == 0);
|
||||
BOOST_TEST(wp.use_count() == sp.use_count());
|
||||
}
|
||||
|
||||
{
|
||||
boost::shared_ptr<void> sp(static_cast<int*>(0));
|
||||
|
||||
boost::weak_ptr<void> wp(sp);
|
||||
BOOST_TEST(wp.use_count() == sp.use_count());
|
||||
BOOST_TEST(wp.use_count() == 1);
|
||||
boost::shared_ptr<void> sp2(wp);
|
||||
BOOST_TEST(wp.use_count() == 2);
|
||||
@ -155,6 +160,7 @@ void shared_ptr_constructor()
|
||||
boost::shared_ptr<void> sp(new int);
|
||||
|
||||
boost::weak_ptr<void> wp(sp);
|
||||
BOOST_TEST(wp.use_count() == sp.use_count());
|
||||
BOOST_TEST(wp.use_count() == 1);
|
||||
boost::shared_ptr<void> sp2(wp);
|
||||
BOOST_TEST(wp.use_count() == 2);
|
||||
@ -165,10 +171,10 @@ void shared_ptr_constructor()
|
||||
boost::shared_ptr<incomplete> sp;
|
||||
|
||||
boost::weak_ptr<incomplete> wp(sp);
|
||||
BOOST_TEST(wp.use_count() == 0);
|
||||
BOOST_TEST(wp.use_count() == sp.use_count());
|
||||
|
||||
boost::weak_ptr<void> wp2(sp);
|
||||
BOOST_TEST(wp2.use_count() == 0);
|
||||
BOOST_TEST(wp2.use_count() == sp.use_count());
|
||||
}
|
||||
|
||||
{
|
||||
@ -176,6 +182,7 @@ void shared_ptr_constructor()
|
||||
|
||||
{
|
||||
boost::weak_ptr<incomplete> wp(sp);
|
||||
BOOST_TEST(wp.use_count() == sp.use_count());
|
||||
BOOST_TEST(wp.use_count() == 1);
|
||||
boost::shared_ptr<incomplete> sp2(wp);
|
||||
BOOST_TEST(wp.use_count() == 2);
|
||||
@ -184,6 +191,7 @@ void shared_ptr_constructor()
|
||||
|
||||
{
|
||||
boost::weak_ptr<void> wp(sp);
|
||||
BOOST_TEST(wp.use_count() == sp.use_count());
|
||||
BOOST_TEST(wp.use_count() == 1);
|
||||
boost::shared_ptr<void> sp2(wp);
|
||||
BOOST_TEST(wp.use_count() == 2);
|
||||
@ -195,6 +203,7 @@ void shared_ptr_constructor()
|
||||
boost::shared_ptr<void> sp = create_incomplete();
|
||||
|
||||
boost::weak_ptr<void> wp(sp);
|
||||
BOOST_TEST(wp.use_count() == sp.use_count());
|
||||
BOOST_TEST(wp.use_count() == 1);
|
||||
boost::shared_ptr<void> sp2(wp);
|
||||
BOOST_TEST(wp.use_count() == 2);
|
||||
@ -207,18 +216,21 @@ void copy_constructor()
|
||||
{
|
||||
boost::weak_ptr<int> wp;
|
||||
boost::weak_ptr<int> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 0);
|
||||
}
|
||||
|
||||
{
|
||||
boost::weak_ptr<void> wp;
|
||||
boost::weak_ptr<void> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 0);
|
||||
}
|
||||
|
||||
{
|
||||
boost::weak_ptr<incomplete> wp;
|
||||
boost::weak_ptr<incomplete> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 0);
|
||||
}
|
||||
|
||||
@ -227,6 +239,7 @@ void copy_constructor()
|
||||
boost::weak_ptr<int> wp(sp);
|
||||
|
||||
boost::weak_ptr<int> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 1);
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
@ -234,6 +247,7 @@ void copy_constructor()
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
boost::weak_ptr<int> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
BOOST_TEST(!(wp < wp3 || wp3 < wp));
|
||||
}
|
||||
@ -243,6 +257,7 @@ void copy_constructor()
|
||||
boost::weak_ptr<int> wp(sp);
|
||||
|
||||
boost::weak_ptr<int> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 1);
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
@ -250,6 +265,7 @@ void copy_constructor()
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
boost::weak_ptr<int> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
BOOST_TEST(!(wp < wp3 || wp3 < wp));
|
||||
}
|
||||
@ -259,6 +275,7 @@ void copy_constructor()
|
||||
boost::weak_ptr<void> wp(sp);
|
||||
|
||||
boost::weak_ptr<void> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 1);
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
@ -266,6 +283,7 @@ void copy_constructor()
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
boost::weak_ptr<void> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
BOOST_TEST(!(wp < wp3 || wp3 < wp));
|
||||
}
|
||||
@ -275,6 +293,7 @@ void copy_constructor()
|
||||
boost::weak_ptr<void> wp(sp);
|
||||
|
||||
boost::weak_ptr<void> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 1);
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
@ -282,6 +301,7 @@ void copy_constructor()
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
boost::weak_ptr<void> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
BOOST_TEST(!(wp < wp3 || wp3 < wp));
|
||||
}
|
||||
@ -291,6 +311,7 @@ void copy_constructor()
|
||||
boost::weak_ptr<incomplete> wp(sp);
|
||||
|
||||
boost::weak_ptr<incomplete> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 1);
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
@ -298,6 +319,7 @@ void copy_constructor()
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
boost::weak_ptr<incomplete> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
BOOST_TEST(!(wp < wp3 || wp3 < wp));
|
||||
}
|
||||
@ -308,12 +330,14 @@ void conversion_constructor()
|
||||
{
|
||||
boost::weak_ptr<int> wp;
|
||||
boost::weak_ptr<void> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 0);
|
||||
}
|
||||
|
||||
{
|
||||
boost::weak_ptr<incomplete> wp;
|
||||
boost::weak_ptr<void> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 0);
|
||||
}
|
||||
|
||||
@ -321,9 +345,11 @@ void conversion_constructor()
|
||||
boost::weak_ptr<Z> wp;
|
||||
|
||||
boost::weak_ptr<X> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 0);
|
||||
|
||||
boost::weak_ptr<Y> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
}
|
||||
|
||||
@ -332,6 +358,7 @@ void conversion_constructor()
|
||||
boost::weak_ptr<int> wp(sp);
|
||||
|
||||
boost::weak_ptr<void> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 1);
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
@ -339,6 +366,7 @@ void conversion_constructor()
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
boost::weak_ptr<void> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
BOOST_TEST(!(wp < wp3 || wp3 < wp));
|
||||
}
|
||||
@ -348,6 +376,7 @@ void conversion_constructor()
|
||||
boost::weak_ptr<int> wp(sp);
|
||||
|
||||
boost::weak_ptr<void> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 1);
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
@ -355,6 +384,7 @@ void conversion_constructor()
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
boost::weak_ptr<void> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
BOOST_TEST(!(wp < wp3 || wp3 < wp));
|
||||
}
|
||||
@ -364,6 +394,7 @@ void conversion_constructor()
|
||||
boost::weak_ptr<incomplete> wp(sp);
|
||||
|
||||
boost::weak_ptr<void> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 1);
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
@ -371,6 +402,7 @@ void conversion_constructor()
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
boost::weak_ptr<void> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
BOOST_TEST(!(wp < wp3 || wp3 < wp));
|
||||
}
|
||||
@ -380,6 +412,7 @@ void conversion_constructor()
|
||||
boost::weak_ptr<Z> wp(sp);
|
||||
|
||||
boost::weak_ptr<X> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 1);
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
@ -387,6 +420,7 @@ void conversion_constructor()
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
boost::weak_ptr<X> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
BOOST_TEST(!(wp < wp3 || wp3 < wp));
|
||||
}
|
||||
@ -396,6 +430,7 @@ void conversion_constructor()
|
||||
boost::weak_ptr<Z> wp(sp);
|
||||
|
||||
boost::weak_ptr<Y> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 1);
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
@ -403,6 +438,7 @@ void conversion_constructor()
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
boost::weak_ptr<Y> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
BOOST_TEST(!(wp < wp3 || wp3 < wp));
|
||||
}
|
||||
@ -412,6 +448,7 @@ void conversion_constructor()
|
||||
boost::weak_ptr<Z> wp(sp);
|
||||
|
||||
boost::weak_ptr<X> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 1);
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
@ -419,6 +456,7 @@ void conversion_constructor()
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
boost::weak_ptr<X> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
BOOST_TEST(!(wp < wp3 || wp3 < wp));
|
||||
}
|
||||
@ -428,6 +466,7 @@ void conversion_constructor()
|
||||
boost::weak_ptr<Z> wp(sp);
|
||||
|
||||
boost::weak_ptr<Y> wp2(wp);
|
||||
BOOST_TEST(wp2.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp2.use_count() == 1);
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
@ -435,6 +474,7 @@ void conversion_constructor()
|
||||
BOOST_TEST(!(wp < wp2 || wp2 < wp));
|
||||
|
||||
boost::weak_ptr<Y> wp3(wp);
|
||||
BOOST_TEST(wp3.use_count() == wp.use_count());
|
||||
BOOST_TEST(wp3.use_count() == 0);
|
||||
BOOST_TEST(!(wp < wp3 || wp3 < wp));
|
||||
}
|
||||
|
Reference in New Issue
Block a user