16 #include "CLHEP/Utility/memory.h" 23 using namespace CLHEP;
28 #if defined(_MSC_VER) && (_MSC_VER >= 1310) 29 # pragma warning (disable : 4675) // suppress ADL warning 60 assert(pi?
false:
true);
62 assert(pi.
get() == 0);
68 assert(pv?
false:
true);
70 assert(pv.
get() == 0);
76 assert(px?
false:
true);
78 assert(px.
get() == 0);
104 X & operator= (
X const &);
107 long X::instances = 0;
129 Y & operator= (
Y const &);
132 long Y::instances = 0;
140 assert(pt?
false:
true);
142 assert(pt.
get() == 0);
152 pc0_test(static_cast<int const*>(0));
153 pc0_test(static_cast<int volatile*>(0));
154 pc0_test(static_cast<int const volatile*>(0));
158 assert(pi?
false:
true);
160 assert(pi.
get() == 0);
167 assert(pi?
false:
true);
169 assert(pi.
get() == 0);
176 assert(pv?
false:
true);
178 assert(pv.
get() == 0);
185 assert(pv?
false:
true);
187 assert(pv.
get() == 0);
194 pc0_test(static_cast<X volatile*>(0));
195 pc0_test(static_cast<X const volatile*>(0));
199 assert(px?
false:
true);
201 assert(px.
get() == 0);
208 assert(px?
false:
true);
210 assert(px.
get() == 0);
217 assert(px?
false:
true);
219 assert(px.
get() == 0);
226 assert(pv?
false:
true);
228 assert(pv.
get() == 0);
235 assert(pv?
false:
true);
237 assert(pv.
get() == 0);
243 int * p =
new int(7);
245 assert(pi?
true:
false);
247 assert(pi.
get() == p);
254 int * p =
new int(7);
256 assert(pi?
true:
false);
258 assert(pi.
get() == p);
265 int * p =
new int(7);
267 assert(pv?
true:
false);
269 assert(pv.
get() == p);
275 int * p =
new int(7);
277 assert(pv?
true:
false);
279 assert(pv.
get() == p);
284 assert(X::instances == 0);
289 assert(px?
true:
false);
291 assert(px.
get() == p);
294 assert(X::instances == 1);
297 assert(X::instances == 0);
302 assert(px?
true:
false);
304 assert(px.
get() == p);
307 assert(X::instances == 1);
310 assert(X::instances == 0);
315 assert(pv?
true:
false);
317 assert(pv.
get() == p);
320 assert(X::instances == 1);
323 assert(X::instances == 0);
328 assert(pv?
true:
false);
330 assert(pv.
get() == p);
333 assert(X::instances == 1);
336 assert(X::instances == 0);
337 assert(Y::instances == 0);
342 assert(px?
true:
false);
344 assert(px.
get() == p);
347 assert(X::instances == 1);
348 assert(Y::instances == 1);
351 assert(X::instances == 0);
352 assert(Y::instances == 0);
357 assert(px?
true:
false);
359 assert(px.
get() == p);
362 assert(X::instances == 1);
363 assert(Y::instances == 1);
366 assert(X::instances == 0);
367 assert(Y::instances == 0);
400 assert(pi?
false:
true);
402 assert(pi.
get() == 0);
409 assert(pv?
false:
true);
411 assert(pv.
get() == 0);
418 assert(pv?
false:
true);
420 assert(pv.
get() == 0);
427 assert(px?
false:
true);
429 assert(px.
get() == 0);
436 assert(pv?
false:
true);
438 assert(pv.
get() == 0);
445 assert(pv?
false:
true);
447 assert(pv.
get() == 0);
456 assert(pi?
true:
false);
458 assert(pi.
get() == &m);
467 assert(pi?
true:
false);
469 assert(pi.
get() == &m);
478 assert(pv?
true:
false);
480 assert(pv.
get() == &m);
489 assert(pv?
true:
false);
491 assert(pv.
get() == &m);
507 assert(pi2?
false:
true);
509 assert(pi2.
get() == 0);
514 assert(pi3?
false:
true);
516 assert(pi3.get() == 0);
517 assert(pi3.use_count() == pi.
use_count());
521 assert(pi4?
false:
true);
523 assert(pi4.get() == 0);
524 assert(pi4.use_count() == pi3.use_count());
532 assert(pv2?
false:
true);
534 assert(pv2.
get() == 0);
543 assert(px2?
false:
true);
545 assert(px2.
get() == 0);
550 assert(px3?
false:
true);
552 assert(px3.get() == 0);
553 assert(px3.use_count() == px.
use_count());
561 assert(pi2?
false:
true);
563 assert(pi2.
get() == 0);
567 assert(!(pi < pi2 || pi2 < pi));
571 assert(pi3?
false:
true);
573 assert(pi3.
get() == 0);
577 assert(!(pi < pi3 || pi3 < pi));
581 assert(pi4?
false:
true);
583 assert(pi4.
get() == 0);
587 assert(!(pi2 < pi4 || pi4 < pi2));
590 assert(!(pi3 < pi4 || pi4 < pi3));
598 assert(px2?
false:
true);
600 assert(px2.
get() == 0);
604 assert(!(px < px2 || px2 < px));
608 assert(px3?
false:
true);
610 assert(px3.
get() == 0);
614 assert(!(px < px3 || px3 < px));
618 assert(px4?
false:
true);
620 assert(px4.
get() == 0);
624 assert(!(px2 < px4 || px4 < px2));
627 assert(!(px3 < px4 || px4 < px3));
631 int * p =
new int(7);
636 assert(pi2?
true:
false);
638 assert(pi2.
get() == p);
643 assert(!(pi < pi2 || pi2 < pi));
647 int * p =
new int(7);
649 assert(pv.
get() == p);
653 assert(pv2?
true:
false);
655 assert(pv2.get() == p);
656 assert(pv2.use_count() == 2);
657 assert(!pv2.unique());
658 assert(pv2.use_count() == pv.
use_count());
659 assert(!(pv < pv2 || pv2 < pv));
662 assert(X::instances == 0);
667 assert(px.
get() == p);
671 assert(px2?
true:
false);
673 assert(px2.get() == p);
674 assert(px2.use_count() == 2);
675 assert(!px2.unique());
677 assert(X::instances == 1);
679 assert(px2.use_count() == px.
use_count());
680 assert(!(px < px2 || px2 < px));
684 assert(px3?
true:
false);
686 assert(px3.
get() == p);
690 assert(!(px < px3 || px3 < px));
694 assert(px4?
true:
false);
696 assert(px4.
get() == p);
699 assert(px4.
use_count() == px2.use_count());
700 assert(!(px2 < px4 || px4 < px2));
703 assert(!(px3 < px4 || px4 < px3));
706 assert(X::instances == 0);
707 assert(Y::instances == 0);
712 assert(py.
get() == p);
716 assert(px?
true:
false);
718 assert(px.get() == p);
719 assert(px.use_count() == 2);
720 assert(!px.unique());
721 assert(px.use_count() == py.
use_count());
722 assert(!(px < py || py < px));
724 assert(X::instances == 1);
725 assert(Y::instances == 1);
729 assert(pv?
true:
false);
731 assert(pv.
get() == px.get());
734 assert(pv.
use_count() == px.use_count());
735 assert(!(px < pv || pv < px));
739 assert(pv2?
true:
false);
741 assert(pv2.
get() == py.
get());
745 assert(!(py < pv2 || pv2 < py));
748 assert(!(pv < pv2 || pv2 < pv));
751 assert(X::instances == 0);
752 assert(Y::instances == 0);
765 throw "shared_ptr<Y> p2(wp) failed to throw";
774 throw "shared_ptr<X> p3(wp) failed to throw";
789 assert(p2.
get() == 0);
792 assert(p3.use_count() == wp.
use_count());
793 assert(p3.get() == 0);
803 assert(p2?
true:
false);
805 assert(p2.
get() == p.
get());
811 assert(!(p < p2 || p2 < p));
814 assert(p3?
true:
false);
816 assert(p3.
get() == p.
get());
830 throw "shared_ptr<Y> p2(wp) failed to throw";
839 throw "shared_ptr<X> p3(wp) failed to throw";
851 std::auto_ptr<int> p;
853 assert(pi?
false:
true);
855 assert(pi.
get() == 0);
858 assert(p.get() == 0);
862 std::auto_ptr<int> p;
864 assert(pi?
false:
true);
866 assert(pi.
get() == 0);
869 assert(p.get() == 0);
873 std::auto_ptr<int> p;
875 assert(pv?
false:
true);
877 assert(pv.
get() == 0);
880 assert(p.get() == 0);
884 std::auto_ptr<int> p;
886 assert(pv?
false:
true);
888 assert(pv.
get() == 0);
891 assert(p.get() == 0);
897 assert(px?
false:
true);
899 assert(px.
get() == 0);
902 assert(p.get() == 0);
908 assert(px?
false:
true);
910 assert(px.
get() == 0);
913 assert(p.get() == 0);
919 assert(px?
false:
true);
921 assert(px.
get() == 0);
924 assert(p.get() == 0);
930 assert(px?
false:
true);
932 assert(px.
get() == 0);
935 assert(p.get() == 0);
941 assert(pv?
false:
true);
943 assert(pv.
get() == 0);
946 assert(p.get() == 0);
952 assert(pv?
false:
true);
954 assert(pv.
get() == 0);
957 assert(p.get() == 0);
961 std::auto_ptr<int> p(
new int(7));
964 assert(pi?
true:
false);
966 assert(pi.
get() == q);
971 assert(p.get() == 0);
975 std::auto_ptr<int> p(
new int(7));
978 assert(pi?
true:
false);
980 assert(pi.
get() == q);
985 assert(p.get() == 0);
989 std::auto_ptr<int> p(
new int(7));
992 assert(pv?
true:
false);
994 assert(pv.
get() == q);
998 assert(p.get() == 0);
1002 std::auto_ptr<int> p(
new int(7));
1005 assert(pv?
true:
false);
1007 assert(pv.
get() == q);
1011 assert(p.get() == 0);
1014 assert(X::instances == 0);
1017 std::auto_ptr<X> p(
new X);
1020 assert(px?
true:
false);
1022 assert(px.
get() == q);
1025 assert(X::instances == 1);
1027 assert(p.get() == 0);
1030 assert(X::instances == 0);
1033 std::auto_ptr<X> p(
new X);
1036 assert(px?
true:
false);
1038 assert(px.
get() == q);
1041 assert(X::instances == 1);
1043 assert(p.get() == 0);
1046 assert(X::instances == 0);
1049 std::auto_ptr<X> p(
new X);
1052 assert(pv?
true:
false);
1054 assert(pv.
get() == q);
1057 assert(X::instances == 1);
1059 assert(p.get() == 0);
1062 assert(X::instances == 0);
1065 std::auto_ptr<X> p(
new X);
1068 assert(pv?
true:
false);
1070 assert(pv.
get() == q);
1073 assert(X::instances == 1);
1075 assert(p.get() == 0);
1078 assert(X::instances == 0);
1079 assert(Y::instances == 0);
1082 std::auto_ptr<Y> p(
new Y);
1085 assert(px?
true:
false);
1087 assert(px.
get() == q);
1090 assert(X::instances == 1);
1091 assert(Y::instances == 1);
1093 assert(p.get() == 0);
1096 assert(X::instances == 0);
1097 assert(Y::instances == 0);
1100 std::auto_ptr<Y> p(
new Y);
1103 assert(px?
true:
false);
1105 assert(px.
get() == q);
1108 assert(X::instances == 1);
1109 assert(Y::instances == 1);
1111 assert(p.get() == 0);
1114 assert(X::instances == 0);
1115 assert(Y::instances == 0);
1157 X & operator= (
X const &);
1160 long X::instances = 0;
1180 Y & operator= (
Y const &);
1183 long Y::instances = 0;
1194 assert(p1?
false:
true);
1196 assert(p1.
get() == 0);
1203 assert(p1?
false:
true);
1205 assert(p1.
get() == 0);
1212 assert(p1?
false:
true);
1214 assert(p1.
get() == 0);
1223 assert(p1?
false:
true);
1225 assert(p1.
get() == 0);
1232 assert(p1?
false:
true);
1234 assert(p1.
get() == 0);
1241 assert(p1?
false:
true);
1243 assert(p1.
get() == 0);
1246 assert(p4.use_count() == 1);
1251 assert(!(p1 < p4 || p4 < p1));
1252 assert(p1.use_count() == 2);
1253 assert(p4.use_count() == 2);
1258 assert(p4.use_count() == 1);
1267 assert(p1?
false:
true);
1269 assert(p1.
get() == 0);
1276 assert(p1?
false:
true);
1278 assert(p1.
get() == 0);
1285 assert(p1?
false:
true);
1287 assert(p1.
get() == 0);
1289 assert(X::instances == 0);
1293 assert(X::instances == 1);
1297 assert(X::instances == 1);
1300 assert(!(p1 < p4 || p4 < p1));
1307 assert(X::instances == 1);
1312 assert(X::instances == 0);
1327 assert(p1?
false:
true);
1329 assert(p1.
get() == 0);
1332 assert(p4.use_count() == 1);
1335 assert(p4.use_count() == 2);
1340 assert(!(p1 < p5 || p5 < p1));
1341 assert(p1.use_count() == 3);
1342 assert(p4.use_count() == 3);
1347 assert(p4.use_count() == 2);
1358 assert(p1?
false:
true);
1360 assert(p1.
get() == 0);
1362 assert(X::instances == 0);
1363 assert(Y::instances == 0);
1367 assert(X::instances == 1);
1368 assert(Y::instances == 1);
1376 assert(X::instances == 1);
1377 assert(Y::instances == 1);
1380 assert(!(p1 < p5 || p5 < p1));
1382 assert(p1.use_count() == 3);
1388 assert(X::instances == 1);
1389 assert(Y::instances == 1);
1396 assert(X::instances == 0);
1397 assert(Y::instances == 0);
1407 std::auto_ptr<int> p2;
1410 assert(p1?
false:
true);
1412 assert(p1.
get() == 0);
1416 std::auto_ptr<int> p3(p);
1419 assert(p1.
get() == p);
1422 assert(p3.get() == 0);
1425 assert(p1?
false:
true);
1427 assert(p1.get() == 0);
1428 assert(p1.use_count() == 1);
1434 std::auto_ptr<int> p2;
1437 assert(p1?
false:
true);
1439 assert(p1.
get() == 0);
1443 std::auto_ptr<int> p3(p);
1446 assert(p1.
get() == p);
1449 assert(p3.get() == 0);
1452 assert(p1?
false:
true);
1454 assert(p1.get() == 0);
1455 assert(p1.use_count() == 1);
1462 std::auto_ptr<Y> p2;
1465 assert(p1?
false:
true);
1467 assert(p1.
get() == 0);
1469 assert(X::instances == 0);
1470 assert(Y::instances == 0);
1473 std::auto_ptr<Y> p3(p);
1475 assert(X::instances == 1);
1476 assert(Y::instances == 1);
1479 assert(p1.
get() == p);
1481 assert(X::instances == 1);
1482 assert(Y::instances == 1);
1484 assert(p3.get() == 0);
1487 assert(p1?
false:
true);
1489 assert(p1.get() == 0);
1490 assert(p1.use_count() == 1);
1491 assert(X::instances == 0);
1492 assert(Y::instances == 0);
1534 X & operator= (
X const &);
1537 long X::instances = 0;
1545 assert(pi?
false:
true);
1547 assert(pi.
get() == 0);
1554 assert(pi?
false:
true);
1556 assert(pi.
get() == 0);
1563 assert(pi?
false:
true);
1565 assert(pi.
get() == 0);
1572 assert(px?
false:
true);
1574 assert(px.
get() == 0);
1581 assert(px?
false:
true);
1583 assert(px.
get() == 0);
1590 assert(px?
false:
true);
1592 assert(px.
get() == 0);
1597 assert(X::instances == 0);
1599 assert(X::instances == 1);
1601 assert(px?
false:
true);
1603 assert(px.
get() == 0);
1605 assert(X::instances == 0);
1611 assert(pv?
false:
true);
1613 assert(pv.
get() == 0);
1618 assert(X::instances == 0);
1620 assert(X::instances == 1);
1622 assert(pv?
false:
true);
1624 assert(pv.
get() == 0);
1626 assert(X::instances == 0);
1653 Y & operator= (
Y const &);
1656 long Y::instances = 0;
1664 pi.
reset(static_cast<int*>(0));
1665 assert(pi?
false:
true);
1667 assert(pi.
get() == 0);
1673 assert(pi?
true:
false);
1675 assert(pi.
get() == p);
1679 pi.
reset(static_cast<int*>(0));
1680 assert(pi?
false:
true);
1682 assert(pi.
get() == 0);
1690 px.
reset(static_cast<X*>(0));
1691 assert(px?
false:
true);
1693 assert(px.
get() == 0);
1696 assert(X::instances == 0);
1700 assert(px?
true:
false);
1702 assert(px.
get() == p);
1705 assert(X::instances == 1);
1707 px.
reset(static_cast<X*>(0));
1708 assert(px?
false:
true);
1710 assert(px.
get() == 0);
1713 assert(X::instances == 0);
1714 assert(Y::instances == 0);
1718 assert(px?
true:
false);
1720 assert(px.
get() == q);
1723 assert(X::instances == 1);
1724 assert(Y::instances == 1);
1726 px.
reset(static_cast<Y*>(0));
1727 assert(px?
false:
true);
1729 assert(px.
get() == 0);
1732 assert(X::instances == 0);
1733 assert(Y::instances == 0);
1739 pv.
reset(static_cast<X*>(0));
1740 assert(pv?
false:
true);
1742 assert(pv.
get() == 0);
1745 assert(X::instances == 0);
1749 assert(pv?
true:
false);
1751 assert(pv.
get() == p);
1754 assert(X::instances == 1);
1756 pv.
reset(static_cast<X*>(0));
1757 assert(pv?
false:
true);
1759 assert(pv.
get() == 0);
1762 assert(X::instances == 0);
1763 assert(Y::instances == 0);
1767 assert(pv?
true:
false);
1769 assert(pv.
get() == q);
1772 assert(X::instances == 1);
1773 assert(Y::instances == 1);
1775 pv.
reset(static_cast<Y*>(0));
1776 assert(pv?
false:
true);
1778 assert(pv.
get() == 0);
1781 assert(X::instances == 0);
1782 assert(Y::instances == 0);
1802 assert(pi?
false:
true);
1804 assert(pi.
get() == 0);
1812 assert(deleted == 0);
1813 assert(pi?
true:
false);
1815 assert(pi.
get() == &m);
1820 assert(deleted == &m);
1821 assert(pi?
false:
true);
1823 assert(pi.
get() == 0);
1828 assert(deleted == 0);
1835 assert(px?
false:
true);
1837 assert(px.
get() == 0);
1845 assert(deleted == 0);
1846 assert(px?
true:
false);
1848 assert(px.
get() == &x);
1853 assert(deleted == &x);
1854 assert(px?
false:
true);
1856 assert(px.
get() == 0);
1862 assert(deleted == 0);
1863 assert(px?
true:
false);
1865 assert(px.
get() == &y);
1870 assert(deleted == &y);
1871 assert(px?
false:
true);
1873 assert(px.
get() == 0);
1878 assert(deleted == 0);
1885 assert(pv?
false:
true);
1887 assert(pv.
get() == 0);
1895 assert(deleted == 0);
1896 assert(pv?
true:
false);
1898 assert(pv.
get() == &x);
1903 assert(deleted == &x);
1904 assert(pv?
false:
true);
1906 assert(pv.
get() == 0);
1912 assert(deleted == 0);
1913 assert(pv?
true:
false);
1915 assert(pv.
get() == &y);
1920 assert(deleted == &y);
1921 assert(pv?
false:
true);
1923 assert(pv.
get() == 0);
1928 assert(deleted == 0);
1935 assert(px?
false:
true);
1937 assert(px.
get() == 0);
1943 assert(deleted == 0);
1969 assert(px.
get() == 0);
1970 assert(px?
false:
true);
1978 assert(px.
get() == 0);
1979 assert(px?
false:
true);
1988 assert(px.
get() == 0);
1989 assert(px?
false:
true);
1999 assert(px.
get() == p);
2000 assert(px?
true:
false);
2002 assert(&*px == px.
get());
2003 assert(px.operator ->() == px.
get());
2012 assert(px.
get() == p);
2013 assert(px?
true:
false);
2015 assert(&*px == px.
get());
2016 assert(px.operator ->() == px.
get());
2041 assert(px2.use_count() == 2);
2042 assert(!px2.unique());
2053 assert(px2.use_count() == 2);
2054 assert(!px2.unique());
2066 assert(px2.use_count() == 2);
2067 assert(!px2.unique());
2092 assert(px.
get() == 0);
2093 assert(px2.
get() == 0);
2098 assert(px.
get() == 0);
2099 assert(px2.
get() == 0);
2110 assert(px.
get() == p);
2112 assert(px2.
get() == 0);
2113 assert(px3.
get() == p);
2119 assert(px.
get() == 0);
2120 assert(px2.
get() == p);
2122 assert(px3.
get() == p);
2135 assert(px.
get() == p2);
2137 assert(px2.
get() == p1);
2139 assert(px3.
get() == p2);
2145 assert(px.
get() == p1);
2147 assert(px2.
get() == p2);
2149 assert(px3.
get() == p2);
2181 assert(!(px != px));
2186 assert(px.
get() == px2.
get());
2188 assert(!(px != px2));
2189 assert(!(px < px2 && px2 < px));
2197 assert(!(px2 != px2));
2198 assert(!(px2 < px2));
2200 assert(px.
get() == px2.
get());
2202 assert(!(px != px2));
2203 assert(!(px < px2 && px2 < px));
2211 assert(!(px2 != px2));
2212 assert(!(px2 < px2));
2214 assert(px.
get() != px2.
get());
2216 assert(!(px == px2));
2217 assert(px < px2 || px2 < px);
2218 assert(!(px < px2 && px2 < px));
2225 assert(px.
get() != px2.
get());
2227 assert(!(px == px2));
2228 assert(px < px2 || px2 < px);
2229 assert(!(px < px2 && px2 < px));
2237 assert(!(px2 != px2));
2238 assert(!(px2 < px2));
2240 assert(px.
get() == px2.
get());
2242 assert(!(px != px2));
2243 assert(!(px < px2 || px2 < px));
2251 assert(px.
get() != pz.
get());
2253 assert(!(px == pz));
2255 assert(py.
get() != pz.
get());
2257 assert(!(py == pz));
2259 assert(px < py || py < px);
2260 assert(px < pz || pz < px);
2261 assert(py < pz || pz < py);
2263 assert(!(px < py && py < px));
2264 assert(!(px < pz && pz < px));
2265 assert(!(py < pz && pz < py));
2270 assert(!(pvx != pvx));
2271 assert(!(pvx < pvx));
2276 assert(pvx < pvy || pvy < pvx);
2277 assert(pvx < pvz || pvz < pvx);
2278 assert(pvy < pvz || pvz < pvy);
2280 assert(!(pvx < pvy && pvy < pvx));
2281 assert(!(pvx < pvz && pvz < pvx));
2282 assert(!(pvy < pvz && pvz < pvy));
2290 assert(!(px != px));
2295 assert(px.
get() == pz.
get());
2297 assert(!(px != pz));
2299 assert(py.
get() == pz.
get());
2301 assert(!(py != pz));
2303 assert(!(px < py || py < px));
2304 assert(!(px < pz || pz < px));
2305 assert(!(py < pz || pz < py));
2312 assert(pvx.
get() != pvy.
get());
2314 assert(!(pvx == pvy));
2317 assert(!(pvx < pvy || pvy < pvx));
2320 assert(!(pvx < pvz || pvz < pvx));
2321 assert(!(pvy < pvz || pvz < pvy));
2345 assert(pi.
get() == 0);
2348 assert(px.get() == 0);
2356 assert(pi.
get() == pi2.
get());
2357 assert(!(pi < pi2 || pi2 < pi));
2368 assert(px.
get() == px2.
get());
2369 assert(!(px < px2 || px2 < px));
2379 assert(px.
get() == py.
get());
2384 assert(!(px < px2 || px2 < px));
2402 assert(px2.
get() == 0);
2409 assert(px2.
get() == 0);
2416 assert(px2.
get() == 0);
2423 assert(px.
get() == px2.
get());
2424 assert(!(px < px2 || px2 < px));
2433 assert(px.
get() == px2.
get());
2434 assert(!(px < px2 || px2 < px));
2460 assert(pw.
get() == 0);
2467 assert(pw.
get() == 0);
2470 assert(pv < pv2 || pv2 < pv);
2477 assert(pw.
get() == 0);
2480 assert(pv < pv2 || pv2 < pv);
2487 assert(pw.
get() == 0);
2490 assert(pv < pv2 || pv2 < pv);
2497 assert(pw.
get() == pv.
get());
2502 assert(!(pv < pv2 || pv2 < pv));
2518 std::vector< shared_ptr<int> > vi;
2538 std::vector< shared_ptr<X> > vx;
2558 std::map< shared_ptr<void>,
long > m;
2561 for(std::vector<
shared_ptr<int> >::iterator i = vi.begin(); i != vi.end(); ++i)
2568 for(std::vector<
shared_ptr<X> >::iterator i = vx.begin(); i != vx.end(); ++i)
2575 for(std::map<
shared_ptr<void>,
long >::iterator i = m.begin(); i != m.end(); ++i)
2577 assert(i->first.use_count() == i->second + 1);
2598 assert(!p->next->next);
2606 namespace n_report_1
2626 foo * foo_ptr =
new foo;
2700 assert(file_instances == 0);
2704 assert(file_instances == 1);
2705 fread(pf, 0, 17041);
2708 assert(file_instances == 0);
2724 file(
char const * name,
char const * mode);
2728 void read(
void * data,
long size);
2730 long total_size()
const;
2738 assert(file_instances == 0);
2741 file f(
"name",
"mode");
2742 assert(file_instances == 1);
2746 assert(file_instances == 1);
2752 file f3(
"name2",
"mode2");
2753 assert(file_instances == 2);
2756 assert(file_instances == 1);
2759 assert(file_instances == 0);
2771 virtual void f(
int) = 0;
2772 virtual int g() = 0;
2786 assert(X_instances == 0);
2791 assert(X_instances == 1);
2796 assert(px->g() == 170);
2799 assert(X_instances == 0);
2829 void operator()(
X * p) {
delete p; }
2844 assert(X_instances == 0);
2848 assert(X_instances == 1);
2851 assert(X_instances == 0);
2877 assert(X_instances == 0);
2882 assert(X_instances == 4);
2886 assert(X_instances == 0);
2903 void operator delete(
void *)
2905 throw "n_spt_static::X::operator delete() called.";
2955 if(--p->
count == 0)
delete p;
2977 assert(X_instances == 0);
2981 assert(X_instances == 1);
2982 assert(p->
count == 0);
2984 assert(px.
get() == p);
2985 assert(p->
count == 1);
2987 assert(px2.
get() == p);
2988 assert(p->
count == 1);
2991 assert(X_instances == 0);
3019 return base_type::get();
3028 virtual void begin() = 0;
3029 virtual void handle(
int event) = 0;
3030 virtual void end() = 0;
3049 handle_called = event;
3070 current_handler = p;
3076 current_handler->handle(event);
3082 current_handler->end();
3083 current_handler.
reset();
3113 assert(begin_called == 0);
3117 assert(begin_called == 1);
3119 assert(handle_called == 0);
3123 assert(handle_called == 17041);
3125 assert(end_called == 0);
3129 assert(end_called == 1);
3135 namespace n_spt_shared_from_this
3142 virtual void f() = 0;
3161 :
public X,
public Y 3167 impl & operator=(impl
const &);
3193 assert(py.
get() != 0);
3197 assert(px.get() != 0);
3201 assert(py.
get() == py2.get());
3202 assert(!(py < py2 || py2 < py));
3269 assert(fread_called);
3285 pf->fread_called =
true;
3303 impl(
char const *,
char const *): total_size_(0)
3315 total_size_ += size;
3324 file::file(
char const * name,
char const * mode): pimpl_(new
impl(name, mode))
3331 pimpl_->read(data, size);
3336 return pimpl_->total_size();
void install_event_handler(shared_ptr< event_handler > p)
shared_ptr< P > dynamic_pointer_cast(shared_ptr< P2 > const &)
void handle_event(int event)
void weak_ptr_constructor()
void operator()(void const *) const
void auto_ptr_constructor()
shared_ptr< X > createX()
void pointer_constructor()
shared_ptr< P > lock() const
void read(void *, long size)
void operator()(void const *)
void conversion_assignment()
smart_pointer_deleter(P const &p)
P * get_pointer(shared_ptr< P > const &)
shared_ptr< X > make_shared_from_intrusive(X *p)
void deleter(incomplete *)
another_ptr< event_handler > get_event_handler()
void setWeak(shared_ptr< foo > s)
void swap(shared_ptr< P > &)
virtual void handle(int event)
void operator()(incomplete *p)
void deleter_constructor()
shared_ptr< event_handler > current_handler
void default_constructor()
shared_ptr< P > const_pointer_cast(shared_ptr< P2 > const &)
impl(char const *, char const *)
void fread(shared_ptr< file > f, void *data, long size)
void remove_event_handler()
void intrusive_ptr_release(X *p)
void intrusive_ptr_add_ref(X *p)
shared_ptr< P > static_pointer_cast(shared_ptr< P2 > const &)
void swap(shared_ptr< P > &, shared_ptr< P > &)
shared_ptr< file > fopen(char const *name, char const *mode)
static shared_ptr< X > create()
void read(void *data, long size)
void auto_ptr_assignment()