//$$CDS-header$$
+#ifndef CDSTEST_HDR_INTRUSIVE_SET_H
+#define CDSTEST_HDR_INTRUSIVE_SET_H
+
#include "cppunit/cppunit_proxy.h"
#include "size_check.h"
{}
base_int_item(const base_int_item& v )
- : stat()
+ : Node()
+ , stat()
, nKey( v.nKey )
, nVal( v.nVal )
{}
struct find_functor
{
template <typename Item, typename T>
- void operator()( Item& item, T& val )
+ void operator()( Item& item, T& /*val*/ )
{
++item.nFindCount;
}
struct ensure_functor
{
template <typename Item>
- void operator()( bool bNew, Item& item, Item& val )
+ void operator()( bool bNew, Item& item, Item& /*val*/ )
{
if ( bNew )
++item.nEnsureNewCount;
guarded_ptr gp;
for ( size_t i = 0; i < nLimit; i += 2 ) {
int nKey = arr[i];
- CPPUNIT_ASSERT( s.get( gp, nKey ));
+ gp = s.get( nKey );
+ CPPUNIT_ASSERT( gp );
CPPUNIT_ASSERT( !gp.empty());
CPPUNIT_CHECK( gp->nKey == nKey );
CPPUNIT_CHECK( gp->nVal == nKey * 2 );
+ gp.release();
- CPPUNIT_ASSERT( s.extract( gp, nKey ));
+ gp = s.extract( nKey );
+ CPPUNIT_ASSERT( gp );
CPPUNIT_ASSERT( !gp.empty() );
CPPUNIT_CHECK( gp->nKey == nKey );
CPPUNIT_CHECK( gp->nVal == nKey * 2 );
gp.release();
- CPPUNIT_CHECK( !s.get( gp, nKey ));
+ gp = s.get( nKey );
+ CPPUNIT_CHECK( !gp );
CPPUNIT_ASSERT( gp.empty() );
- CPPUNIT_CHECK( !s.extract( gp, nKey ));
+ CPPUNIT_CHECK( !s.extract( nKey ));
CPPUNIT_CHECK( gp.empty() );
nKey = arr[i+1];
- CPPUNIT_ASSERT( s.get_with( gp, nKey, less<value_type>() ));
+ gp = s.get_with( nKey, less<value_type>() );
+ CPPUNIT_ASSERT( gp );
CPPUNIT_CHECK( gp->nKey == nKey );
CPPUNIT_CHECK( gp->nVal == nKey * 2 );
+ gp.release();
- CPPUNIT_ASSERT( s.extract_with( gp, nKey, less<value_type>() ));
+ gp = s.extract_with( nKey, less<value_type>() );
+ CPPUNIT_ASSERT( gp );
CPPUNIT_ASSERT( !gp.empty() );
CPPUNIT_CHECK( gp->nKey == nKey );
CPPUNIT_CHECK( gp->nVal == nKey * 2 );
gp.release();
- CPPUNIT_CHECK( !s.get_with( gp, nKey, less<value_type>() ));
+ gp = s.get_with( nKey, less<value_type>() );
+ CPPUNIT_CHECK( !gp );
CPPUNIT_CHECK( gp.empty());
- CPPUNIT_CHECK( !s.extract_with( gp, nKey, less<value_type>() ));
+ CPPUNIT_CHECK( !s.extract_with( nKey, less<value_type>() ));
CPPUNIT_CHECK( gp.empty());
}
CPPUNIT_CHECK( s.empty() );
CPPUNIT_CHECK( check_size( s, 0 ));
- CPPUNIT_CHECK( !s.get( gp, 100 ));
- CPPUNIT_CHECK( !s.extract( gp, 100 ));
+ CPPUNIT_CHECK( !s.get( 100 ));
+ CPPUNIT_CHECK( !s.extract( 100 ));
CPPUNIT_CHECK( gp.empty() );
Set::gc::force_dispose();
CPPUNIT_CHECK( pVal->nKey == nKey );
CPPUNIT_CHECK( pVal->nVal == nKey * 2 );
- CPPUNIT_ASSERT( s.extract( ep, nKey ));
+ ep = s.extract( nKey );
+ CPPUNIT_ASSERT( ep );
CPPUNIT_ASSERT( !ep.empty() );
CPPUNIT_CHECK( pVal->nKey == ep->nKey );
CPPUNIT_CHECK( pVal->nVal == (*ep).nVal );
{
rcu_lock l;
CPPUNIT_CHECK( s.get( nKey ) == nullptr );
- CPPUNIT_CHECK( !s.extract( ep, nKey ));
+ CPPUNIT_CHECK( !s.extract( nKey ));
CPPUNIT_CHECK( ep.empty() );
nKey = arr[i+1];
CPPUNIT_CHECK( pVal->nKey == nKey );
CPPUNIT_CHECK( pVal->nVal == nKey * 2 );
- CPPUNIT_ASSERT( s.extract_with( ep, nKey, less<value_type>() ));
+ ep = s.extract_with( nKey, less<value_type>() );
+ CPPUNIT_ASSERT( ep );
CPPUNIT_ASSERT( !ep.empty() );
CPPUNIT_CHECK( pVal->nKey == ep->nKey );
CPPUNIT_CHECK( pVal->nVal == (*ep).nVal );
{
rcu_lock l;
CPPUNIT_CHECK( s.get_with( nKey, less<value_type>() ) == nullptr );
- CPPUNIT_CHECK( !s.extract_with( ep, nKey, less<value_type>() ));
+ ep = s.extract_with( nKey, less<value_type>() );
+ CPPUNIT_CHECK( !ep );
CPPUNIT_CHECK( ep.empty() );
}
}
{
rcu_lock l;
CPPUNIT_CHECK( s.get( 100 ) == nullptr );
- CPPUNIT_CHECK( !s.extract( ep, 100 ));
+ ep = s.extract( 100 );
+ CPPUNIT_CHECK( !ep );
CPPUNIT_CHECK( ep.empty() );
}
};
} // namespace set
+
+#endif // #ifndef CDSTEST_HDR_INTRUSIVE_SET_H
\ No newline at end of file