struct lazy_list_tag;
}} // namespace cds::container
+//@endcond
#ifdef CDSLIB_CONTAINER_DETAILS_MICHAEL_LIST_BASE_H
--- /dev/null
+/*
+ This file is a part of libcds - Concurrent Data Structures library
+
+ (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+ Source code repo: http://github.com/khizmax/libcds/
+ Download: http://sourceforge.net/projects/libcds/files/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef CDSLIB_CONTAINER_DETAILS_MAKE_SPLIT_LIST_SET_ITERABLE_LIST_H
+#define CDSLIB_CONTAINER_DETAILS_MAKE_SPLIT_LIST_SET_ITERABLE_LIST_H
+
+//@cond
+namespace cds { namespace container { namespace details {
+
+ template <typename GC, typename T, typename Traits>
+ struct make_split_list_set< GC, T, iterable_list_tag, Traits >
+ {
+ typedef GC gc;
+ typedef T value_type;
+ typedef Traits original_traits;
+
+ typedef typename cds::opt::select_default<
+ typename original_traits::ordered_list_traits,
+ cds::container::iterable_list::traits
+ >::type original_ordered_list_traits;
+
+ struct node_type: public cds::intrusive::split_list::node< void >
+ {
+ value_type m_Value;
+
+ template <typename Q>
+ explicit node_type( Q const& v )
+ : m_Value(v)
+ {}
+ template <typename Q, typename... Args>
+ explicit node_type( Q&& q, Args&&... args )
+ : m_Value( std::forward<Q>(q), std::forward<Args>(args)... )
+ {}
+
+ node_type() = delete;
+ };
+
+ typedef typename cds::opt::select_default<
+ typename original_traits::ordered_list_traits,
+ typename original_traits::allocator,
+ typename cds::opt::select_default<
+ typename original_traits::ordered_list_traits::allocator,
+ typename original_traits::allocator
+ >::type
+ >::type node_allocator_;
+
+ typedef typename node_allocator_::template rebind<node_type>::other node_allocator_type;
+
+ typedef cds::details::Allocator< node_type, node_allocator_type > cxx_node_allocator;
+ struct node_deallocator
+ {
+ void operator ()( node_type * pNode )
+ {
+ cxx_node_allocator().Delete( pNode );
+ }
+ };
+
+ typedef typename opt::details::make_comparator< value_type, original_ordered_list_traits >::type key_comparator;
+
+ typedef typename original_traits::key_accessor key_accessor;
+
+ struct value_accessor
+ {
+ typename key_accessor::key_type const& operator()( node_type const& node ) const
+ {
+ return key_accessor()(node.m_Value);
+ }
+ };
+
+ template <typename Predicate>
+ struct predicate_wrapper {
+ typedef cds::details::predicate_wrapper< node_type, Predicate, value_accessor > type;
+ };
+
+ struct ordered_list_traits: public original_ordered_list_traits
+ {
+ typedef cds::atomicity::empty_item_counter item_counter;
+ typedef node_deallocator disposer;
+ typedef cds::details::compare_wrapper< node_type, key_comparator, value_accessor > compare;
+ };
+
+ struct traits: public original_traits
+ {
+ struct hash: public original_traits::hash
+ {
+ typedef typename original_traits::hash base_class;
+
+ size_t operator()(node_type const& v ) const
+ {
+ return base_class::operator()( key_accessor()( v.m_Value ) );
+ }
+ template <typename Q>
+ size_t operator()( Q const& k ) const
+ {
+ return base_class::operator()( k );
+ }
+ };
+ };
+
+ class ordered_list: public cds::intrusive::IterableList< gc, node_type, ordered_list_traits >
+ {};
+
+ typedef cds::intrusive::SplitListSet< gc, ordered_list, traits > type;
+ };
+
+}}} // namespace cds::container::details
+//@endcond
+
+#endif // #ifndef CDSLIB_CONTAINER_DETAILS_MAKE_SPLIT_LIST_SET_ITERABLE_LIST_H
#include <cds/intrusive/split_list.h>
#include <cds/container/details/make_split_list_set.h>
+#include <cds/container/details/guarded_ptr_cast.h>
namespace cds { namespace container {
protected:
//@cond
- typedef typename maker::cxx_node_allocator cxx_node_allocator;
- typedef typename maker::node_type node_type;
+ typedef typename maker::cxx_node_allocator cxx_node_allocator;
+ typedef typename maker::node_type node_type;
//@endcond
public:
/// Guarded pointer
typedef typename gc::template guarded_ptr< node_type, value_type, details::guarded_ptr_cast_set<node_type, value_type> > guarded_ptr;
- protected:
- //@cond
- template <typename Q>
- static node_type * alloc_node(Q const& v )
- {
- return cxx_node_allocator().New( v );
- }
-
- template <typename... Args>
- static node_type * alloc_node( Args&&... args )
- {
- return cxx_node_allocator().MoveNew( std::forward<Args>( args )... );
- }
-
- static void free_node( node_type * pNode )
- {
- cxx_node_allocator().Delete( pNode );
- }
-
- template <typename Q, typename Func>
- bool find_( Q& val, Func f )
- {
- return base_class::find( val, [&f]( node_type& item, Q& val ) { f(item.m_Value, val) ; } );
- }
-
- template <typename Q, typename Less, typename Func>
- bool find_with_( Q& val, Less pred, Func f )
- {
- CDS_UNUSED( pred );
- return base_class::find_with( val, typename maker::template predicate_wrapper<Less>::type(),
- [&f]( node_type& item, Q& val ) { f(item.m_Value, val) ; } );
- }
-
- struct node_disposer {
- void operator()( node_type * pNode )
- {
- free_node( pNode );
- }
- };
- typedef std::unique_ptr< node_type, node_disposer > scoped_node_ptr;
-
- bool insert_node( node_type * pNode )
- {
- assert( pNode != nullptr );
- scoped_node_ptr p(pNode);
-
- if ( base_class::insert( *pNode )) {
- p.release();
- return true;
- }
- return false;
- }
-
- //@endcond
-
protected:
//@cond
template <bool IsConst>
return insert_node( alloc_node( std::forward<Args>(args)...));
}
+ /// Inserts or updates the node (only for \p IterableList -based set)
+ /**
+ The operation performs inserting or changing data with lock-free manner.
+
+ If the item \p val is not found in the set, then \p val is inserted iff \p bAllowInsert is \p true.
+ Otherwise, the current element is changed to \p val, the old element will be retired later.
+
+ Returns std::pair<bool, bool> where \p first is \p true if operation is successful,
+ \p second is \p true if \p val has been added or \p false if the item with that key
+ already in the set.
+ */
+ template <typename Q>
+#ifdef CDS_DOXYGEN_INVOKED
+ std::pair<bool, bool>
+#else
+ typename std::enable_if<
+ std::is_same< Q, Q>::value && is_iterable_list< ordered_list >::value,
+ std::pair<bool, bool>
+ >::type
+#endif
+ upsert( Q&& val, bool bAllowInsert = true )
+ {
+ scoped_node_ptr pNode( alloc_node( val ) );
+
+ auto bRet = base_class::upsert( *pNode, bAllowInsert );
+
+ if ( bRet.first )
+ pNode.release();
+ return bRet;
+ }
+
/// Updates the node
/**
The operation performs inserting or changing data with lock-free manner.
If \p key is not found in the set, then \p key is inserted iff \p bAllowInsert is \p true.
Otherwise, the functor \p func is called with item found.
- The functor signature is:
+ The functor \p func signature depends of ordered list:
+
+ <b>for \p MichaelList, \p LazyList</b>
\code
- struct my_functor {
- void operator()( bool bNew, value_type& item, const Q& val );
+ struct functor {
+ void operator()( bool bNew, value_type& item, Q const& val );
};
\endcode
with arguments:
The functor may change non-key fields of the \p item.
+ <b>for \p IterableList</b>
+ \code
+ void func( value_type& val, value_type * old );
+ \endcode
+ where
+ - \p val - a new data constructed from \p key
+ - \p old - old value that will be retired. If new item has been inserted then \p old is \p nullptr.
+
Returns <tt> std::pair<bool, bool> </tt> where \p first is true if operation is successful,
\p second is true if new item has been added or \p false if the item with \p key
- already is in the map.
+ already is in the set.
- @warning For \ref cds_intrusive_MichaelList_hp "MichaelList" as the bucket see \ref cds_intrusive_item_creating "insert item troubleshooting".
+ @warning For \ref cds_intrusive_MichaelList_hp "MichaelList" and \ref cds_nonintrusive_IterableList_gc "IterableList"
+ as the bucket see \ref cds_intrusive_item_creating "insert item troubleshooting".
\ref cds_intrusive_LazyList_hp "LazyList" provides exclusive access to inserted item and does not require any node-level
synchronization.
*/
template <typename Q, typename Func>
- std::pair<bool, bool> update( Q const& val, Func func, bool bAllowInsert = true )
+#ifdef CDS_DOXYGEN_INVOKED
+ std::pair<bool, bool>
+#else
+ typename std::enable_if<
+ std::is_same<Q, Q>::value && !is_iterable_list<ordered_list>::value,
+ std::pair<bool, bool>
+ >::type
+#endif
+ update( Q const& val, Func func, bool bAllowInsert = true )
{
scoped_node_ptr pNode( alloc_node( val ));
- std::pair<bool, bool> bRet = base_class::update( *pNode,
+ auto bRet = base_class::update( *pNode,
[&func, &val]( bool bNew, node_type& item, node_type const& /*val*/ ) {
func( bNew, item.m_Value, val );
}, bAllowInsert );
pNode.release();
return bRet;
}
+ //@cond
+ template <typename Q, typename Func>
+ typename std::enable_if<
+ std::is_same<Q, Q>::value && is_iterable_list<ordered_list>::value,
+ std::pair<bool, bool>
+ >::type
+ update( Q const& val, Func func, bool bAllowInsert = true )
+ {
+ scoped_node_ptr pNode( alloc_node( val ) );
+
+ auto bRet = base_class::update( *pNode,
+ [&func]( node_type& item, node_type* old ) {
+ func( item.m_Value, old ? &old->m_Value : nullptr );
+ }, bAllowInsert );
+
+ if ( bRet.first )
+ pNode.release();
+ return bRet;
+ }
+ //@endcond
+
//@cond
template <typename Q, typename Func>
CDS_DEPRECATED("ensure() is deprecated, use update()")
}
//@endcond
+ /// Finds \p key and returns iterator pointed to the item found (only for \p IterableList -based set)
+ /**
+ If \p key is not found the function returns \p end().
+
+ @note This function is supported only for the set based on \p IterableList
+ */
+ template <typename Q>
+#ifdef CDS_DOXYGEN_INVOKED
+ iterator
+#else
+ typename std::enable_if< std::is_same<Q,Q>::value && is_iterable_list< ordered_list >::value, iterator >::type
+#endif
+ find( Q& key )
+ {
+ return find_iterator_( key );
+ }
+ //@cond
+ template <typename Q>
+ typename std::enable_if< std::is_same<Q, Q>::value && is_iterable_list< ordered_list >::value, iterator >::type
+ find( Q const& key )
+ {
+ return find_iterator_( key );
+ }
+ //@endcond
+
+
/// Finds the key \p key using \p pred predicate for searching
/**
The function is an analog of \ref cds_nonintrusive_SplitListSet_find_func "find(Q&, Func)"
}
//@endcond
+ /// Finds \p key using \p pred predicate and returns iterator pointed to the item found (only for \p IterableList -based set)
+ /**
+ The function is an analog of \p find(Q&) but \p pred is used for key comparing.
+ \p Less functor has the interface like \p std::less.
+ \p pred must imply the same element order as the comparator used for building the set.
+
+ If \p key is not found the function returns \p end().
+
+ @note This function is supported only for the set based on \p IterableList
+ */
+ template <typename Q, typename Less>
+#ifdef CDS_DOXYGEN_INVOKED
+ iterator
+#else
+ typename std::enable_if< std::is_same<Q, Q>::value && is_iterable_list< ordered_list >::value, iterator >::type
+#endif
+ find_with( Q& key, Less pred )
+ {
+ return find_iterator_with_( key, pred );
+ }
+ //@cond
+ template <typename Q, typename Less>
+ typename std::enable_if< std::is_same<Q, Q>::value && is_iterable_list< ordered_list >::value, iterator >::type
+ find_with( Q const& key, Less pred )
+ {
+ return find_iterator_with_( key, pred );
+ }
+ //@endcond
+
/// Checks whether the set contains \p key
/**
The function searches the item with key equal to \p key
{
return base_class::contains( key );
}
- //@cond
- template <typename Q>
- CDS_DEPRECATED("deprecated, use contains()")
- bool find( Q const& key )
- {
- return contains( key );
- }
- //@endcond
/// Checks whether the map contains \p key using \p pred predicate for searching
/**
CDS_UNUSED( pred );
return base_class::contains( key, typename maker::template predicate_wrapper<Less>::type());
}
- //@cond
- template <typename Q, typename Less>
- CDS_DEPRECATED("deprecated, use contains()")
- bool find_with( Q const& key, Less pred )
- {
- return contains( key, pred );
- }
- //@endcond
/// Finds the key \p key and return the item found
/** \anchor cds_nonintrusive_SplitListSet_hp_get
using base_class::extract_;
using base_class::get_;
+ template <typename Q>
+ static node_type * alloc_node( Q const& v )
+ {
+ return cxx_node_allocator().New( v );
+ }
+
+ template <typename... Args>
+ static node_type * alloc_node( Args&&... args )
+ {
+ return cxx_node_allocator().MoveNew( std::forward<Args>( args )... );
+ }
+
+ static void free_node( node_type * pNode )
+ {
+ cxx_node_allocator().Delete( pNode );
+ }
+
+ template <typename Q, typename Func>
+ bool find_( Q& val, Func f )
+ {
+ return base_class::find( val, [&f]( node_type& item, Q& val ) { f( item.m_Value, val ); } );
+ }
+
+ template <typename Q>
+ typename std::enable_if< std::is_same<Q,Q>::value && is_iterable_list< ordered_list >::value, iterator>::type
+ find_iterator_( Q& val )
+ {
+ return iterator( base_class::find( val ) );
+ }
+
+ template <typename Q, typename Less, typename Func>
+ bool find_with_( Q& val, Less pred, Func f )
+ {
+ CDS_UNUSED( pred );
+ return base_class::find_with( val, typename maker::template predicate_wrapper<Less>::type(),
+ [&f]( node_type& item, Q& val ) { f( item.m_Value, val ); } );
+ }
+
+ template <typename Q, typename Less>
+ typename std::enable_if< std::is_same<Q, Q>::value && is_iterable_list< ordered_list >::value, iterator>::type
+ find_iterator_with_( Q& val, Less pred )
+ {
+ CDS_UNUSED( pred );
+ return iterator( base_class::find_with( val, typename maker::template predicate_wrapper<Less>::type() ));
+ }
+
+ struct node_disposer {
+ void operator()( node_type * pNode )
+ {
+ free_node( pNode );
+ }
+ };
+ typedef std::unique_ptr< node_type, node_disposer > scoped_node_ptr;
+
+ bool insert_node( node_type * pNode )
+ {
+ assert( pNode != nullptr );
+ scoped_node_ptr p( pNode );
+
+ if ( base_class::insert( *pNode ) ) {
+ p.release();
+ return true;
+ }
+ return false;
+ }
+
template <typename Q, typename Less>
guarded_ptr extract_with_( Q const& key, Less pred )
{
}
//@endcond
-
};
-
}} // namespace cds::container
#endif // #ifndef CDSLIB_CONTAINER_SPLIT_LIST_SET_H
<ClInclude Include="..\..\..\cds\container\details\make_skip_list_map.h" />\r
<ClInclude Include="..\..\..\cds\container\details\make_skip_list_set.h" />\r
<ClInclude Include="..\..\..\cds\container\details\make_split_list_set.h" />\r
+ <ClInclude Include="..\..\..\cds\container\details\make_split_list_set_iterable_list.h" />\r
<ClInclude Include="..\..\..\cds\container\details\make_split_list_set_lazy_list.h" />\r
<ClInclude Include="..\..\..\cds\container\details\make_split_list_set_michael_list.h" />\r
<ClInclude Include="..\..\..\cds\container\details\michael_list_base.h" />\r
<ClInclude Include="..\..\..\cds\container\details\make_split_list_set_michael_list.h">\r
<Filter>Header Files\cds\container\details</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\cds\container\details\make_split_list_set_iterable_list.h">\r
+ <Filter>Header Files\cds\container\details</Filter>\r
+ </ClInclude>\r
</ItemGroup>\r
</Project>
\ No newline at end of file
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<ClCompile Include="..\..\..\test\unit\set\skiplist_rcu_shb.cpp" />\r
<ClCompile Include="..\..\..\test\unit\set\skiplist_rcu_sht.cpp" />\r
+ <ClCompile Include="..\..\..\test\unit\set\split_iterable_dhp.cpp" />\r
+ <ClCompile Include="..\..\..\test\unit\set\split_iterable_hp.cpp" />\r
<ClCompile Include="..\..\..\test\unit\set\split_lazy_dhp.cpp">\r
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4503</DisableSpecificWarnings>\r
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='DebugVLD|Win32'">4503</DisableSpecificWarnings>\r
<ClInclude Include="..\..\..\test\unit\set\test_set_nogc.h" />\r
<ClInclude Include="..\..\..\test\unit\set\test_set_rcu.h" />\r
<ClInclude Include="..\..\..\test\unit\set\test_skiplist_rcu.h" />\r
+ <ClInclude Include="..\..\..\test\unit\set\test_split_iterable.h" />\r
+ <ClInclude Include="..\..\..\test\unit\set\test_split_iterable_hp.h" />\r
<ClInclude Include="..\..\..\test\unit\set\test_split_lazy_rcu.h" />\r
<ClInclude Include="..\..\..\test\unit\set\test_split_michael_rcu.h" />\r
</ItemGroup>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
<ClCompile Include="..\..\..\test\unit\set\michael_iterable_dhp.cpp">\r
<Filter>Source Files\MichaelSet</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\..\..\test\unit\set\split_iterable_hp.cpp">\r
+ <Filter>Source Files\SplitList</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\..\..\test\unit\set\split_iterable_dhp.cpp">\r
+ <Filter>Source Files\SplitList</Filter>\r
+ </ClCompile>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="..\..\..\test\unit\set\test_set.h">\r
<ClInclude Include="..\..\..\test\unit\set\test_set_data.h">\r
<Filter>Header Files</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\..\..\test\unit\set\test_split_iterable.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\..\..\test\unit\set\test_split_iterable_hp.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
</ItemGroup>\r
</Project>
\ No newline at end of file
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB32);$(GTEST_ROOT)/lib/x86;$(BOOST_PATH)/stage32/lib;$(BOOST_PATH)/stage/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
</ClCompile>\r
<Link>\r
<SubSystem>Console</SubSystem>\r
- <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <GenerateDebugInformation>DebugFastLink</GenerateDebugInformation>\r
<AdditionalLibraryDirectories>$(GTEST_LIB64);$(GTEST_ROOT)/lib/x64;$(BOOST_PATH)/stage64/lib;$(BOOST_PATH)/bin;%(AdditionalLibraryDirectories);$(OutDir)</AdditionalLibraryDirectories>\r
<AdditionalDependencies>gtestd.lib;stress-framework_d.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
</Link>\r
void TearDown()
{
cds::threading::Manager::detachThread();
- cds::gc::hp::GarbageCollector::Destruct();
+ cds::gc::dhp::GarbageCollector::Destruct();
}
};
skiplist_rcu_gpt.cpp
skiplist_rcu_shb.cpp
skiplist_rcu_sht.cpp
+ split_iterable_hp.cpp
+ split_iterable_dhp.cpp
split_lazy_hp.cpp
split_lazy_dhp.cpp
split_lazy_nogc.cpp
--- /dev/null
+/*
+ This file is a part of libcds - Concurrent Data Structures library
+
+ (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+ Source code repo: http://github.com/khizmax/libcds/
+ Download: http://sourceforge.net/projects/libcds/files/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "test_split_iterable_hp.h"
+
+#include <cds/container/iterable_list_dhp.h>
+#include <cds/container/split_list_set.h>
+#include <cds/intrusive/free_list.h>
+
+namespace {
+ namespace cc = cds::container;
+ typedef cds::gc::DHP gc_type;
+
+ class SplitListIterableSet_DHP : public cds_test::split_iterable_set_hp
+ {
+ protected:
+ typedef cds_test::split_iterable_set_hp base_class;
+
+ void SetUp()
+ {
+ struct set_traits: public cc::split_list::traits {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef cmp compare;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ cds::gc::dhp::GarbageCollector::Construct( 16, set_type::c_nHazardPtrCount );
+ cds::threading::Manager::attachThread();
+ }
+
+ void TearDown()
+ {
+ cds::threading::Manager::detachThread();
+ cds::gc::dhp::GarbageCollector::Destruct();
+ }
+ };
+
+ TEST_F( SplitListIterableSet_DHP, compare )
+ {
+ typedef cc::SplitListSet< gc_type, int_item,
+ typename cc::split_list::make_traits<
+ cc::split_list::ordered_list< cc::iterable_list_tag >
+ , cds::opt::hash< hash_int >
+ , cc::split_list::ordered_list_traits<
+ typename cc::iterable_list::make_traits<
+ cds::opt::compare< cmp >
+ >::type
+ >
+ >::type
+ > set_type;
+
+ set_type s( kSize, 2 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_DHP, less )
+ {
+ typedef cc::SplitListSet< gc_type, int_item,
+ typename cc::split_list::make_traits<
+ cc::split_list::ordered_list< cc::iterable_list_tag >
+ , cds::opt::hash< hash_int >
+ , cc::split_list::ordered_list_traits<
+ typename cc::iterable_list::make_traits<
+ cds::opt::less< less >
+ >::type
+ >
+ >::type
+ > set_type;
+
+ set_type s( kSize, 2 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_DHP, cmpmix )
+ {
+ typedef cc::SplitListSet< gc_type, int_item,
+ typename cc::split_list::make_traits<
+ cc::split_list::ordered_list< cc::iterable_list_tag >
+ , cds::opt::hash< hash_int >
+ , cc::split_list::ordered_list_traits<
+ typename cc::iterable_list::make_traits<
+ cds::opt::less< less >
+ , cds::opt::compare< cmp >
+ >::type
+ >
+ >::type
+ > set_type;
+
+ set_type s( kSize, 2 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_DHP, item_counting )
+ {
+ struct set_traits: public cc::split_list::traits
+ {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ typedef cds::atomicity::item_counter item_counter;
+
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::backoff::empty back_off;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ set_type s( kSize, 4 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_DHP, stat )
+ {
+ struct set_traits: public cc::split_list::traits
+ {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::split_list::stat<> stat;
+
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef base_class::less less;
+ typedef cds::opt::v::sequential_consistent memory_model;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ set_type s( kSize, 2 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_DHP, back_off )
+ {
+ struct set_traits: public cc::split_list::traits
+ {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cds::backoff::yield back_off;
+ typedef cds::opt::v::sequential_consistent memory_model;
+
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef cmp compare;
+ typedef cds::backoff::pause back_off;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ set_type s( kSize, 3 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_DHP, free_list )
+ {
+ struct set_traits: public cc::split_list::traits
+ {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cds::intrusive::FreeList free_list;
+
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef cmp compare;
+ typedef cds::backoff::pause back_off;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ set_type s( kSize, 3 );
+ test( s );
+ }
+
+ struct set_static_traits: public cc::split_list::traits
+ {
+ static bool const dynamic_bucket_table = false;
+ };
+
+ TEST_F( SplitListIterableSet_DHP, static_bucket_table )
+ {
+ struct set_traits: public set_static_traits
+ {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ typedef cds::atomicity::item_counter item_counter;
+
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef cmp compare;
+ typedef cds::backoff::pause back_off;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ set_type s( kSize, 4 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_DHP, static_bucket_table_free_list )
+ {
+ struct set_traits: public set_static_traits
+ {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cds::intrusive::FreeList free_list;
+
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef cmp compare;
+ typedef cds::backoff::pause back_off;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ set_type s( kSize, 4 );
+ test( s );
+ }
+
+} // namespace
--- /dev/null
+/*
+ This file is a part of libcds - Concurrent Data Structures library
+
+ (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+ Source code repo: http://github.com/khizmax/libcds/
+ Download: http://sourceforge.net/projects/libcds/files/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "test_split_iterable_hp.h"
+
+#include <cds/container/iterable_list_hp.h>
+#include <cds/container/split_list_set.h>
+#include <cds/intrusive/free_list.h>
+
+namespace {
+ namespace cc = cds::container;
+ typedef cds::gc::HP gc_type;
+
+ class SplitListIterableSet_HP : public cds_test::split_iterable_set_hp
+ {
+ protected:
+ typedef cds_test::split_iterable_set_hp base_class;
+
+ void SetUp()
+ {
+ struct set_traits: public cc::split_list::traits {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef cmp compare;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ // +3 - for guarded_ptr
+ cds::gc::hp::GarbageCollector::Construct( set_type::c_nHazardPtrCount + 3, 1, 16 );
+ cds::threading::Manager::attachThread();
+ }
+
+ void TearDown()
+ {
+ cds::threading::Manager::detachThread();
+ cds::gc::hp::GarbageCollector::Destruct( true );
+ }
+ };
+
+ TEST_F( SplitListIterableSet_HP, compare )
+ {
+ typedef cc::SplitListSet< gc_type, int_item,
+ typename cc::split_list::make_traits<
+ cc::split_list::ordered_list< cc::iterable_list_tag >
+ , cds::opt::hash< hash_int >
+ , cc::split_list::ordered_list_traits<
+ typename cc::iterable_list::make_traits<
+ cds::opt::compare< cmp >
+ >::type
+ >
+ >::type
+ > set_type;
+
+ set_type s( kSize, 2 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_HP, less )
+ {
+ typedef cc::SplitListSet< gc_type, int_item,
+ typename cc::split_list::make_traits<
+ cc::split_list::ordered_list< cc::iterable_list_tag >
+ , cds::opt::hash< hash_int >
+ , cc::split_list::ordered_list_traits<
+ typename cc::iterable_list::make_traits<
+ cds::opt::less< less >
+ >::type
+ >
+ >::type
+ > set_type;
+
+ set_type s( kSize, 2 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_HP, cmpmix )
+ {
+ typedef cc::SplitListSet< gc_type, int_item,
+ typename cc::split_list::make_traits<
+ cc::split_list::ordered_list< cc::iterable_list_tag >
+ , cds::opt::hash< hash_int >
+ , cc::split_list::ordered_list_traits<
+ typename cc::iterable_list::make_traits<
+ cds::opt::less< less >
+ , cds::opt::compare< cmp >
+ >::type
+ >
+ >::type
+ > set_type;
+
+ set_type s( kSize, 2 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_HP, item_counting )
+ {
+ struct set_traits: public cc::split_list::traits
+ {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ typedef cds::atomicity::item_counter item_counter;
+
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef cmp compare;
+ typedef base_class::less less;
+ typedef cds::backoff::empty back_off;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ set_type s( kSize, 4 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_HP, stat )
+ {
+ struct set_traits: public cc::split_list::traits
+ {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cc::split_list::stat<> stat;
+
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef base_class::less less;
+ typedef cds::opt::v::sequential_consistent memory_model;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ set_type s( kSize, 2 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_HP, back_off )
+ {
+ struct set_traits: public cc::split_list::traits
+ {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cds::backoff::yield back_off;
+ typedef cds::opt::v::sequential_consistent memory_model;
+
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef cmp compare;
+ typedef cds::backoff::pause back_off;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ set_type s( kSize, 3 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_HP, free_list )
+ {
+ struct set_traits: public cc::split_list::traits
+ {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cds::intrusive::FreeList free_list;
+
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef cmp compare;
+ typedef cds::backoff::pause back_off;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ set_type s( kSize, 3 );
+ test( s );
+ }
+
+ struct set_static_traits: public cc::split_list::traits
+ {
+ static bool const dynamic_bucket_table = false;
+ };
+
+ TEST_F( SplitListIterableSet_HP, static_bucket_table )
+ {
+ struct set_traits: public set_static_traits
+ {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ typedef cds::atomicity::item_counter item_counter;
+
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef cmp compare;
+ typedef cds::backoff::pause back_off;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ set_type s( kSize, 4 );
+ test( s );
+ }
+
+ TEST_F( SplitListIterableSet_HP, static_bucket_table_free_list )
+ {
+ struct set_traits: public set_static_traits
+ {
+ typedef cc::iterable_list_tag ordered_list;
+ typedef hash_int hash;
+ typedef cds::atomicity::item_counter item_counter;
+ typedef cds::intrusive::FreeList free_list;
+
+ struct ordered_list_traits: public cc::iterable_list::traits
+ {
+ typedef cmp compare;
+ typedef cds::backoff::pause back_off;
+ };
+ };
+ typedef cc::SplitListSet< gc_type, int_item, set_traits > set_type;
+
+ set_type s( kSize, 4 );
+ test( s );
+ }
+
+} // namespace
--- /dev/null
+/*
+ This file is a part of libcds - Concurrent Data Structures library
+
+ (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+ Source code repo: http://github.com/khizmax/libcds/
+ Download: http://sourceforge.net/projects/libcds/files/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef CDSUNIT_SET_TEST_SPLIT_ITERABLE_H
+#define CDSUNIT_SET_TEST_SPLIT_ITERABLE_H
+
+#include "test_set_data.h"
+
+#include <cds/opt/hash.h>
+
+namespace cds_test {
+
+ class split_iterable_set : public container_set_data
+ {
+ protected:
+ template <typename Set>
+ void test( Set& s )
+ {
+ // Precondition: set is empty
+ // Postcondition: set is empty
+
+ ASSERT_TRUE( s.empty() );
+ ASSERT_CONTAINER_SIZE( s, 0 );
+ size_t const nSetSize = kSize;
+
+ typedef typename Set::value_type value_type;
+
+ std::vector< value_type > data;
+ std::vector< size_t> indices;
+ data.reserve( kSize );
+ indices.reserve( kSize );
+ for ( size_t key = 0; key < kSize; ++key ) {
+ data.push_back( value_type( static_cast<int>(key) ) );
+ indices.push_back( key );
+ }
+ shuffle( indices.begin(), indices.end() );
+
+ // insert/find
+ for ( auto idx : indices ) {
+ auto& i = data[idx];
+
+ EXPECT_FALSE( s.contains( i.nKey ) );
+ EXPECT_FALSE( s.contains( i ) );
+ EXPECT_FALSE( s.contains( other_item( i.key() ), other_less()));
+ EXPECT_FALSE( s.find( i.nKey, []( value_type&, int ) {} ));
+ EXPECT_FALSE( s.find( i, []( value_type&, value_type const& ) {} ));
+ EXPECT_FALSE( s.find_with( other_item( i.key()), other_less(), []( value_type&, other_item const& ) {} ));
+
+ EXPECT_TRUE( s.find( i.nKey ) == s.end() );
+ EXPECT_TRUE( s.find( i ) == s.end() );
+ EXPECT_TRUE( s.find_with( other_item( i.key() ), other_less() ) == s.end() );
+
+ std::pair<bool, bool> updResult;
+
+ std::string str;
+ updResult = s.update( i.key(), []( value_type&, value_type* )
+ {
+ ASSERT_TRUE( false );
+ }, false );
+ EXPECT_FALSE( updResult.first );
+ EXPECT_FALSE( updResult.second );
+
+ switch ( idx % 10 ) {
+ case 0:
+ EXPECT_TRUE( s.insert( i ));
+ EXPECT_FALSE( s.insert( i ));
+ updResult = s.update( i, []( value_type& cur, value_type* old )
+ {
+ EXPECT_FALSE( old == nullptr );
+ EXPECT_EQ( cur.key(), old->key() );
+ }, false );
+ EXPECT_TRUE( updResult.first );
+ EXPECT_FALSE( updResult.second );
+ break;
+ case 1:
+ EXPECT_TRUE( s.insert( i.key() ));
+ EXPECT_FALSE( s.insert( i.key() ));
+ updResult = s.update( i.key(), []( value_type& cur, value_type* old )
+ {
+ EXPECT_FALSE( old == nullptr );
+ EXPECT_EQ( cur.key(), old->key() );
+ }, false );
+ EXPECT_TRUE( updResult.first );
+ EXPECT_FALSE( updResult.second );
+ break;
+ case 2:
+ EXPECT_TRUE( s.insert( i, []( value_type& v ) { ++v.nFindCount; } ));
+ EXPECT_FALSE( s.insert( i, []( value_type& v ) { ++v.nFindCount; } ));
+ EXPECT_TRUE( s.find( i.nKey, []( value_type const& v, int key )
+ {
+ EXPECT_EQ( v.key(), key );
+ EXPECT_EQ( v.nFindCount, 1u );
+ }));
+ break;
+ case 3:
+ EXPECT_TRUE( s.insert( i.key(), []( value_type& v ) { ++v.nFindCount; } ));
+ EXPECT_FALSE( s.insert( i.key(), []( value_type& v ) { ++v.nFindCount; } ));
+ EXPECT_TRUE( s.find( i.nKey, []( value_type const& v, int key )
+ {
+ EXPECT_EQ( v.key(), key );
+ EXPECT_EQ( v.nFindCount, 1u );
+ }));
+ break;
+ case 4:
+ updResult = s.update( i, []( value_type& v, value_type* old )
+ {
+ EXPECT_TRUE( old == nullptr );
+ ++v.nUpdateNewCount;
+ });
+ EXPECT_TRUE( updResult.first );
+ EXPECT_TRUE( updResult.second );
+
+ updResult = s.update( i, []( value_type& v, value_type* old )
+ {
+ EXPECT_FALSE( old == nullptr );
+ EXPECT_EQ( v.key(), old->key() );
+ v.nUpdateNewCount = old->nUpdateNewCount + 1;
+ }, false );
+ EXPECT_TRUE( updResult.first );
+ EXPECT_FALSE( updResult.second );
+
+ EXPECT_TRUE( s.find( i.nKey, []( value_type const& v, int key )
+ {
+ EXPECT_EQ( v.key(), key );
+ EXPECT_EQ( v.nUpdateNewCount, 2u );
+ }));
+ break;
+ case 5:
+ updResult = s.update( i.key(), [&i]( value_type& v, value_type* old )
+ {
+ EXPECT_TRUE( old == nullptr );
+ EXPECT_EQ( i.key(), v.key() );
+ ++v.nUpdateNewCount;
+ });
+ EXPECT_TRUE( updResult.first );
+ EXPECT_TRUE( updResult.second );
+
+ updResult = s.update( i.key(), []( value_type& v, value_type* old )
+ {
+ EXPECT_FALSE( old == nullptr );
+ EXPECT_EQ( v.key(), old->key() );
+ v.nUpdateNewCount = old->nUpdateNewCount + 1;
+ }, false );
+ EXPECT_TRUE( updResult.first );
+ EXPECT_FALSE( updResult.second );
+
+ EXPECT_TRUE( s.find( i, []( value_type const& v, value_type const& arg )
+ {
+ EXPECT_EQ( v.key(), arg.key() );
+ EXPECT_EQ( v.nUpdateNewCount, 2u );
+ }));
+ break;
+ case 6:
+ EXPECT_TRUE( s.emplace( i.key()));
+ EXPECT_TRUE( s.find( i, []( value_type const& v, value_type const& arg )
+ {
+ EXPECT_EQ( v.key(), arg.key() );
+ EXPECT_EQ( v.nVal, arg.nVal );
+ }));
+ break;
+ case 7:
+ str = "Hello!";
+ EXPECT_TRUE( s.emplace( i.key(), std::move( str )));
+ EXPECT_TRUE( str.empty());
+ EXPECT_TRUE( s.find( i, []( value_type const& v, value_type const& arg )
+ {
+ EXPECT_EQ( v.key(), arg.key() );
+ EXPECT_EQ( v.nVal, arg.nVal );
+ EXPECT_EQ( v.strVal, std::string( "Hello!" ));
+ } ) );
+ break;
+ case 8:
+ {
+ updResult = s.upsert( i.key(), false );
+ EXPECT_FALSE( updResult.first );
+ EXPECT_FALSE( updResult.second );
+ EXPECT_TRUE( s.find( i.key() ) == s.end() );
+
+ updResult = s.upsert( i.key() );
+ EXPECT_TRUE( updResult.first );
+ EXPECT_TRUE( updResult.second );
+
+ auto it = s.find( i.key() );
+ ASSERT_FALSE( it == s.end() );
+ EXPECT_EQ( it->key(), i.key() );
+
+ updResult = s.upsert( i.key(), false );
+ EXPECT_TRUE( updResult.first );
+ EXPECT_FALSE( updResult.second );
+
+ EXPECT_TRUE( s.find( i, []( value_type const& v, value_type const& arg )
+ {
+ EXPECT_EQ( v.key(), arg.key() );
+ } ));
+ }
+ break;
+ case 9:
+ {
+ updResult = s.upsert( i, false );
+ EXPECT_FALSE( updResult.first );
+ EXPECT_FALSE( updResult.second );
+ EXPECT_TRUE( s.find( i ) == s.end() );
+
+ updResult = s.upsert( i );
+ EXPECT_TRUE( updResult.first );
+ EXPECT_TRUE( updResult.second );
+
+ auto it = s.find( i );
+ ASSERT_FALSE( it == s.end() );
+ EXPECT_EQ( it->key(), i.key() );
+
+ updResult = s.upsert( i, false );
+ EXPECT_TRUE( updResult.first );
+ EXPECT_FALSE( updResult.second );
+
+ EXPECT_TRUE( s.find( i, []( value_type const& v, value_type const& arg )
+ {
+ EXPECT_EQ( v.key(), arg.key() );
+ } ));
+ }
+ break;
+
+ default:
+ // forgot anything?..
+ ASSERT_TRUE( false );
+ }
+
+ EXPECT_TRUE( s.contains( i.nKey ) );
+ EXPECT_TRUE( s.contains( i ) );
+ EXPECT_TRUE( s.contains( other_item( i.key() ), other_less() ) );
+ EXPECT_TRUE( s.find( i.nKey, []( value_type&, int ) {} ) );
+ EXPECT_TRUE( s.find( i, []( value_type&, value_type const& ) {} ) );
+ EXPECT_TRUE( s.find_with( other_item( i.key() ), other_less(), []( value_type&, other_item const& ) {} ) );
+
+ auto it = s.find( i );
+ ASSERT_FALSE( it == s.end() );
+ EXPECT_EQ( it->key(), i.key() );
+
+ it = s.find_with( other_item( i.key() ), other_less() );
+ ASSERT_FALSE( it == s.end() );
+ EXPECT_EQ( it->key(), i.key() );
+ }
+
+ EXPECT_FALSE( s.empty() );
+ EXPECT_CONTAINER_SIZE( s, nSetSize );
+
+ // erase
+ shuffle( indices.begin(), indices.end() );
+ for ( auto idx : indices ) {
+ auto& i = data[idx];
+
+ EXPECT_TRUE( s.contains( i.nKey ) );
+ EXPECT_TRUE( s.contains( i ) );
+ EXPECT_TRUE( s.contains( other_item( i.key() ), other_less() ) );
+ EXPECT_TRUE( s.find( i.nKey, []( value_type& v, int )
+ {
+ v.nFindCount = 1;
+ }));
+ EXPECT_TRUE( s.find( i, []( value_type& v, value_type const& )
+ {
+ EXPECT_EQ( ++v.nFindCount, 2u );
+ }));
+ EXPECT_TRUE( s.find_with( other_item( i.key() ), other_less(), []( value_type& v, other_item const& )
+ {
+ EXPECT_EQ( ++v.nFindCount, 3u );
+ }));
+
+ auto it = s.find( i );
+ ASSERT_FALSE( it == s.end() );
+ EXPECT_EQ( it->key(), i.key() );
+ it = s.find_with( other_item( i.key() ), other_less() );
+ ASSERT_FALSE( it == s.end() );
+ EXPECT_EQ( it->key(), i.key() );
+
+
+ int nKey = i.key() - 1;
+ switch ( idx % 6 ) {
+ case 0:
+ EXPECT_TRUE( s.erase( i.key()));
+ EXPECT_FALSE( s.erase( i.key()));
+ break;
+ case 1:
+ EXPECT_TRUE( s.erase( i ));
+ EXPECT_FALSE( s.erase( i ));
+ break;
+ case 2:
+ EXPECT_TRUE( s.erase_with( other_item( i.key()), other_less()));
+ EXPECT_FALSE( s.erase_with( other_item( i.key() ), other_less() ) );
+ break;
+ case 3:
+ EXPECT_TRUE( s.erase( i.key(), [&nKey]( value_type const& v )
+ {
+ nKey = v.key();
+ } ));
+ EXPECT_EQ( i.key(), nKey );
+
+ nKey = i.key() - 1;
+ EXPECT_FALSE( s.erase( i.key(), [&nKey]( value_type const& v )
+ {
+ nKey = v.key();
+ } ));
+ EXPECT_EQ( i.key(), nKey + 1 );
+ break;
+ case 4:
+ EXPECT_TRUE( s.erase( i, [&nKey]( value_type const& v )
+ {
+ nKey = v.key();
+ } ));
+ EXPECT_EQ( i.key(), nKey );
+
+ nKey = i.key() - 1;
+ EXPECT_FALSE( s.erase( i, [&nKey]( value_type const& v )
+ {
+ nKey = v.key();
+ } ));
+ EXPECT_EQ( i.key(), nKey + 1 );
+ break;
+ case 5:
+ EXPECT_TRUE( s.erase_with( other_item( i.key()), other_less(), [&nKey]( value_type const& v )
+ {
+ nKey = v.key();
+ } ));
+ EXPECT_EQ( i.key(), nKey );
+
+ nKey = i.key() - 1;
+ EXPECT_FALSE( s.erase_with( other_item( i.key()), other_less(), [&nKey]( value_type const& v )
+ {
+ nKey = v.key();
+ } ));
+ EXPECT_EQ( i.key(), nKey + 1 );
+ break;
+ }
+
+ EXPECT_FALSE( s.contains( i.nKey ) );
+ EXPECT_FALSE( s.contains( i ) );
+ EXPECT_FALSE( s.contains( other_item( i.key() ), other_less()));
+ EXPECT_FALSE( s.find( i.nKey, []( value_type&, int ) {} ));
+ EXPECT_FALSE( s.find( i, []( value_type&, value_type const& ) {} ));
+ EXPECT_FALSE( s.find_with( other_item( i.key()), other_less(), []( value_type&, other_item const& ) {} ));
+
+ EXPECT_TRUE( s.find( i.nKey ) == s.end() );
+ EXPECT_TRUE( s.find( i ) == s.end() );
+ EXPECT_TRUE( s.find_with( other_item( i.key() ), other_less() ) == s.end() );
+ }
+ EXPECT_TRUE( s.empty() );
+ EXPECT_CONTAINER_SIZE( s, 0u );
+
+ // clear
+ for ( auto& i : data ) {
+ EXPECT_TRUE( s.insert( i ) );
+ }
+
+ EXPECT_FALSE( s.empty() );
+ EXPECT_CONTAINER_SIZE( s, nSetSize );
+
+ s.clear();
+
+ EXPECT_TRUE( s.empty() );
+ EXPECT_CONTAINER_SIZE( s, 0u );
+
+ EXPECT_TRUE( s.begin() == s.end() );
+ EXPECT_TRUE( s.cbegin() == s.cend() );
+ }
+ };
+
+} // namespace cds_test
+
+#endif // CDSUNIT_SET_TEST_SPLIT_ITERABLE_H
--- /dev/null
+/*
+ This file is a part of libcds - Concurrent Data Structures library
+
+ (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+
+ Source code repo: http://github.com/khizmax/libcds/
+ Download: http://sourceforge.net/projects/libcds/files/
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef CDSUNIT_SET_TEST_SPLIT_ITERABLE_HP_H
+#define CDSUNIT_SET_TEST_SPLIT_ITERABLE_HP_H
+
+#include "test_split_iterable.h"
+
+namespace cds_test {
+
+ class split_iterable_set_hp: public split_iterable_set
+ {
+ typedef split_iterable_set base_class;
+
+ protected:
+ template <typename Set>
+ void test( Set& s )
+ {
+ // Precondition: set is empty
+ // Postcondition: set is empty
+
+ ASSERT_TRUE( s.empty() );
+ ASSERT_CONTAINER_SIZE( s, 0 );
+
+ base_class::test( s );
+
+ typedef typename Set::value_type value_type;
+
+ size_t const nSetSize = kSize;
+ std::vector< value_type > data;
+ std::vector< size_t> indices;
+ data.reserve( kSize );
+ indices.reserve( kSize );
+ for ( size_t key = 0; key < kSize; ++key ) {
+ data.push_back( value_type( static_cast<int>(key) ) );
+ indices.push_back( key );
+ }
+ shuffle( indices.begin(), indices.end() );
+
+ for ( auto& i : data ) {
+ EXPECT_TRUE( s.insert( i ) );
+ }
+ EXPECT_FALSE( s.empty() );
+ EXPECT_CONTAINER_SIZE( s, nSetSize );
+
+ // iterator test
+ for ( auto it = s.begin(); it != s.end(); ++it ) {
+ it->nFindCount = it->key() * 3;
+ }
+
+ for ( auto it = s.cbegin(); it != s.cend(); ++it ) {
+ EXPECT_EQ( it->nFindCount, static_cast<size_t>( it->key() * 3 ));
+ }
+
+ typedef typename Set::guarded_ptr guarded_ptr;
+ guarded_ptr gp;
+
+ // get()
+ for ( auto idx : indices ) {
+ auto& i = data[idx];
+
+ EXPECT_TRUE( !gp );
+ switch ( idx % 3 ) {
+ case 0:
+ gp = s.get( i.key() );
+ ASSERT_FALSE( !gp );
+ break;
+ case 1:
+ gp = s.get( i );
+ ASSERT_FALSE( !gp );
+ break;
+ case 2:
+ gp = s.get_with( other_item( i.key() ), other_less() );
+ ASSERT_FALSE( !gp );
+ }
+ EXPECT_EQ( gp->key(), i.key() );
+ EXPECT_EQ( gp->nFindCount, static_cast<size_t>( i.key() * 3 ));
+ gp->nFindCount *= 2;
+
+ gp.release();
+ }
+
+ // extract()
+ for ( auto idx : indices ) {
+ auto& i = data[idx];
+
+ EXPECT_TRUE( !gp );
+ switch ( idx % 3 ) {
+ case 0:
+ gp = s.extract( i.key() );
+ ASSERT_FALSE( !gp );
+ break;
+ case 1:
+ gp = s.extract( i );
+ ASSERT_FALSE( !gp );
+ break;
+ case 2:
+ gp = s.extract_with( other_item( i.key() ), other_less() );
+ ASSERT_FALSE( !gp );
+ break;
+ }
+ EXPECT_EQ( gp->key(), i.key() );
+ EXPECT_EQ( gp->nFindCount, static_cast<size_t>( i.key() * 6 ));
+
+ switch ( idx % 3 ) {
+ case 0:
+ gp = s.extract( i.key() );
+ break;
+ case 1:
+ gp = s.extract( i );
+ break;
+ case 2:
+ gp = s.extract_with( other_item( i.key() ), other_less() );
+ break;
+ }
+ EXPECT_TRUE( !gp );
+ }
+
+ EXPECT_TRUE( s.empty() );
+ EXPECT_CONTAINER_SIZE( s, 0 );
+ }
+
+ };
+} // namespace cds_test
+
+#endif // CDSUNIT_SET_TEST_SPLIT_ITERABLE_HP_H