Ticket #3004: patch.txt

File patch.txt, 3.5 KB (added by Marvin.Sielenkemper@…, 13 years ago)

Fixes for tests and lib.

Line 
1Index: D:/boost/boost.build/libs/serialization/test/Jamfile.v2
2===================================================================
3--- D:/boost/boost.build/libs/serialization/test/Jamfile.v2 (revision 138381)
4+++ D:/boost/boost.build/libs/serialization/test/Jamfile.v2 (revision 138382)
5@@ -25,6 +25,14 @@
6
7 BOOST_ARCHIVE_LIST = [ modules.peek : BOOST_ARCHIVE_LIST ] ;
8
9+lib dll_base_lib : dll_base.cpp : <link>shared ;
10+lib dll_derived2_lib
11+ : dll_derived2.cpp
12+ dll_base_lib
13+ /boost/serialization//boost_serialization
14+ : <link>shared
15+ ;
16+
17 test-suite "serialization" :
18 [ test-bsl-run_files test_array : A ]
19 [ test-bsl-run_files test_binary ]
20@@ -34,6 +42,7 @@
21 [ test-bsl-run_files test_delete_pointer ]
22 [ test-bsl-run_files test_deque : A ]
23 # [ test-bsl-run_files test_derived ]
24+ [ test-bsl-run test_dll_exported : : : dll_base_lib dll_derived2_lib ]
25 [ test-bsl-run_files test_derived_class : A ]
26 [ test-bsl-run_files test_derived_class_ptr : A ]
27 [ test-bsl-run_files test_diamond ]
28Index: D:/boost/boost.build/libs/serialization/src/void_cast.cpp
29===================================================================
30--- D:/boost/boost.build/libs/serialization/src/void_cast.cpp (revision 138381)
31+++ D:/boost/boost.build/libs/serialization/src/void_cast.cpp (revision 138382)
32@@ -40,6 +40,12 @@
33 }
34 };
35
36+struct void_caster_weak_equal : std::binary_function<const void_caster *, const void_caster *, bool> {
37+ bool operator()(const void_caster * lhs, const void_caster * rhs) const {
38+ return *lhs->m_base == *rhs->m_base && *lhs->m_derived == *rhs->m_derived;
39+ }
40+};
41+
42 typedef std::set<const void_caster *, void_caster_compare> set_type;
43 typedef boost::serialization::singleton<set_type> void_caster_registry;
44
45@@ -218,8 +224,20 @@
46 s.erase(it);
47 }
48
49+set_type::const_iterator
50+find(
51+ set_type const & s,
52+ void_caster_argument const & ca)
53+{
54+ set_type::const_iterator const it(s.find(&ca));
55+ if (s.end() != it)
56+ return it;
57+ else
58+ return std::find_if(
59+ s.begin(), s.end(),
60+ std::bind1st(void_caster_weak_equal(), &ca));
61+}
62
63-
64 } // namespace void_cast_detail
65
66 // Given a void *, assume that it really points to an instance of one type
67@@ -242,7 +260,7 @@
68 void_cast_detail::void_caster_argument ca(& derived, & base);
69
70 void_cast_detail::set_type::const_iterator it;
71- it = s.find(& ca);
72+ it = void_cast_detail::find(s, ca);
73 if (s.end() != it)
74 return (*it)->upcast(t);
75
76@@ -265,7 +283,7 @@
77 void_cast_detail::void_caster_argument ca(& derived, & base);
78
79 void_cast_detail::set_type::const_iterator it;
80- it = s.find(&ca);
81+ it = void_cast_detail::find(s, ca);
82 if (s.end() != it)
83 return(*it)->downcast(t);
84
85Index: D:/boost/boost.build/libs/serialization/util/test.jam
86===================================================================
87--- D:/boost/boost.build/libs/serialization/util/test.jam (revision 138381)
88+++ D:/boost/boost.build/libs/serialization/util/test.jam (revision 138382)
89@@ -113,13 +113,13 @@
90 return $(tests) ;
91 }
92
93-rule test-bsl-run ( test-name : sources * : requirements * )
94+rule test-bsl-run ( test-name : sources * : requirements * : libs * )
95 {
96 local tests ;
97 tests += [
98 run-invoke $(test-name)
99 : # sources
100- $(test-name).cpp $(sources).cpp
101+ $(test-name).cpp $(sources).cpp $(libs)
102 :
103 $(requirements)
104 ] ;