Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r56316 - in branches/release/libs/serialization: . build doc src test vc7ide
From: ramey_at_[hidden]
Date: 2009-09-19 22:18:07


Author: ramey
Date: 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
New Revision: 56316
URL: http://svn.boost.org/trac/boost/changeset/56316

Log:
Merge trunk to release
Added:
   branches/release/libs/serialization/src/archive_exception.cpp
      - copied unchanged from r56315, /trunk/libs/serialization/src/archive_exception.cpp
   branches/release/libs/serialization/src/shared_ptr_helper.cpp
      - copied unchanged from r56315, /trunk/libs/serialization/src/shared_ptr_helper.cpp
   branches/release/libs/serialization/src/xml_archive_exception.cpp
      - copied unchanged from r56315, /trunk/libs/serialization/src/xml_archive_exception.cpp
   branches/release/libs/serialization/test/test_check.cpp
      - copied unchanged from r56315, /trunk/libs/serialization/test/test_check.cpp
Properties modified:
   branches/release/libs/serialization/ (props changed)
   branches/release/libs/serialization/doc/release.html (props changed)
Text files modified:
   branches/release/libs/serialization/build/Jamfile.v2 | 3
   branches/release/libs/serialization/doc/acknowledgments.html | 6
   branches/release/libs/serialization/doc/archive_reference.html | 16
   branches/release/libs/serialization/doc/contents.html | 472 ++++++++++++++++++++-------------------
   branches/release/libs/serialization/doc/exceptions.html | 10
   branches/release/libs/serialization/doc/extended_type_info.html | 110 ++++++---
   branches/release/libs/serialization/doc/rationale.html | 220 ------------------
   branches/release/libs/serialization/doc/serialization.html | 6
   branches/release/libs/serialization/doc/special.html | 79 ++++--
   branches/release/libs/serialization/doc/traits.html | 401 +++++++++++++++++++++++++++++----
   branches/release/libs/serialization/module.cmake | 6
   branches/release/libs/serialization/src/basic_archive.cpp | 3
   branches/release/libs/serialization/src/basic_iarchive.cpp | 4
   branches/release/libs/serialization/src/basic_serializer_map.cpp | 77 +++--
   branches/release/libs/serialization/src/extended_type_info.cpp | 33 +-
   branches/release/libs/serialization/src/extended_type_info_no_rtti.cpp | 16
   branches/release/libs/serialization/src/extended_type_info_typeid.cpp | 14
   branches/release/libs/serialization/src/polymorphic_oarchive.cpp | 2
   branches/release/libs/serialization/src/void_cast.cpp | 11
   branches/release/libs/serialization/test/Jamfile.v2 | 5
   branches/release/libs/serialization/test/polymorphic_base.cpp | 2
   branches/release/libs/serialization/test/polymorphic_base.hpp | 5
   branches/release/libs/serialization/test/polymorphic_derived1.cpp | 5
   branches/release/libs/serialization/test/polymorphic_derived1.hpp | 3
   branches/release/libs/serialization/test/polymorphic_derived2.cpp | 2
   branches/release/libs/serialization/test/polymorphic_derived2.hpp | 13
   branches/release/libs/serialization/test/test_binary.cpp | 50 +++
   branches/release/libs/serialization/test/test_class_info_save.cpp | 2
   branches/release/libs/serialization/test/test_complex.cpp | 2
   branches/release/libs/serialization/test/test_derived.cpp | 11
   branches/release/libs/serialization/test/test_dll_exported.cpp | 5
   branches/release/libs/serialization/test/test_exported.cpp | 7
   branches/release/libs/serialization/test/test_no_rtti.cpp | 22 -
   branches/release/libs/serialization/test/test_non_default_ctor.cpp | 2
   branches/release/libs/serialization/test/test_non_intrusive.cpp | 2
   branches/release/libs/serialization/test/test_shared_ptr.cpp | 3
   branches/release/libs/serialization/test/test_simple_class_ptr.cpp | 2
   branches/release/libs/serialization/test/test_static_warning.cpp | 22 -
   branches/release/libs/serialization/test/test_tracking.cpp | 1
   branches/release/libs/serialization/test/test_utf8_codecvt.cpp | 2
   branches/release/libs/serialization/vc7ide/BoostSerializationLibrary.sln | 100 +++++++
   branches/release/libs/serialization/vc7ide/Library.vcproj | 39 ++-
   branches/release/libs/serialization/vc7ide/dll_a.vcproj | 77 ++++-
   branches/release/libs/serialization/vc7ide/dll_base.vcproj | 25 -
   branches/release/libs/serialization/vc7ide/dll_derived2.vcproj | 67 ++++-
   branches/release/libs/serialization/vc7ide/polymorphic_derived2.vcproj | 78 ++++-
   branches/release/libs/serialization/vc7ide/test_array.vcproj | 3
   branches/release/libs/serialization/vc7ide/test_dll_exported.vcproj | 35 +-
   branches/release/libs/serialization/vc7ide/test_dll_plugin.vcproj | 6
   branches/release/libs/serialization/vc7ide/test_exported.vcproj | 3
   branches/release/libs/serialization/vc7ide/test_multiple_ptrs.vcproj | 3
   51 files changed, 1258 insertions(+), 835 deletions(-)

Modified: branches/release/libs/serialization/build/Jamfile.v2
==============================================================================
--- branches/release/libs/serialization/build/Jamfile.v2 (original)
+++ branches/release/libs/serialization/build/Jamfile.v2 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -75,9 +75,12 @@
     text_iarchive
     text_oarchive
     void_cast
+ archive_exception
     xml_grammar
     xml_iarchive
     xml_oarchive
+ xml_archive_exception
+ shared_ptr_helper
 ;
     
 WSOURCES =

Modified: branches/release/libs/serialization/doc/acknowledgments.html
==============================================================================
--- branches/release/libs/serialization/doc/acknowledgments.html (original)
+++ branches/release/libs/serialization/doc/acknowledgments.html 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -1,4 +1,4 @@
-<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <!--
 (C) Copyright 2002-4 Robert Ramey - http://www.rrsd.com .
@@ -27,6 +27,10 @@
 </table>
 <hr>
 <ul>
+ <li>AutoForm Engineering GmbH supported
+ development efforts to extend correct serialization to objects stored in DLLS.
+ <li><a href"http://www.cadence.com/il">Cadence Israel</a> supported enhancement
+ and testing of the portable binary archive.
   <li>David Abrahams improved implementation of "export" functionality. This not
   only eliminated an annoying header sequencing requirement, but also the need to maintain
   a list of "known archives".

Modified: branches/release/libs/serialization/doc/archive_reference.html
==============================================================================
--- branches/release/libs/serialization/doc/archive_reference.html (original)
+++ branches/release/libs/serialization/doc/archive_reference.html 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -270,21 +270,19 @@
 exception.
 <p>
 
-
 <h4><a name="testing">Testing</h4>
 Exhaustive testing of the library requires testing the different aspects of object
-serialization with each archive. There are 36 different tests that can run with any archive. There are
-5 "standard archives" included with the system. (3 in systems which don't support wide
-charactor i/o).
+serialization with each archive. There are 46 different tests that can run with any archive.
+There are 5 "standard archives" included with the system.
+(3 in systems don't support wide charactor i/o).
 <p>
-In addition, there are 22 other tests which aren't related to any particular archive
-class.
+In addition, there are 28 other tests which aren't related to any particular archive class.
 <p>
 The default <code style="white-space: normal">bjam</code> testing setup will run all
-the above described tests. This will result in as many as 39 archive tests * 5
-standard archives + 25 general tests = 220 tests. Note that a complete test of the
+the above described tests. This will result in as many as 46 archive tests * 5
+standard archives + 28 general tests = 258 tests. Note that a complete test of the
 library would include DLL vs static library, release vs debug so the actual total
-would be closer to 880 tests.
+would be closer to 1032 tests.
 <p>
 For each archive there is a header file in the test directory similar to the one below.
 The name of this archive is passed to the test program by setting the

Modified: branches/release/libs/serialization/doc/contents.html
==============================================================================
--- branches/release/libs/serialization/doc/contents.html (original)
+++ branches/release/libs/serialization/doc/contents.html 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -1,4 +1,4 @@
-<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <!--
 (C) Copyright 2002-4 Robert Ramey - http://www.rrsd.com .
@@ -83,252 +83,266 @@
 <img src="dot.gif" onclick="collapse_all()">Collapse All
 -->
 <p>
- <dl class="page-index">
- <dt><img style="display:none" src="plus.gif" id="release_notes"><a target="detail" href="release.html">Release Notes</a></dt>
- <dd><div id="release_notes_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#requirements">Requirements</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#difference_1_36">Differences from version 1.36</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#difference_1_35">Differences from version 1.35</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#difference_1_34">Differences from version 1.34</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#difference_1_33">Differences from version 1.33</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#difference_1_32">Differences from version 1.32</a></dt>
-
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#todo">Pending Issues</a></dt>
- </dl></div></dd>
- <dt><img style="display:none" src="plus.gif" id="overview"><a target="detail" href="overview.html">Overview</a></dt>
- <dd><div id="overview_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="overview.html#Requirements">Requirements</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="overview.html#Otherimplementations">Other Implementations</a></dt>
- </dl></div></dd>
- <dt><img style="display:none" src="plus.gif" id="tutorial"><a target="detail" href="tutorial.html">Tutorial</a></dt>
- <dd><div id="tutorial_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#simplecase">A Very Simple Case</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#nonintrusiveversion">Non Intrusive Version</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#serializablemembers">Serializable Members</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#derivedclasses">Derived Classes</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#pointers">Pointers</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#arrays">Arrays</a>
-
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#stl">STL Collections</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#versioning">Class Versioning</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#splitting">Splitting <code>serialize</code> into <code>save/load</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#archives">Archives</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#examples">List of Examples</a>
+<dl class="page-index">
+ <dt><img style="display:none" src="plus.gif" id="release_notes"><a target="detail" href="release.html">Release Notes</a></dt>
+ <dd><div id="release_notes_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#requirements">Requirements</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#difference_1_36">Differences from version 1.36</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#difference_1_35">Differences from version 1.35</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#difference_1_34">Differences from version 1.34</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#difference_1_33">Differences from version 1.33</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#difference_1_32">Differences from version 1.32</a></dt>
+
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="release.html#todo">Pending Issues</a></dt>
+ </dl></div></dd>
+ <dt><img style="display:none" src="plus.gif" id="overview"><a target="detail" href="overview.html">Overview</a></dt>
+ <dd><div id="overview_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="overview.html#Requirements">Requirements</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="overview.html#Otherimplementations">Other Implementations</a></dt>
+ </dl></div></dd>
+ <dt><img style="display:none" src="plus.gif" id="tutorial"><a target="detail" href="tutorial.html">Tutorial</a></dt>
+ <dd><div id="tutorial_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#simplecase">A Very Simple Case</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#nonintrusiveversion">Non Intrusive Version</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#serializablemembers">Serializable Members</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#derivedclasses">Derived Classes</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#pointers">Pointers</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#arrays">Arrays</a>
+
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#stl">STL Collections</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#versioning">Class Versioning</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#splitting">Splitting <code>serialize</code> into <code>save/load</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#archives">Archives</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="tutorial.html#examples">List of Examples</a>
+ </dl></div></dd>
+
+ <dt><img style="display:none" src="plus.gif" id="reference"><a target="detail" href="reference.html">Reference</a></dt>
+ <dd><div id="reference_detail"><dl class="page-index">
+ <dt><img style="display:none" src="plus.gif" id="archive_concept"><a target="detail" href="archives.html">Archive Concepts</a>
+ <dd><div id="archive_concept_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="archives.html#saving_interface">Saving Archive Concept</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="archives.html#loading_interface">Loading Archive Concept</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="archives.html#archive_models">Archive Models</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="archives.html#exceptions">Exceptions</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="archives.html#charactersets">Character Sets</a>
     </dl></div></dd>
-
- <dt><img style="display:none" src="plus.gif" id="reference"><a target="detail" href="reference.html">Reference</a></dt>
- <dd><div id="reference_detail"><dl class="page-index">
- <dt><img style="display:none" src="plus.gif" id="archive_concept"><a target="detail" href="archives.html">Archive Concepts</a>
- <dd><div id="archive_concept_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="archives.html#saving_interface">Saving Archive Concept</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="archives.html#loading_interface">Loading Archive Concept</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="archives.html#archive_models">Archive Models</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="archives.html#exceptions">Exceptions</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="archives.html#charactersets">Character Sets</a>
- </dl></div></dd>
- <dt><img style="display:none" src="plus.gif" id="serialization"><a target="detail" href="serialization.html">Serializable Concept</a>
- <dd><div id="serialization_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#primitiveoperators">Primitive Types</a>
- <dt><img style="display:none" src="dot.gif" id="class"><a target="detail" href="serialization.html#classoperators">Class Types</a>
- <dd><div id="class_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#member">Member Function</a>
- <dt><img style="display:none" src="plus.gif" id="splitfree"><a target="detail" href="serialization.html#free">Free Function</a>
- <dd><div id="splitfree_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#namespaces">Namespaces for Free Function Overrides</a>
- </dl></div></dd>
- <dt><img style="display:none" src="plus.gif" id="members"><a target="detail" href="serialization.html#classmembers">Class Members</a>
- <dd><div id="members_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#base">Base Classes</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#const"><code>const</code> Members</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#templates">Templates</a>
- </dl></div></dd>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#versioning">Versioning</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#splitting">Splitting <code>serialize</code> into <code>save/load</code></a>
+ <dt><img style="display:none" src="plus.gif" id="serialization"><a target="detail" href="serialization.html">Serializable Concept</a>
+ <dd><div id="serialization_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#primitiveoperators">Primitive Types</a>
+ <dt><img style="display:none" src="dot.gif" id="class"><a target="detail" href="serialization.html#classoperators">Class Types</a>
+ <dd><div id="class_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#member">Member Function</a>
+ <dt><img style="display:none" src="plus.gif" id="splitfree"><a target="detail" href="serialization.html#free">Free Function</a>
+ <dd><div id="splitfree_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#namespaces">Namespaces for Free Function Overrides</a>
         </dl></div></dd>
- <dt><img style="display:none" src="plus.gif" id="pointers"><a target="detail" href="serialization.html#pointeroperators">Pointers</a>
- <dd><div id="pointers_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#constructors">Non-Default Constructors</a>
- <dt><img style="display:none" src="plus.gif" id="derivedpointers"><a target="detail" href="serialization.html#derivedpointers">Pointers to Objects of Derived Classes</a>
- <dd><div id="derivedpointers_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#registration">Registration</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#export">Export</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#instantiation">Instantiation</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#selectivetracking">Selective Tracking</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#runtimecasting">Runtime Casting</a>
- </dl></div></dd>
+ <dt><img style="display:none" src="plus.gif" id="members"><a target="detail" href="serialization.html#classmembers">Class Members</a>
+ <dd><div id="members_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#base">Base Classes</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#const"><code>const</code> Members</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#templates">Templates</a>
         </dl></div></dd>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#references">References</a>
- <dt><img style="display:none" src="plus.gif" id="wrappers"><a target="detail" href="wrappers.html">Serialization Wrappers</a>
- <dd><div id="wrappers_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="wrappers.html#binaryobjects">Binary Objects</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="wrappers.html#arrays">Arrays</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="wrappers.html#strong_type"><code style="white-space: normal">strong_type</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="wrappers.html#collection_size_type">Collection Sizes</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="wrappers.html#nvp">Name-Value Pairs</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="wrappers.html#composition">Composition</a>
- </dl></div></dd>
- <dt><img style="display:none" src="plus.gif" id="traits"><a target="detail" href="traits.html">Class Serialization Traits</a>
- <dd><div id="traits_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#version">Version</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#level">Implementation Level</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#tracking">Object Tracking</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#export">Export Key</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#Abstract">Abstract</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#typeinfo">Type Information Implementation</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#wrappers">Wrappers</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#templates">Template Serialization Traits</a>
- </dl></div></dd>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#models">Models - Serialization Implementations Included in the Library</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#versioning">Versioning</a>
+ <dt><img style="display:none" s'c="dot.gif"><a target="detail" href="serialization.html#splitting">Splitting <code>serialize</code> into <code>save/load</code></a>
       </dl></div></dd>
- <dt><img style="display:none" src="plus.gif" id="special"><a target="detail" href="special.html">Special Considerations</a>
- <dd><div id="special_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#objecttracking">Object Tracking</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#classinfo">Class Information</a>
- <dt><img style="display:none" src="plus.gif" id="portability"><a target="detail" href="special.html#portability">Archive Portability</a>
- <dd><div id="portability_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#numerics">Numerics</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#traits">Traits</a>
+ <dt><img style="display:none" src="plus.gif" id="pointers"><a target="detail" href="serialization.html#pointeroperators">Pointers</a>
+ <dd><div id="pointers_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#constructors">Non-Default Constructors</a>
+ <dt><img style="display:none" src="plus.gif" id="derivedpointers"><a target="detail" href="serialization.html#derivedpointers">Pointers to Objects of Derived Classes</a>
+ <dd><div id="derivedpointers_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#registration">Registration</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#export">Export</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#instantiation">Instantiation</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#selectivetracking">Selective Tracking</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#runtimecasting">Runtime Casting</a>
         </dl></div></dd>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#binary_archives">Binary Archives</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#xml_archives">XML Archives</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#export">Exporting Class Serialization</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#dlls">DLLS - Serialization and Runtime Linking</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#plugins">Plugins</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#multi_threading">Multi-Threading</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#optimizations">Optimzations</a>
- <dt><img style="display:none" src="plus.gif" id="exceptions"><a target="detail" href="exceptions.html">Archive Exceptions</a>
- <dd><div id="exceptions_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#unregistered_class"><code>unregistered_class</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#invalid_signature"><code>invalid_signature</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#unsupported_version"><code>unsupported_version</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#pointer_conflict"><code>pointer_conflict</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#incompatible_native_format"><code>incompatible_format</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#array_size_too_short"><code>array_size_too_short</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#stream_error"><code>stream_error</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#invalid_class_name"><code>invalid_class_name</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#unregistered_cast"><code>unregistered_cast</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#xml_archive_parsing_error"><code>xml_archive_parsing_error</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#xml_archive_tag_mismatch"><code>xml_archive_tag_mismatch</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#xml_archive_tag_name_error"><code>xml_archive_tag_name_error</code></a>
+ </dl></div></dd>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#references">References</a>
+ <dt><img style="display:none" src="plus.gif" id="traits"><a target="detail" href="traits.html">Class Serialization Traits</a>
+ <dd><div id="traits_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#version">Version</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#level">Implementation Level</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#tracking">Object Tracking</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#export">Export Key</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#Abstract">Abstract</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#typeinfo">Type Information Implementation</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#wrappers">Wrappers</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#bitwise">Bitwise Serialization</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#templates">Template Serialization Traits</a>
+
+ <dt><img style="display:none" src="plus.gif" id="compiletimemessages"><a target="detail" href="traits.html#compiletime_messages">Compile Time Warnings and Errors</a>
+ <dd><div id="compiletimemessages_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#object_level">object_level</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#object_versioning">object_versioning</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#object_tracking">object_tracking</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#pointer_level">pointer_level</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#pointer_tracking">pointer_tracking</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="traits.html#const_loading">const_loading</a>
         </dl></div></dd>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="exception_safety.html">Exception Safety</a>
+
+
+
+ </dl></div></dd>
+ <dt><img style="display:none" src="plus.gif" id="wrappers"><a target="detail" href="wrappers.html">Serialization Wrappers</a>
+ <dd><div id="wrappers_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="wrappers.html#binaryobjects">Binary Objects</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="wrappers.html#arrays">Arrays</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="wrappers.html#strong_type"><code style="white-space: normal">strong_type</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="wrappers.html#collection_size_type">Collection Sizes</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="wrappers.html#nvp">Name-Value Pairs</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="wrappers.html#composition">Composition</a>
       </dl></div></dd>
- <dt><img style="display:none" src="plus.gif" id="archive_reference"><a target="detail" href="archive_reference.html">Archive Class Reference</a>
- <dd><div id="archive_reference_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="archive_reference.html#implementation">Implementation</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="archive_reference.html#usage">Usage</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="archive_reference.html#testing">Testing</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="archive_reference.html#polymorphic">Polymorphic Archives</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="serialization.html#models">Models - Serialization Implementations Included in the Library</a>
+ </dl></div></dd>
+ <dt><img style="display:none" src="plus.gif" id="special"><a target="detail" 'ref="special.html">Special Considerations</a>
+ <dd><div id="special_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#objecttracking">Object Tracking</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#classinfo">Class Information</a>
+ <dt><img style="display:none" src="plus.gif" id="portability"><a target="detail" href="special.html#portability">Archive Portability</a>
+ <dd><div id="portability_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#numerics">Numerics</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#traits">Traits</a>
       </dl></div></dd>
- <dt><img style="display:none" src="plus.gif" id="implementation"><a target="detail" href="implementation.html">Implementation Notes</a>
- <dd><div id="implementation_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#functiontemplateordering">Partial Function Template Ordering</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#charencoding">Character Encoding</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#tempatesyntax">Template Invocation syntax</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#partialtemplatespecialization">Partial Template Specialization</a>
- <dt><img style="display:none" src="plus.gif" id="othercompilerissues"><a target="detail" href="implementation.html#othercompilerissues">Specific Compiler/Library Issues</a>
- <div id="othercompilerissues_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#gcc3x">GCC 3.X,4.X</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#gcc295">GCC 2.95</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#intel80">Intel 8.0</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#vc80">Visual C++ 8.0</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#vc71">Visual C++ 7.1</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#vc70">Visual C++ 7.0</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#vc6">Visual C++ 6.0</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#borland">Borland 5.64 and 5.51</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#comeau">Comeau 4.3.3</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#codewarrior">Code Warrior 8.3</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#tru64">TRU64</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#dinkumware">Dinkumware Library</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#stlport">STLPort 4.5.3</a>
- </dl></div>
- <dt><img style="display:none" src="plus.gif" id="headers"><a target="detail" href="headers.html">Code Structure</a>
- <div id="headers_detail"><dl class="page-index">
- <dt><img style="display:none" src="plus.gif" id="userincludes"><a target="detail" href="headers.html#userincludes">Files Included by User Programs</a>
- <div id="userincludes_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#archiveimplementations">Archive Implementations</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#serializationdeclarations">Serialization Declarations</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#serializationimplementations">Serialization Implementations</a>
- </dl></div>
- <dt><img style="display:none" src="plus.gif" id="libraryimplementation"><a target="detail" href="headers.html#libraryimplementation">Files Which Implement the Library</a>
- <div id="libraryimplementation_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#archivedevelopment">Archive Development</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#archiveinternals">Archive Internals</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#codemodules">Archive Library Code Modules</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#dataflowiterators">Dataflow Iterators</a>
- </dl></div>
- </dl></div>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#binary_archives">Binary Archives</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#xml_archives">XML Archives</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#export">Exporting Class Serialization</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#static_libraries">Static Libraries and Serialization</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#dlls">DLLS - Serialization and Runtime Linking</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#plugins">Plugins</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#multi_threading">Multi-Threading</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#optimizations">Optimzations</a>
+ <dt><img style="display:none" src="plus.gif" id="exceptions"><a target="detail" href="exceptions.html">Archive Exceptions</a>
+ <dd><div id="exceptions_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#unregistered_class"><code>unregistered_class</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#invalid_signature"><code>invalid_signature</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#unsupported_version"><code>unsupported_version</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#pointer_conflict"><code>pointer_conflict</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#incompatible_native_format"><code>incompatible_format</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#array_size_too_short"><code>array_size_too_short</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#stream_error"><code>stream_error</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#invalid_class_name"><code>invalid_class_name</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#unregistered_cast"><code>unregistered_cast</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#xml_archive_parsing_error"><code>xml_archive_parsing_error</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#xml_archive_tag_mismatch"><code>xml_archive_tag_mismatch</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exceptions.html#xml_archive_tag_name_error"><code>xml_archive_tag_name_error</code></a>
       </dl></div></dd>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="exception_safety.html">Exception Safety</a>
     </dl></div></dd>
- <dt><img style="display:none" src="plus.gif" id="case_studies">Case Studies
- <dd><div id="case_studies_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="shared_ptr.html">Template serialization - <code>shared_ptr&lt;class T&gt;</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="shared_ptr2.html"><code>shared_ptr&lt;class T&gt;</code>Revisited</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="pimpl.html">PIMPL</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="derivation.html">Derivation from an Existing Archive Class</a>
+ <dt><img style="display:none" src="plus.gif" id="archive_reference"><a target="detail" href="archive_reference.html">Archive Class Reference</a>
+ <dd><div id="archive_reference_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="archive_reference.html#implementation">Implementation</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="archive_reference.html#usage">Usage</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="archive_reference.html#testing">Testing</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="archive_reference.html#polymorphic">Polymorphic Archives</a>
     </dl></div></dd>
- <dt><img style="display:none" src="plus.gif" id="otherclasses">Other Classes
- <dd><div id="otherclasses_detail"><dl class="page-index">
- <dt><img style="display:none" src="plus.gif" id="extended_type_info"><a target="detail" href="extended_type_info.html"><code>extended_type_info</code></a>
- <dd><div id="extended_type_info_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="extended_type_info.html#motivation">Motivation</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="extended_type_info.html#runtime">Runtime Interface</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="extended_type_info.html#requirements">Requirements</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="extended_type_info.html#models">Models</a>
- </dl></div></dd>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="void_cast.html"><code>void_cast</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="codecvt.html"><code>utf8_codecvt_facet</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="strong_typedef.html"><code>BOOST_STRONG_TYPEDEF</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="state_saver.html"><code>state_saver</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="dataflow.html">Dataflow Iterators</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="smart_cast.html"><code>smart_cast</code></a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="static_warning.html"><code>BOOST_STATIC_WARNING</code></a>
- <dt><img style="display:none" src="plus.gif" id="singleton"><a target="detail" href="singleton.html"><code>singleton</code></a>
- <dd><div id="singleton_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="singleton.html#motivation">Motivation</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="singleton.html#features">Features</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="singleton.html#classinterface">Class Interface</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="singleton.html#requirements">Requirements</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="singleton.html#examples">Examples</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="singleton.html#multithreading">Multi-Threading</a>
+ </dl></div></dd>
+ <dt><img style="display:none" src="plus.gif" id="implementation"><a target="detail" href="implementation.html">Implementation Notes</a>
+ <dd><div id="implementation_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#functiontemplateordering">Partial Function Template Ordering</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#charencoding">Character Encoding</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#tempatesyntax">Template Invocation syntax</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#partialtemplatespecialization">Partial Template Specialization</a>
+ <dt><img style="display:none" src="plus.gif" id="othercompilerissues"><a target="detail" href="implementation.html#othercompilerissues">Specific Compiler/Library Issues</a>
+ <dd><div id="othercompilerissues_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#gcc3x">GCC 3.X,4.X</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#gcc295">GCC 2.95</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#intel80">Intel 8.0</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#vc80">Visual C++ 8.0</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#vc71">Visual C++ 7.1</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#vc70">Visual C++ 7.0</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#vc6">Visual C++ 6.0</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#borland">Borland 5.64 and 5.51</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#comeau">Comeau 4.3.3</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#codewarrior">Code Warrior 8.3</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#tru64">TRU64</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#dinkumware">Dinkumware Library</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="implementation.html#stlport">STLPort 4.5.3</a>
+ </dl></div></dd>
+ <dt><img style="display:none" src="plus.gif" id="headers"><a target="detail" href="headers.html">Code Structure</a>
+ <dd><div id="headers_detail"><dl class="page-index">
+ <dt><img style="display:none" src="plus.gif" id="userincludes"><a target="detail" href="headers.html#userincludes">Files Included by User Programs</a>
+ <dd><div id="userincludes_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#archiveimplementations">Archive Implementations</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#serializationdeclarations">Serialization Declarations</a>
+ <dt><img style="display:none" 'rc="dot.gif"><a target="detail" href="headers.html#serializationimplementations">Serialization Implementations</a>
+ </dl></div>
+ <dt><img style="display:none" src="plus.gif" id="libraryimplementation"><a target="detail" href="headers.html#libraryimplementation">Files Which Implement the Library</a>
+ <dd><div id="libraryimplementation_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#archivedevelopment">Archive Development</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#archiveinternals">Archive Internals</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#codemodules">Archive Library Code Modules</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="headers.html#dataflowiterators">Dataflow Iterators</a>
       </dl></div></dd>
     </dl></div></dd>
- <!--
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="configuration.html">Configuration Information</a></dt>
+ </dl></div></dd>
+ <dt><img style="display:none" src="plus.gif" id="case_studies">Case Studies
+ <dd><div id="case_studies_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="shared_ptr.html">Template serialization - <code>shared_ptr&lt;class T&gt;</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="shared_ptr2.html"><code>shared_ptr&lt;class T&gt;</code>Revisited</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="pimpl.html">PIMPL</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="derivation.html">Derivation from an Existing Archive Class</a>
+ </dl></div></dd>
+ <dt><img style="display:none" src="plus.gif" id="otherclasses">Other Classes
+ <dd><div id="otherclasses_detail"><dl class="page-index">
+ <dt><img style="display:none" src="plus.gif" id="extended_type_info"><a target="detail" href="extended_type_info.html"><code>extended_type_info</code></a>
+ <dd><div id="extended_type_info_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="extended_type_info.html#motivation">Motivation</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="extended_type_info.html#runtime">Runtime Interface</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="extended_type_info.html#requirements">Requirements</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="extended_type_info.html#models">Models</a>
+ </dl></div></dd>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="void_cast.html"><code>void_cast</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="codecvt.html"><code>utf8_codecvt_facet</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="strong_typedef.html"><code>BOOST_STRONG_TYPEDEF</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="state_saver.html"><code>state_saver</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="dataflow.html">Dataflow Iterators</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="smart_cast.html"><code>smart_cast</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="static_warning.html"><code>BOOST_STATIC_WARNING</code></a>
+ <dt><img style="display:none" src="plus.gif" id="singleton"><a target="detail" href="singleton.html"><code>singleton</code></a>
+ <dd><div id="singleton_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="singleton.html#motivation">Motivation</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="singleton.html#features">Features</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="singleton.html#classinterface">Class Interfac'</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="singleton.html#requirements">Requirements</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="singleton.html#examples">Examples</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="singleton.html#multithreading">Multi-Threading</a>
+ </dl></div></dd>
+ </dl></div></dd>
+ <!--
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="configuration.html">Configuration Information</a></dt>
     -->
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="faq.html">Tips and Tricks</a>
- <dt><img style="display:none" src="plus.gif" id="rationale"><a target="detail" href="rationale.html">Rationale</a></dt>
- <dd><div id="rationale_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="rationale.html#serialization">The term "serialization" is preferred to "persistence"</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="rationale.html#archives">Archives are not streams</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="rationale.html#typeid"><code style="white-space: normal">typeid</code> information is not included in archives</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="rationale.html#trap">Compile time trap when saving a non-const value</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="faq.html">Tips and Tricks</a>
+ <dt><img style="display:none" src="plus.gif" id="rationale"><a target="detail" href="rationale.html">Rationale</a></dt>
+ <dd><div id="rationale_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="rationale.html#serialization">The term "serialization" is preferred to "persistence"</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="rationale.html#archives">Archives are not streams</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="rationale.html#typeid"><code style="white-space: normal">typeid</code> information is not included in archives</a></dt>
+ </dl></div></dd>
+
+ <dt><img style="display:none" src="plus.gif" id="todo"><a target="detail" href="todo.html">To Do</a></dt>
+ <dd><div id="todo_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="todo.html#portablebinaryarchive">Portable Binary Archive</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="todo.html#performancetesting">Performance Testing and Profiling</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="todo.html#backversioning">Back Versioning</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="todo.html#nortti">Environments without RTTI</a></dt>
+
+ <dt><img style="display:none" src="plus.gif" id="newcasestudies"><a target="detail" href="new_case_studies.html">Proposed Case Studies</a></dt>
+ <dd><div id="newcasestudies_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="new_case_studies.html#functionobject">Serializing a Function Object</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="new_case_studies.html#archiveadaptor">Archive Adaptors</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="new_case_studies.html#archivehelper">Archive Helpers</a></dt>
     </dl></div></dd>
 
- <dt><img style="display:none" src="plus.gif" id="todo"><a target="detail" href="todo.html">To Do</a></dt>
- <dd><div id="todo_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="todo.html#portablebinaryarchive">Portable Binary Archive</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="todo.html#performancetesting">Performance Testing and Profiling</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="todo.html#backversioning">Back Versioning</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="todo.html#nortti">Environments without RTTI</a></dt>
-
- <dt><img style="display:none" src="plus.gif" id="newcasestudies"><a target="detail" href="new_case_studies.html">Proposed Case Studies</a></dt>
- <dd><div id="newcasestudies_detail"><dl class="page-index">
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="new_case_studies.html#functionobject">Serializing a Function Object</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="new_case_studies.html#archiveadaptor">Archive Adaptors</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="new_case_studies.html#archivehelper">Archive Helpers</a></dt>
- </dl></div></dd>
-
- </dl></div></dd>
+ </dl></div></dd>
 
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="history.html">History</a>
- <!--
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="definitions.html">Definitions</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="faq.html">Frequently Asked Questions (FAQs)</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="history.html">History</a>
+ <!--
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="definitions.html">Definitions</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="faq.html">Frequently Asked Questions (FAQs)</a></dt>
     -->
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="bibliography.html">Bibliography</a></dt>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="acknowledgments.html">Acknowledgments</a></dt>
- </dl></div>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="bibliography.html">Bibliography</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="acknowledgments.html">Acknowledgments</a></dt>
+</dl></div>
 </small>
 </body>
 </html>

Modified: branches/release/libs/serialization/doc/exceptions.html
==============================================================================
--- branches/release/libs/serialization/doc/exceptions.html (original)
+++ branches/release/libs/serialization/doc/exceptions.html 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -36,6 +36,7 @@
   <dt>stream_error
   <dt>invalid_class_name
   <dt>unregistered_class
+ <dt>multiple_code_instantiation
   <dt>xml_archive_parsing_error
   <dt>xml_archive_tag_mismatch
   <dt>xml_archive_tag_name_error
@@ -75,9 +76,11 @@
                                 // to insert virus via buffer overrun method.
         unregistered_cast, // base - derived relationship not registered with
                                 // void_cast_register
- unsupported_class_version // type saved with a version # greater than the
+ unsupported_class_version, // type saved with a version # greater than the
                             // one used by the program. This indicates that the proggram
                             // needs to be rebuilt.
+ multiple_code_instantiation // code for implementing serialization for some
+ // type has been instantiated in more than one module.
     } exception_code;
     exception_code code;
     archive_exception(exception_code c) : code(c) {}
@@ -228,6 +231,11 @@
 This exception is thrown if an attempt is made to convert between two pointers
 whose relationship has not been registered,
 
+<h3><a name="multiple_code_instantiation"><code style="white-space: normal">multiple_code_instantiation</code></a></h3>
+This exception is thrown when it is detected that the serialization of the same type
+has been instantiated more that once. This might occur when
+serialization code is instantiated in both the mainline and one or more DLLS.
+
 <h3><a name="xml_archive_parsing_error"><code style="white-space: normal">xml_archive_parsing_error</code></a></h3>
 The XML generated by the serialization process is intimately coupled to the
 C++ class structure, relationships between objects and the serialization

Modified: branches/release/libs/serialization/doc/extended_type_info.html
==============================================================================
--- branches/release/libs/serialization/doc/extended_type_info.html (original)
+++ branches/release/libs/serialization/doc/extended_type_info.html 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -105,14 +105,15 @@
     // this class can't be used as is. It's just the
     // common functionality for all type_info replacement
     // systems. Hence, make these protected
- const char * m_key;
- extended_type_info(const unsigned int type_info_key);
+ extended_type_info(
+ const unsigned int type_info_key,
+ const char * key
+ );
     ~extended_type_info();
+ void key_register();
+ void key_unregister();
 public:
- void key_register(const char *key);
- const char * get_key() const {
- return m_key;
- }
+ const char * get_key() const;
     bool operator<(const extended_type_info &rhs) const;
     bool operator==(const extended_type_info &rhs) const;
     bool operator!=(const extended_type_info &rhs) const {
@@ -139,30 +140,43 @@
 <dl>
 
 <dt><h4><pre><code>
-extended_type_info(unsigned int type_info_key);
+extended_type_info(unsigned int type_info_key, const char *key);
 </code></pre></h4></dt>
 <dd>
 This constructor should be called by all derived classes.
-The argument should be the particular implementation. For
-this default implementation base on typeid(), this is the
+The first argument should be the particular implementation.
+For this default implementation base on typeid(), this is the
 value 1. Each system must have its own integer. This value
 is used to permit the inter-operability of different typeinfo
 systems.
+<p>
+The second argument is a const string which is the external
+name of the type to which this record corresponds.
+It may sometimes be referred to as a GUID - a <b>G</b>lobal <b>U</b>nique <b>ID</b>entifier.
+It is passed through archives from one program invocation to
+another to uniquely identify the types that the archive contains.
+If the "export" facility is not going to be used,
+this value may be NULL.
 </dd>
 
 <dt><h4><pre><code>
-void key_register(const char *key);
+void key_register();
+void key_unregister();
 </code></pre></h4></dt>
 <dd>
-Assign a unique character string identifier to this
-<code style="white-space: normal"><a target="extended_type_info.hpp" href = "../../../boost/serialization/extended_type_info.hpp">extended_type_info</a></code>
-instance and add it to the corresponding global trable.
-This key is used to identify a type accross different instances of the program.
-In this way, one instance may know what type to create when necessary.
-For this purpose, it must be the same in all program instances which
-refer to the same type.
+This system maintains a global table which relates
+external strings to
+<code style="white-space: normal">extended_type_info</code> records.
+This table is used when loading pointers to objects serialized
+through a base class pointer. In this case, the archive
+contains a string which is looked up in this table to
+determine which <code style="white-space: normal">extended_type_info</code>
+to use for creating a new object.
 <p>
-It may sometimes be referred to as a GUID - a <b>G</b>lobal <b>U</b>nique <b>ID</b>entifier.
+These functions are called by constructors and
+destructors of classes which implement
+<code style="white-space: normal">extended_type_info</code>
+to add and remove entries from this table.
 </dd>
 
 <dt><h4><pre><code>
@@ -185,7 +199,8 @@
 extended_type_info
 </code>
 </a>
-objects. They a strict total ordering on all instances of this class.
+objects. They impose a strict total ordering on all
+<code style="white-space: normal">extended_type_info</code> records.
 </dd>
 
 <dt><h4><pre><code>
@@ -245,20 +260,6 @@
 
 <dt><h4><code style="white-space: normal"><pre>
 template&lt;class ETI&gt;
-static extended_type_info &
-ETI::get_mutable_instance();
-static const extended_type_info &
-ETI::get_const:instance();
-</pre></code></h4></dt>
-<dd>
-Return a pointer to the instance of
-<code style="white-space: normal">extended_type_info</code>
-which corresponds to type T. Normally these instances are static objects so
-this just amounts to returning the address of this static object.
-</dd>
-
-<dt><h4><code style="white-space: normal"><pre>
-template&lt;class ETI&gt;
 const extended_type_info *
 ETI::get_derived_extended_type_info(const T & t) const;
 </pre></code></h4></dt>
@@ -274,12 +275,47 @@
 </dd>
 
 <dt><h4><code style="white-space: normal"><pre>
-bool ETI::less_than(const extended_type_info &rhs) const;
+virtual bool ETI::is_less_than(const extended_type_info &rhs) const;
 </pre></code></h4></dt>
 <dd>
 Compare this instance to another one using the same
 <code style="white-space: normal">extended_type_info</code> implementation.
 </dd>
+
+<dt><h4><code style="white-space: normal"><pre>
+virtual bool ETI::is_equal(const extended_type_info &rhs) const;
+</pre></code></h4></dt>
+<dd>
+Compare this instance to another one using the same
+<code style="white-space: normal">extended_type_info</code> implementation.
+Return <code style="white-space: normal">true</code> if the types referred
+to are the same. Otherwise return
+<code style="white-space: normal">false</code>
+</dd>
+
+<dt><h4><code style="white-space: normal"><pre>
+const char ETI::get_key() const;
+</pre></code></h4></dt>
+<dd>
+Retrieve the external key (aka GUID) for this class.
+</dd>
+
+<dt><h4><code style="white-space: normal"><pre>
+virtual void * construct(unsigned int count, ...) const;
+</pre></code></h4></dt>
+<dd>
+Construct an instance of the corresponding type
+with the include argument list.
+</dd>
+
+<dt><h4><code style="white-space: normal"><pre>
+virtual void * destroy(void const * const ptr ) ) const;
+</pre></code></h4></dt>
+<dd>
+Destroy an instance of this type. This calls the
+proper destructor and recovers allocated memory.
+</dd>
+
 </dl>
 
 <h3><a name="models">Models</a></h3>
@@ -294,7 +330,8 @@
 <code style="white-space: normal"><h4><a target="extended_type_info_no_rtti.hpp" href="../../../boost/serialization/extended_type_info_no_rtti.hpp">
 extended_type_info_no_rtti</a></h4></code>
 is implemented in a way that doesn't rely on the existence RTTI.
-However, if the export facility is to be used to serialize types
+Instead, it requires that all polymorphic types be explictly exported.
+In addition, if the export facility is to be used to serialize types
 through base class pointers, those types are required to implement
 a virtual function with the signature:
 
@@ -304,7 +341,8 @@
 which returns a unique string the most derived object this class.
 This function must be virtual in order to implement the functionality required by
 <code style="white-space: normal">ETI::get_derived_extended_type_info</code>
-as described above.
+as described above.
+
 <h3><a name="example">Example</a></h3>
 The test program <code style="white-space: normal"><a target="test_no_rtti" href="../test/test_no_rtti.cpp">test_no_rtti</a></code>
 implements this function in terms of the <code style="white-space: normal"><a target="extended_type_info_no_rtti.hpp" href="../../../boost/serialization/extended_type_info_no_rtti.hpp">

Modified: branches/release/libs/serialization/doc/rationale.html
==============================================================================
--- branches/release/libs/serialization/doc/rationale.html (original)
+++ branches/release/libs/serialization/doc/rationale.html 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -110,226 +110,6 @@
 In effect, <code style="white-space: normal">export</code> generates a portable equivalent to
 <code style="white-space: normal">typeid</code> information.
 
-<h2><a name="trap"></a>Compile time trap when saving a non-const value</h2>
-</p>
-The following code will fail to compile. The failure will occur on a line with a
-<code style="white-space: normal">BOOST_STATIC_ASSERT</code>.
-Here, we refer to this as a compile time trap.
-<code style="white-space: normal"><pre>
-T t;
-ar &lt;&lt; t;
-</pre></code>
-
-unless the tracking_level serialization trait is set to "track_never". The following
-will compile without problem:
-
-<code style="white-space: normal"><pre>
-const T t
-ar &lt;&lt; t;
-</pre></code>
-
-Likewise, the following code will trap at compile time:
-
-<code style="white-space: normal"><pre>
-T * t;
-ar >> t;
-</pre></code>
-
-if the tracking_level serialization trait is set to "track_never".
-<p>
-
-This behavior has been contraversial and may be revised in the future. The criticism
-is that it will flag code that is in fact correct and force users to insert
-<code style="white-space: normal">const_cast</code>. My view is that:
-<ul>
- <li>The trap is useful in detecting a certain class of programming errors.
- <li>Such errors would otherwise be difficult to detect.
- <li>The incovenience caused by including this trap is very small in relation
- to its benefits.
-</ul>
-
-The following case illustrates my position. It was originally used as an example in the
-mailing list by Peter Dimov.
-
-<code style="white-space: normal"><pre>
-class construct_from
-{
- ...
-};
-
-void main(){
- ...
- Y y;
- construct_from x(y);
- ar &lt;&lt; x;
-}
-</pre></code>
-
-Suppose that there is no trap as described above.
-<ol>
- <li>this example compiles and executes fine. No tracking is done because
- construct_from has never been serialized through a pointer. Now some time
- later, the next programmer(2) comes along and makes an enhancement. He
- wants the archive to be sort of a log.
-
-<code style="white-space: normal"><pre>
-void main(){
- ...
- Y y;
- construct_from x(y);
- ar &lt;&lt; x;
- ...
- x.f(); // change x in some way
- ...
- ar &lt;&lt; x
-}
-</pre></code>
- <p>
- Again no problem. He gets two different of copies in the archive, each one is different.
- That is he gets exactly what he expects and is naturally delighted.
- <p>
- <li>Now sometime later, a third programmer(3) sees construct_from and says -
- oh cool, just what I need. He writes a function in a totally disjoint
- module. (The project is so big, he doesn't even realize the existence of
- the original usage) and writes something like:
-
-<code style="white-space: normal"><pre>
-class K {
- shared_ptr &lt;construct_from&gt; z;
- template &lt;class Archive&gt;
- void serialize(Archive & ar, const unsigned version){
- ar &lt;&lt; z;
- }
-};
-</pre></code>
-
- <p>
- He builds and runs the program and tests his new functionality. It works
- great and he's delighted.
- <p>
- <li>Things continue smoothly as before. A month goes by and it's
- discovered that when loading the archives made in the last month (reading the
- log). Things don't work. The second log entry is always the same as the
- first. After a series of very long and increasingly acrimonius email exchanges,
-its discovered
- that programmer (3) accidently broke programmer(2)'s code .This is because by
- serializing via a pointer, the "log" object now being tracked. This is because
- the default tracking behavior is "track_selectively". This means that class
- instances are tracked only if they are serialized through pointers anywhere in
- the program. Now multiple saves from the same address result in only the first one
- being written to the archive. Subsequent saves only add the address - even though the
- data might have been changed. When it comes time to load the data, all instances of the log record show the same data.
- In this way, the behavior of a functioning piece of code is changed due the side
- effect of a change in an otherwise disjoint module.
- Worse yet, the data has been lost and cannot not be now recovered from the archives.
- People are really upset and disappointed with boost (at least the serialization system).
- <p>
- <li>
- After a lot of investigation, it's discovered what the source of the problem
- and class construct_from is marked "track_never" by including:
-<code style="white-space: normal"><pre>
-BOOST_CLASS_TRACKING(construct_from, track_never)
-</pre></code>
- <li>Now everything works again. Or - so it seems.
- <p>
- <li><code style="white-space: normal">shared_ptr&lt;construct_from&gt;</code>
-is not going to have a single raw pointer shared amongst the instances. Each loaded
-<code style="white-space: normal">shared_ptr&lt;construct_from&gt;</code> is going to
-have its own distinct raw pointer. This will break
-<code style="white-space: normal">shared_ptr</code> and cause a memory leak. Again,
-The cause of this problem is very far removed from the point of discovery. It could
-well be that the problem is not even discovered until after the archives are loaded.
-Now we not only have difficult to find and fix program bug, but we have a bunch of
-invalid archives and lost data.
-</ol>
-
-Now consider what happens when the trap is enabled:.
-
-<ol>
- <p>
- <li>Right away, the program traps at
-<code style="white-space: normal"><pre>
-ar &lt;&lt; x;
-</pre></code>
- <p>
- <li>The programmer curses (another %^&*&* hoop to jump through). If he's in a
- hurry (and who isn't) and would prefer not to <code style="white-space: normal">const_cast</code>
- - because it looks bad. So he'll just make the following change an move on.
-<code style="white-space: normal"><pre>
-Y y;
-const construct_from x(y);
-ar &lt;&lt; x;
-</pre></code>
- <p>
- Things work fine and he moves on.
- <p>
- <li>Now programer (2) wants to make his change - and again another
- annoying const issue;
-<code style="white-space: normal"><pre>
-Y y;
-const construct_from x(y);
-...
-x.f(); // change x in some way ; compile error f() is not const
-...
-ar &lt;&lt; x
-</pre></code>
- <p>
- He's mildly annoyed now he tries the following:
- <ul>
- <li>He considers making f() a const - but presumable that shifts the const
- error to somewhere else. And his doesn't want to fiddle with "his" code to
- work around a quirk in the serializaition system
- <p>
- <li>He removes the <code style="white-space: normal">const</code>
- from <code style="white-space: normal">const construct_from</code> above - damn now he
- gets the trap. If he looks at the comment code where the
- <code style="white-space: normal">BOOST_STATIC_ASSERT</code>
- occurs, he'll do one of two things
- <ol>
- <p>
- <li>This is just crazy. Its making my life needlessly difficult and flagging
- code that is just fine. So I'll fix this with a <code style="white-space: normal">const_cast</code>
- and fire off a complaint to the list and mabe they will fix it.
- In this case, the story branches off to the previous scenario.
- <p>
- <li>Oh, this trap is suggesting that the default serialization isn't really
- what I want. Of course in this particular program it doesn't matter. But
- then the code in the trap can't really evaluate code in other modules (which
- might not even be written yet). OK, I'll add the following to my
- construct_from.hpp to solve the problem.
-<code style="white-space: normal"><pre>
-BOOST_CLASS_TRACKING(construct_from, track_never)
-</pre></code>
- </ol>
- </ul>
- <p>
- <li>Now programmer (3) comes along and make his change. The behavior of the
- original (and distant module) remains unchanged because the
- <code style="white-space: normal">construct_from</code> trait has been set to
- "track_never" so he should always get copies and the log should be what we expect.
- <p>
- <li>But now he gets another trap - trying to save an object of a
- class marked "track_never" through a pointer. So he goes back to
- construct_from.hpp and comments out the
- <code style="white-space: normal">BOOST_CLASS_TRACKING</code> that
- was inserted. Now the second trap is avoided, But damn - the first trap is
- popping up again. Eventually, after some code restructuring, the differing
- requirements of serializating <code style="white-space: normal">construct_from</code>
- are reconciled.
-</ol>
-Note that in this second scenario
-<ul>
- <li>all errors are trapped at compile time.
- <li>no invalid archives are created.
- <li>no data is lost.
- <li>no runtime errors occur.
-</ul>
-
-It's true that these traps may sometimes flag code that is currently correct and
-that this may be annoying to some programmers. However, this example illustrates
-my view that these traps are useful and that any such annoyance is small price to
-pay to avoid particularly vexing programming errors.
-
 <!--
 <h2><a name="footnotes"></a>Footnotes</h2>
 <dl>

Modified: branches/release/libs/serialization/doc/serialization.html
==============================================================================
--- branches/release/libs/serialization/doc/serialization.html (original)
+++ branches/release/libs/serialization/doc/serialization.html 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -1,4 +1,4 @@
-<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <!--
 (C) Copyright 2002-4 Robert Ramey - http://www.rrsd.com .
@@ -62,8 +62,8 @@
     </dl>
   <dt>References
   <dt>Arrays
- <dt>Serialization Wrappers
   <dt>Class Serialization Traits
+ <dt>Serialization Wrappers
   <dt>Models - Serialization Implementations Included in the Library
 </dl>
 
@@ -794,7 +794,7 @@
         boost::serialization::base_object&lt;base&gt;(*this);
         // method 2 : explicitly register base/derived relationship
         boost::serialization::void_cast_register&lt;derived, base&gt;(
- static_cast&lt;derived *&gt;(NULL),
+ static_cast&lt;derived *&gt;=NULL),
             static_cast&lt;base *&gt;(NULL)
         )
     }

Modified: branches/release/libs/serialization/doc/special.html
==============================================================================
--- branches/release/libs/serialization/doc/special.html (original)
+++ branches/release/libs/serialization/doc/special.html 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -1,4 +1,4 @@
-<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <!--
 (C) Copyright 2002-4 Robert Ramey - http://www.rrsd.com .
@@ -36,6 +36,7 @@
   <dt>Binary Archives
   <dt>XML Archives
   <dt>Exporting Class Serialization
+ <dt>Static Libraries and Serialization
   <dt>DLLS - Serialization and Runtime Linking
   <dt>Plugins
   <dt>Multi-Threading
@@ -339,16 +340,18 @@
 of a stand alone executable, a static library or
 a dyanmic or shared library.
 <p>
-Note that including
+Including
 <code style="white-space: normal">BOOST_CLASS_EXPORT</code>
 in the "a.hpp" header itself as one would do with
 other serialization traits will make it difficult
 or impossible to follow the rule above regarding
 inclusion of archive headers before
 <code style="white-space: normal">BOOST_CLASS_EXPORT</code>
-is invoked. This is different than other serialization
-traits which would normally be included in same file
-as the class declaration.
+is invoked. This can best be addressed by using
+<code style="white-space: normal">BOOST_CLASS_EXPORT_KEY</code>
+in the header declarations and
+<code style="white-space: normal">BOOST_CLASS_EXPORT_IMPLEMENT</code>
+in the class definition file.
 
 <p>
 This system has certain implications for placing code in static or shared
@@ -358,13 +361,6 @@
 for all the archive classes which he anticipates using. Alternatively,
 one can include headers for just the
 <a href="archive_reference.html#polymorphic">Polymoprhic Archives</a>.
-Also, when making shared libraries, there is currently a restriction
-that only one such library can use <code style="white-space: normal">BOOST_CLASS_EXPORT</code>
-for any given type. All this will most likely make it inconvenient
-to include <code style="white-space: normal">BOOST_CLASS_EXPORT</code>
-as part of the header of the class to be serialized. So, <b>the
-best way to use <code style="white-space: normal">BOOST_CLASS_EXPORT</code>
-is to include it in the same module which implements the class</b>.
 
 <p>
 Strictly speaking, export should not be necessary if all pointer serialization
@@ -383,19 +379,33 @@
 It's reasonable to expect that future C++ compilers will support
 these extensions or something equivalent.
 
-<h3><a name="dlls">DLLS - Serialization and Runtime Linking</a></h3>
-Serialization code can be placed in libraries to be linked at runtime. That is,
-code can be placed in DLLS(Windows) Shared Libraries(*nix), or static libraries
-as well as the main executable. As long as
-
-<a target="detail" href="serialization.html#export">
-<code style="white-space: normal">BOOST_CLASS_EXPORT</code>
-</a>
-
-is not used, The serialization library imposes no special requirements
-that need be taken into account when distributing code among various modules.
-<p>
-For static libraries, this is illustrated by
+<h3><a name="static_libraries">Static Libraries and Serialization</a></h3>
+Code for serialization of data types can be saved in libraries
+just as it can for the rest of the type implementation.
+This works well, and can save huge amount of compilation time.
+<ul>
+<li>Only compile serialization definitions in the library.
+<li>Explicitly instantiate serialization code for ALL
+archive classes you intend to use in the library.
+<li>For exported types, only use <code style="white-space: normal">BOOST_CLASS_EXPORT_KEY</code>
+in headers.
+<li>For exported types, only use <code style="white-space: normal">BOOST_CLASS_EXPORT_IMPLEMENT</code>
+in definitions compiled in the library. For any particular type,
+there should be only one file which contains
+<code style="white-space: normal">BOOST_CLASS_EXPORT_IMPLEMENT</code>
+for that type. This ensures that only one copy
+of serialization code will exist within the program. It avoids
+wasted space and the possibility of having different
+versions of the serialization code in the same program.
+Including
+<code style="white-space: normal">BOOST_CLASS_EXPORT_IMPLEMENT</code>
+in multiple files could result in a failure
+to link due to duplicated symbols or the throwing
+of a runtime exception.
+<li> Code for serialization should be only in the library,
+<li>Familiarize yourself with the <b>PIMPL</b> idiom.
+</ul>
+This is illustrated by
 <a href = "../example/demo_pimpl.cpp" target="demo_pimpl">
 <code style="white-space: normal">demo_pimpl.cpp</code>
 </a>,
@@ -409,8 +419,14 @@
 where implementation of serializaton is in a static library
 completely separate from the main program.
 
+<h3><a name="dlls">DLLS - Serialization and Runtime Linking</a></h3>
+Serialization code can be placed in libraries to be linked at runtime. That is,
+code can be placed in DLLS(Windows) Shared Libraries(*nix), or static libraries
+as well as the main executable. The best technique is the
+same as that described above for libraries. The serialization
+library test suite includes the following programs
+to illustrate how this works:
 <p>
-For runtime linked libraries this is illustrated by one of the tests:
 
 <a href = "../test/test_dll_simple.cpp" target="test_dll_simple">
 <code style="white-space: normal">test_dll_simple</code>
@@ -424,6 +440,17 @@
 example, this code is loaded automatically when the program which
 uses it starts up, but it could just as well be loaded and unloaded
 with an OS dependent API call.
+<p>
+Also included are
+<a href = "../test/test_dll_exported.cpp" target="test_dll_exported">
+<code style="white-space: normal">test_dll_exported.cpp</code>
+</a>,
+and
+<a href = "../test/polymorphic_derived2.cpp" target="polymorphic_derived2">
+<code style="white-space: normal">polymorphic_derived2.cpp</code>
+</a>
+which are similar to the above but include tests of the export
+and no_rtti facilities in the context of DLLS.
 
 <h3><a name="plugins">Plugins</a></h3>
 In order to implement the library, various facilities for runtime

Modified: branches/release/libs/serialization/doc/traits.html
==============================================================================
--- branches/release/libs/serialization/doc/traits.html (original)
+++ branches/release/libs/serialization/doc/traits.html 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -1,4 +1,4 @@
-<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <!--
 (C) Copyright 2002-4 Robert Ramey - http://www.rrsd.com .
@@ -33,7 +33,9 @@
   <dt>Abstract
   <dt>Type Information Implementation
   <dt>Wrappers
+ <dt>Bitwise Serialization
   <dt>Template Serialization Traits
+ <dt>Compile Time Warnings and Errors
 </dl>
 Serialization of data depends on the type of the data. For example, for
 primitive types such as an <code style="white-space: normal">int</code>, it wouldn't make sense to save
@@ -202,13 +204,23 @@
 situation is demonstrated by
 <a href="../test/test_diamond.cpp" target="test_diamond_cpp">test_diamond.cpp</a>
 included with the library.
+
 <h3><a name="export">Export Key</a></h3>
-When serializing a derived class through a base class pointer, it
-may be convenient to define an external name by which the
-derived class can be identified.
-<i>(<a target="detail" href="special.html#derivedpointers">Elsewhere</a>
-in this manual, the
-serialization of derived classes is addressed in detail.)</i>
+
+When serializing a derived class through a virtual base class pointer,
+two issues may arise.
+<ul>
+<li> The code in the derived class might never be explicitly
+referred to. Such code will never be instantiated.
+<p>
+This is addressed by invoking
+<code style="white-space: normal">BOOST_CLASS_EXPORT_IMPLEMENT(T)</code>
+in the file which defines (implements) the class T.
+This ensures that code for the derived class T will
+be explicity instantiated.
+<li> There needs to be some sort of identifier which can
+be used to select the code to be invoked when the object
+is loaded.
 Standard C++ does implement <code style="white-space: normal">typeid()</code> which can be
 used to return a unique string for the class. This is not entirely
 statisfactory for our purposes for the following reasons:
@@ -222,26 +234,36 @@
   <li>There might be classes with different names that we want to
   consider equivalent for purposes of of serialization.
 </ul>
-So the header file
-export.hpp
-includes macro definitions to specify the external string used
-to identify the class.
-<i>(<b>GUID</b> stands for <b>G</b>lobally <b>U</b>nique <b>ID</b>entfier.)</i>
-<pre><code>
-BOOST_CLASS_EXPORT_GUID(my_class, "my_class_external_identifier")
-</code></pre>
+<p>
+So in the serialization library, this is addressed by invoking
+<code style="white-space: normal">BOOST_CLASS_EXPORT_KEY2(my_class, "my_class_external_identifier")</code>
+in the header file which declares he class.
 In a large majority of applications, the class name works just fine
 for the external identifier string so the following short cut is
-defined
-<pre><code>
-BOOST_CLASS_EXPORT(my_class)
-</code></pre>
-which expands to:
-<pre><code>
-BOOST_CLASS_EXPORT_GUID(my_class, "my_class")
-</code></pre>
-If the an external name is required somewhere in the program and none
-has been assigned, a static assertion will be invoked.
+defined -
+<code style="white-space: normal">BOOST_CLASS_EXPORT_KEY(my_class)</code>.
+</ul>
+For programs which consist of only one module - that is
+programs which do not use DLLS, one can specify
+<code style="white-space: normal">BOOST_CLASS_EXPORT(my_class)</code>
+or
+<code style="white-space: normal">BOOST_CLASS_EXPORT_GUID(my_class, "my_class_external_identifier")</code>
+in either he declaration header or definition. These macros
+expand to invocation of the of both of the macros described above.
+<i>(<b>GUID</b> stands for <b>G</b>lobally <b>U</b>nique <b>ID</b>entfier.)</i>
+<p>
+<i>(<a target="detail" href="special.html#export">Elsewhere</a>
+in this manual, the serialization of derived classes is addressed in detail.)</i>
+<p>
+The header file
+export.hpp
+contains all macro definitions described here.
+The library will throw a runtime exception if
+<ul>
+<li> A type not explicitly referred to is not exported.
+<li> Serialization code for the same type is instantiated
+in more than one module (or DLL).
+</ul>
 
 <h3><a name="abstract">Abstract</a></h3>
 When serializing an object through a pointer to its base class,
@@ -353,7 +375,30 @@
 </code></pre>
 which expands to the code above.
 
+<h3><a name="bitwise">Bitwise Serialization</a></h3>
+Some simple classes could be serialized just by directly copying all bits
+of the class. This is, in particular, the case for POD data types containing
+no pointer members, and which are neither versioned nor tracked. Some archives,
+such as non-portable binary archives can make us of this information to
+substantially speed up serialization.
 
+To indicate the possibility of bitwise serialization the type trait defined
+in the header
+file is_bitwise_serializable.hpp
+is used:
+<pre><code>
+namespace boost { namespace serialization {
+ template<class T>
+ struct is_bitwise_serializable
+ : public is_arithmetic<T>
+ {};
+} }
+</code></pre>
+is used, and can be specialized for other classes. The specialization
+is made easy by the corresponding macro:
+<pre><code>
+BOOST_IS_BITWISE_SERIALIZABLE(my_class)
+</code></pre>
 
 <h3><a name="templates">Template Serialization Traits</a></h3>
 In some instances it might be convenient to assign serialization traits
@@ -468,30 +513,290 @@
 <tr><td><code>IsWrapper</code></td><td><code></code>is the type a wrapper?</td><td><code>mpl::false_<br>mpl::true_</code></td><td><code>mpl::false_</code></td></tr>
 </table>
 
-<h3><a name="tracking">Bitwise serialization</a></h3>
-Some simple classes could be serialized just by directly copying all bits
-of the class. This is, in particular, the case for POD data types containing
-no pointer members, and which are neither versioned nor tracked. Some archives,
-such as non-portable binary archives can make us of this information to
-substantially speed up serialization.
+<h3><a name="compiletime_messages">Compile Time Warnings and Errors</a></h3>
+Some serialization traits can conflict with other ones. Sometimes these conflicts
+will result in erroneous behavior (E.G. creating of archives which could not be read)
+and other times they represent a probable misconception on the part of the
+library user which could result in suprising behavior. The extent possible,
+these conflicts are detected at compile time and errors (BOOST_STATIC_ASSERT)
+or warnings (BOOST_STATIC_WARNING) are generated. The are generated in a
+compiler dependent way manner which should show an chain of instantiation
+to the point where the error/warning is detected. Without this capability,
+it would be very hard to track down errors or unexpected behavior in library
+usage. Here is list of the conflicts trapped:
+
+<dl>
+<dt><h2><a name="object_level">object_level</a> - error</h2></dt>
+<dd>
+This error traps attempts to serialize types whose
+implentation level is set to non_serializable.
+</dd>
+<dt><h2><a name="object_versioning">object_versioning</a> - error</h2></dt>
+<dd>
+It's possible that for efficiency reasons, a type can be
+assigned a serialization level which doesn't include type information
+in the archive. This would preclude the assignment
+of a new version number to the type. This error
+traps attempts to assign a version number in this case.
+This has to be a user error.
+</dd>
+
+<dt><h2><a name="object_tracking">object_tracking</a> - warning</h2></dt>
+<dd>
+The following code will display a message when compiled:
+
+<code style="white-space: normal"><pre>
+T t;
+ar &lt;&lt; t;
+</pre></code>
+
+unless the tracking_level serialization trait is set to "track_never". The following
+will compile without problem:
+
+<code style="white-space: normal"><pre>
+const T t
+ar &lt;&lt; t;
+</pre></code>
+
+Likewise, the following code will trap at compile time:
+
+<code style="white-space: normal"><pre>
+T * t;
+ar >> t;
+</pre></code>
+
+if the tracking_level serialization trait is set to "track_never".
+<p>
+
+The following case illustrates the function of this message.
+It was originally used as an example in the
+mailing list by Peter Dimov.
+
+<code style="white-space: normal"><pre>
+class construct_from
+{
+ ...
+};
+
+void main(){
+ ...
+ Y y;
+ construct_from x(y);
+ ar &lt;&lt; x;
+}
+</pre></code>
+
+Suppose that the above message is not displayed and the code is used as is.
+<ol>
+ <li>this example compiles and executes fine. No tracking is done because
+ construct_from has never been serialized through a pointer. Now some time
+ later, the next programmer(2) comes along and makes an enhancement. He
+ wants the archive to be sort of a log.
+
+<code style="white-space: normal"><pre>
+void main(){
+ ...
+ Y y;
+ construct_from x(y);
+ ar &lt;&lt; x;
+ ...
+ x.f(); // change x in some way
+ ...
+ ar &lt;&lt; x
+}
+</pre></code>
+ <p>
+ Again no problem. He gets two different of copies in the archive, each one is different.
+ That is he gets exactly what he expects and is naturally delighted.
+ <p>
+ <li>Now sometime later, a third programmer(3) sees construct_from and says -
+ oh cool, just what I need. He writes a function in a totally disjoint
+ module. (The project is so big, he doesn't even realize the existence of
+ the original usage) and writes something like:
+
+<code style="white-space: normal"><pre>
+class K {
+ shared_ptr &lt;construct_from&gt; z;
+ template &lt;class Archive&gt;
+ void serialize(Archive & ar, const unsigned version){
+ ar &lt;&lt; z;
+ }
+};
+</pre></code>
+
+ <p>
+ He builds and runs the program and tests his new functionality. It works
+ great and he's delighted.
+ <p>
+ <li>Things continue smoothly as before. A month goes by and it's
+ discovered that when loading the archives made in the last month (reading the
+ log). Things don't work. The second log entry is always the same as the
+ first. After a series of very long and increasingly acrimonius email exchanges,
+its discovered
+ that programmer (3) accidently broke programmer(2)'s code .This is because by
+ serializing via a pointer, the "log" object now being tracked. This is because
+ the default tracking behavior is "track_selectively". This means that class
+ instances are tracked only if they are serialized through pointers anywhere in
+ the program. Now multiple saves from the same address result in only the first one
+ being written to the archive. Subsequent saves only add the address - even though the
+ data might have been changed. When it comes time to load the data, all instances of the log record show the same data.
+ In this way, the behavior of a functioning piece of code is changed due the side
+ effect of a change in an otherwise disjoint module.
+ Worse yet, the data has been lost and cannot not be now recovered from the archives.
+ People are really upset and disappointed with boost (at least the serialization system).
+ <p>
+ <li>
+ After a lot of investigation, it's discovered what the source of the problem
+ and class construct_from is marked "track_never" by including:
+<code style="white-space: normal"><pre>
+BOOST_CLASS_TRACKING(construct_from, track_never)
+</pre></code>
+ <li>Now everything works again. Or - so it seems.
+ <p>
+ <li><code style="white-space: normal">shared_ptr&lt;construct_from&gt;</code>
+is not going to have a single raw pointer shared amongst the instances. Each loaded
+<code style="white-space: normal">shared_ptr&lt;construct_from&gt;</code> is going to
+have its own distinct raw pointer. This will break
+<code style="white-space: normal">shared_ptr</code> and cause a memory leak. Again,
+The cause of this problem is very far removed from the point of discovery. It could
+well be that the problem is not even discovered until after the archives are loaded.
+Now we not only have difficult to find and fix program bug, but we have a bunch of
+invalid archives and lost data.
+</ol>
+
+<p>Now consider what happens when the message is displayed:
+
+<ol>
+ <p>
+ <li>Right away, the program traps at
+<code style="white-space: normal"><pre>
+ar &lt;&lt; x;
+</pre></code>
+ <p>
+ <li>The programmer curses (another %^&*&* hoop to jump through). If he's in a
+ hurry (and who isn't) and would prefer not to <code style="white-space: normal">const_cast</code>
+ - because it looks bad. So he'll just make the following change an move on.
+<code style="white-space: normal"><pre>
+Y y;
+const construct_from x(y);
+ar &lt;&lt; x;
+</pre></code>
+ <p>
+ Things work fine and he moves on.
+ <p>
+ <li>Now programer (2) wants to make his change - and again another
+ annoying const issue;
+<code style="white-space: normal"><pre>
+Y y;
+const construct_from x(y);
+...
+x.f(); // change x in some way ; compile error f() is not const
+...
+ar &lt;&lt; x
+</pre></code>
+ <p>
+ He's mildly annoyed now he tries the following:
+ <ul>
+ <li>He considers making f() a const - but presumable that shifts the const
+ error to somewhere else. And his doesn't want to fiddle with "his" code to
+ work around a quirk in the serializaition system
+ <p>
+ <li>He removes the <code style="white-space: normal">const</code>
+ from <code style="white-space: normal">const construct_from</code> above - damn now he
+ gets the trap. If he looks at the comment code where the
+ <code style="white-space: normal">BOOST_STATIC_ASSERT</code>
+ occurs, he'll do one of two things
+ <ol>
+ <p>
+ <li>This is just crazy. Its making my life needlessly difficult and flagging
+ code that is just fine. So I'll fix this with a <code style="white-space: normal">const_cast</code>
+ and fire off a complaint to the list and mabe they will fix it.
+ In this case, the story branches off to the previous scenario.
+ <p>
+ <li>Oh, this trap is suggesting that the default serialization isn't really
+ what I want. Of course in this particular program it doesn't matter. But
+ then the code in the trap can't really evaluate code in other modules (which
+ might not even be written yet). OK, I'll add the following to my
+ construct_from.hpp to solve the problem.
+<code style="white-space: normal"><pre>
+BOOST_CLASS_TRACKING(construct_from, track_never)
+</pre></code>
+ </ol>
+ </ul>
+ <p>
+ <li>Now programmer (3) comes along and make his change. The behavior of the
+ original (and distant module) remains unchanged because the
+ <code style="white-space: normal">construct_from</code> trait has been set to
+ "track_never" so he should always get copies and the log should be what we expect.
+ <p>
+ <li>But now he gets another trap - trying to save an object of a
+ class marked "track_never" through a pointer. So he goes back to
+ construct_from.hpp and comments out the
+ <code style="white-space: normal">BOOST_CLASS_TRACKING</code> that
+ was inserted. Now the second trap is avoided, But damn - the first trap is
+ popping up again. Eventually, after some code restructuring, the differing
+ requirements of serializating <code style="white-space: normal">construct_from</code>
+ are reconciled.
+</ol>
+Note that in this second scenario
+<ul>
+ <li>all errors are trapped at compile time.
+ <li>no invalid archives are created.
+ <li>no data is lost.
+ <li>no runtime errors occur.
+</ul>
 
-To indicate the possibility of bitwise serialization the type trait defined
-in the header
-file is_bitwise_serializable.hpp
-is used:
-<pre><code>
-namespace boost { namespace serialization {
- template<class T>
- struct is_bitwise_serializable
- : public is_arithmetic<T>
- {};
-} }
-</code></pre>
-is used, and can be specialized for other classes. The specialization
-is made easy by the corresponding macro:
-<pre><code>
-BOOST_IS_BITWISE_SERIALIZABLE(my_class)
-</code></pre>
+It's true that these messages may sometimes flag code that is currently correct and
+that this may be annoying to some programmers. However, this example illustrates
+my view that these messages are useful and that any such annoyance is small price to
+pay to avoid particularly vexing programming errors.
+
+</dd>
+
+<dt><h2><a name="pointer_level">pointer_level</a> - warning</h2></dt>
+<dd>
+This trap addresses the following situaion when serializing
+a pointer:
+<ul>
+<li>A type doesn't save class information in the
+archive. That is, the serialization trait implementation
+level <= object_serializable.
+<li>Tracking for this type is set to "track selectively"
+in this case, indication that an object is tracked is
+not stored in the archive itself - see level == object_serializable.
+Since class information is not saved in the archive, the existence
+or absense of the operation ar << T * anywhere else in the
+program is used to infer that an object of this type should be tracked.
+<p>
+A problem arises when a program which reads an archive
+includes the operation ar >> T * so that tracking information
+will be included in the archive. When a program which
+creates the archive doesn't include ar << T it is presumed
+that the archive doesn't include tracking information and
+the archive will fail to load. Also the reverse situation could
+trigger a similar problem.
+<p>
+Though this situation is unlikely for several reasones,
+it is possible - hence this warning.
+</ul>
+So if your program traps here, consider changing the
+tracking or implementation level traits - or not
+serializing via a pointer.
+</dd>
+
+<dt><h2><a name="pointer_tracking">pointer_tracking</a> - warning</h2></dt>
+<dd>
+Serializing an object of a type marked "track_never" through a pointer
+could result in creating more objects than were saved! There are cases
+in which a user might really want to do this so we leave it as a warning.
+</dd>
+
+<dt><h2><a name="const_loading">const_loading</a> - error</h2></dt>
+<dd>
+One cannot load data into a "const" object unless it's a
+wrapper around some other non-const object.
+</dd>
+</dl>
 
 <hr>
 <p><i>&copy; Copyright Robert Ramey 2002-2004 and Matthias Troyer 2006.

Modified: branches/release/libs/serialization/module.cmake
==============================================================================
--- branches/release/libs/serialization/module.cmake (original)
+++ branches/release/libs/serialization/module.cmake 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -1,3 +1,3 @@
-boost_module(serialization DEPENDS spirit io bind array variant)
-
-# bind is in there because we have a dependency on boost/mem_fn.hpp
+boost_module(serialization DEPENDS spirit io bind array variant)
+
+# bind is in there because we have a dependency on boost/mem_fn.hpp

Modified: branches/release/libs/serialization/src/basic_archive.cpp
==============================================================================
--- branches/release/libs/serialization/src/basic_archive.cpp (original)
+++ branches/release/libs/serialization/src/basic_archive.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -57,10 +57,11 @@
 // 5 - Boost 1.36
 // changed serialization of collections: adding version even for primitive
 // types caused backwards compatibility breaking change in 1.35
+// 6 - Boost 1.41, serializing collection sizes as std::size_t
 
 BOOST_ARCHIVE_DECL(unsigned char)
 BOOST_ARCHIVE_VERSION(){
- return 5;
+ return 6;
 }
 
 } // namespace archive

Modified: branches/release/libs/serialization/src/basic_iarchive.cpp
==============================================================================
--- branches/release/libs/serialization/src/basic_iarchive.cpp (original)
+++ branches/release/libs/serialization/src/basic_iarchive.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -28,11 +28,11 @@
 #include <boost/serialization/throw_exception.hpp>
 #include <boost/serialization/tracking.hpp>
 
-#include <boost/archive/archive_exception.hpp>
-
 #define BOOST_ARCHIVE_SOURCE
 #define BOOST_SERIALIZATION_SOURCE
 
+#include <boost/archive/archive_exception.hpp>
+
 #include <boost/archive/detail/decl.hpp>
 #include <boost/archive/basic_archive.hpp>
 #include <boost/archive/detail/basic_iserializer.hpp>

Modified: branches/release/libs/serialization/src/basic_serializer_map.cpp
==============================================================================
--- branches/release/libs/serialization/src/basic_serializer_map.cpp (original)
+++ branches/release/libs/serialization/src/basic_serializer_map.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -12,7 +12,13 @@
 # pragma warning (disable : 4786) // too long name, harmless warning
 #endif
 
+#include <set>
+#include <utility>
+
 #define BOOST_ARCHIVE_SOURCE
+#include <boost/archive/archive_exception.hpp>
+#include <boost/serialization/throw_exception.hpp>
+
 #include <boost/archive/detail/basic_serializer.hpp>
 #include <boost/archive/detail/basic_serializer_map.hpp>
 
@@ -23,52 +29,59 @@
 namespace archive {
 namespace detail {
 
-// note: We can't implement this as an associative
-// container as such a container might be dependent
-// upon the extended_type_info::m_key which might not
-// be assigned until later. So we use a "slower" method.
-// This not a big deal however as the slower "find" operations
-// operations are only called occasionally:
-// a) At module unloading
-// b) Once per input archive - the value is cached in the archive
-// implemenation.
+bool
+basic_serializer_map::type_info_pointer_compare::operator()(
+ const basic_serializer * lhs, const basic_serializer * rhs
+) const {
+ return *lhs < *rhs;
+}
 
-BOOST_ARCHIVE_DECL(void)
+BOOST_ARCHIVE_DECL(bool)
 basic_serializer_map::insert(const basic_serializer * bs){
- m_map.push_back(bs);
+ // attempt to insert serializer into it's map
+ const std::pair<map_type::iterator, bool> result =
+ m_map.insert(bs);
+ // if this fails, it's because it's been instantiated
+ // in multiple modules - DLLS - a recipe for problems.
+ // So trap this here
+ if(!result.second){
+ boost::serialization::throw_exception(
+ archive_exception(
+ archive_exception::multiple_code_instantiation,
+ bs->get_debug_info()
+ )
+ );
+ }
+ return true;
 }
 
 BOOST_ARCHIVE_DECL(void)
 basic_serializer_map::erase(const basic_serializer * bs){
     map_type::iterator it = m_map.begin();
     map_type::iterator it_end = m_map.end();
- it = std::find(it, it_end, bs);
- if(it != it_end){
- m_map.erase(it);
- }
- else
- assert(false); // this should never occur
-}
 
-class equals {
- const boost::serialization::extended_type_info * m_eti;
-public:
- bool operator()(const basic_serializer * bs) const {
- return *m_eti == bs->get_eti();
+ while(it != it_end){
+ // note item 9 from Effective STL !!! it++
+ if(*it == bs)
+ m_map.erase(it++);
+ else
+ it++;
     }
- equals(const boost::serialization::extended_type_info * eti) :
- m_eti(eti)
- {}
-};
-
-// find the "oldest" matching pointer serializer
+ // note: we can't do this since some of the eti records
+ // we're pointing to might be expired and the comparison
+ // won't work. Leave this as a reminder not to "optimize" this.
+ //it = m_map.find(bs);
+ //assert(it != m_map.end());
+ //if(*it == bs)
+ // m_map.erase(it);
+}
 BOOST_ARCHIVE_DECL(const basic_serializer *)
 basic_serializer_map::find(
     const boost::serialization::extended_type_info & eti
 ) const {
- map_type::const_iterator it = m_map.begin();
- map_type::const_iterator it_end = m_map.end();
- it = std::find_if(it, it_end, equals(& eti));
+ const basic_serializer_arg bs(eti);
+ map_type::const_iterator it;
+ it = m_map.find(& bs);
     assert(it != m_map.end());
     return *it;
 }

Modified: branches/release/libs/serialization/src/extended_type_info.cpp
==============================================================================
--- branches/release/libs/serialization/src/extended_type_info.cpp (original)
+++ branches/release/libs/serialization/src/extended_type_info.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -75,40 +75,39 @@
         assert(false);
         return false;
     };
+ virtual const char * get_debug_info() const {
+ return get_key();
+ }
 public:
     extended_type_info_arg(const char * key) :
- extended_type_info()
- {
- m_key = key;
- }
+ extended_type_info(0, key)
+ {}
+
     ~extended_type_info_arg(){
- m_key = NULL;
     }
 };
 
 } // namespace detail
 
 BOOST_SERIALIZATION_DECL(void)
-extended_type_info::key_register(const char *key) {
- assert(NULL != key);
- m_key = key;
+extended_type_info::key_register() const{
+ if(NULL == get_key())
+ return;
     singleton<detail::ktmap>::get_mutable_instance().insert(this);
 }
 
 BOOST_SERIALIZATION_DECL(void)
-extended_type_info::key_unregister() {
- assert(NULL != m_key);
+extended_type_info::key_unregister() const{
+ if(NULL == get_key())
+ return;
     if(! singleton<detail::ktmap>::is_destroyed()){
         detail::ktmap & x = singleton<detail::ktmap>::get_mutable_instance();
         detail::ktmap::iterator start = x.lower_bound(this);
         detail::ktmap::iterator end = x.upper_bound(this);
- assert(start != end);
-
         // remove entry in map which corresponds to this type
         for(;start != end; ++start){
             if(this == *start){
                 x.erase(start);
- m_key = NULL;
                 break;
             }
         }
@@ -135,19 +134,17 @@
 
 BOOST_SERIALIZATION_DECL(BOOST_PP_EMPTY())
 extended_type_info::extended_type_info(
- const unsigned int type_info_key
+ const unsigned int type_info_key,
+ const char * key
 ) :
     m_this(this, null_deleter()),
     m_type_info_key(type_info_key),
- m_key(NULL)
+ m_key(key)
 {
 }
 
 BOOST_SERIALIZATION_DECL(BOOST_PP_EMPTY())
 extended_type_info::~extended_type_info(){
- if(NULL == m_key)
- return;
- key_unregister();
 }
 
 BOOST_SERIALIZATION_DECL(bool)

Modified: branches/release/libs/serialization/src/extended_type_info_no_rtti.cpp
==============================================================================
--- branches/release/libs/serialization/src/extended_type_info_no_rtti.cpp (original)
+++ branches/release/libs/serialization/src/extended_type_info_no_rtti.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -25,11 +25,13 @@
 
 namespace boost {
 namespace serialization {
-namespace detail {
+namespace no_rtti_system {
 
 BOOST_SERIALIZATION_DECL(BOOST_PP_EMPTY())
-extended_type_info_no_rtti_0::extended_type_info_no_rtti_0() :
- extended_type_info(EXTENDED_TYPE_INFO_NO_RTTI_KEY)
+extended_type_info_no_rtti_0::extended_type_info_no_rtti_0(
+ const char * key
+) :
+ extended_type_info(EXTENDED_TYPE_INFO_NO_RTTI_KEY, key)
 {}
 
 BOOST_SERIALIZATION_DECL(bool)
@@ -39,7 +41,7 @@
     // shortcut for common case
     if(this == & rhs)
         return false;
- const char * l = m_key;
+ const char * l = get_key();
     const char * r = rhs.get_key();
     // if this assertion is triggered, it could mean one of the following
     // a) This class was never exported - make sure all calls which use
@@ -63,14 +65,14 @@
     if(this == & rhs)
         return true;
     // null keys don't match with anything
- const char * l = m_key;
- //assert(NULL != l);
+ const char * l = get_key();
+ assert(NULL != l);
     if(NULL == l)
         return false;
     const char * r = rhs.get_key();
+ assert(NULL != r);
     if(NULL == r)
         return false;
- assert(NULL != r);
     return 0 == std::strcmp(l, r);
 }
 

Modified: branches/release/libs/serialization/src/extended_type_info_typeid.cpp
==============================================================================
--- branches/release/libs/serialization/src/extended_type_info_typeid.cpp (original)
+++ branches/release/libs/serialization/src/extended_type_info_typeid.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -24,7 +24,7 @@
 
 namespace boost {
 namespace serialization {
-namespace detail {
+namespace typeid_system {
 
 #define EXTENDED_TYPE_INFO_TYPE_KEY 1
 
@@ -70,8 +70,10 @@
 }
 
 BOOST_SERIALIZATION_DECL(BOOST_PP_EMPTY())
-extended_type_info_typeid_0::extended_type_info_typeid_0() :
- extended_type_info(EXTENDED_TYPE_INFO_TYPE_KEY),
+extended_type_info_typeid_0::extended_type_info_typeid_0(
+ const char * key
+) :
+ extended_type_info(EXTENDED_TYPE_INFO_TYPE_KEY, key),
     m_ti(NULL)
 {}
 
@@ -112,7 +114,9 @@
     public extended_type_info_typeid_0
 {
 public:
- extended_type_info_typeid_arg(const std::type_info & ti){
+ extended_type_info_typeid_arg(const std::type_info & ti) :
+ extended_type_info_typeid_0(NULL)
+ {
         // note absense of self register and key as this is used only as
         // search argument given a type_info reference and is not to
         // be added to the map.
@@ -127,7 +131,7 @@
 extended_type_info_typeid_0::get_extended_type_info(
     const std::type_info & ti
 ) const {
- detail::extended_type_info_typeid_arg etia(ti);
+ typeid_system::extended_type_info_typeid_arg etia(ti);
     const tkmap & t = singleton<tkmap>::get_const_instance();
     const tkmap::const_iterator it = t.find(& etia);
     if(t.end() == it)

Modified: branches/release/libs/serialization/src/polymorphic_oarchive.cpp
==============================================================================
--- branches/release/libs/serialization/src/polymorphic_oarchive.cpp (original)
+++ branches/release/libs/serialization/src/polymorphic_oarchive.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -14,8 +14,6 @@
 
 #define BOOST_ARCHIVE_SOURCE
 #include <boost/archive/detail/archive_serializer_map.hpp>
-#define BOOST_ARCHIVE_SOURCE
-#include <boost/archive/detail/archive_serializer_map.hpp>
 
 #include <boost/archive/impl/archive_serializer_map.ipp>
 #include <boost/archive/polymorphic_oarchive.hpp>

Modified: branches/release/libs/serialization/src/void_cast.cpp
==============================================================================
--- branches/release/libs/serialization/src/void_cast.cpp (original)
+++ branches/release/libs/serialization/src/void_cast.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -15,6 +15,9 @@
 
 #include <cassert>
 #include <cstddef> // NULL
+#ifdef BOOST_SERIALIZATION_LOG
+#include <iostream>
+#endif
 
 // STL
 #include <set>
@@ -190,6 +193,14 @@
     void_cast_detail::set_type & s
         = void_cast_detail::void_caster_registry::get_mutable_instance();
 
+ #ifdef BOOST_SERIALIZATION_LOG
+ std::clog << "recursive_register\n";
+ std::clog << m_derived->get_debug_info();
+ std::clog << "<-";
+ std::clog << m_base->get_debug_info();
+ std::clog << "\n";
+ #endif
+
     s.insert(this);
 
     // generate all implied void_casts.

Modified: branches/release/libs/serialization/test/Jamfile.v2
==============================================================================
--- branches/release/libs/serialization/test/Jamfile.v2 (original)
+++ branches/release/libs/serialization/test/Jamfile.v2 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -83,9 +83,7 @@
      [ test-bsl-run_files test_mi ]
      [ test-bsl-run_files test_multiple_ptrs : A ]
      [ test-bsl-run_files test_multiple_inheritance ]
- [ test-bsl-run_files test_no_rtti
- : polymorphic_base polymorphic_derived1
- ]
+ [ test-bsl-run_files test_no_rtti : polymorphic_base polymorphic_derived1 ]
      [ test-bsl-run_files test_non_intrusive ]
      [ test-bsl-run_files test_non_default_ctor ]
      [ test-bsl-run_files test_non_default_ctor2 ]
@@ -144,6 +142,7 @@
         [ compile-fail test_const_load_fail1_nvp.cpp ]
         [ compile-fail test_const_load_fail2_nvp.cpp ]
         [ compile-fail test_const_load_fail3_nvp.cpp ]
+ [ compile-fail test_check.cpp ]
 
         # should compile with a warning message
         [ compile test_static_warning.cpp ]

Modified: branches/release/libs/serialization/test/polymorphic_base.cpp
==============================================================================
--- branches/release/libs/serialization/test/polymorphic_base.cpp (original)
+++ branches/release/libs/serialization/test/polymorphic_base.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -11,7 +11,7 @@
 #include <boost/serialization/export.hpp>
 #include "polymorphic_base.hpp"
 
-BOOST_CLASS_EXPORT(polymorphic_base)
+BOOST_CLASS_EXPORT_IMPLEMENT(polymorphic_base)
 
 const char * polymorphic_base::get_key() const{
     return

Modified: branches/release/libs/serialization/test/polymorphic_base.hpp
==============================================================================
--- branches/release/libs/serialization/test/polymorphic_base.hpp (original)
+++ branches/release/libs/serialization/test/polymorphic_base.hpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -17,6 +17,8 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <boost/serialization/access.hpp>
+#include <boost/serialization/assume_abstract.hpp>
+#include <boost/serialization/export.hpp>
 #include <boost/serialization/type_info_implementation.hpp>
 #include <boost/serialization/extended_type_info_no_rtti.hpp>
 
@@ -38,6 +40,9 @@
 
 BOOST_SERIALIZATION_ASSUME_ABSTRACT(polymorphic_base)
 
+// the no_rtti system requires this !!!
+BOOST_CLASS_EXPORT_KEY(polymorphic_base)
+
 BOOST_CLASS_TYPE_INFO(
     polymorphic_base,
     boost::serialization::extended_type_info_no_rtti<polymorphic_base>

Modified: branches/release/libs/serialization/test/polymorphic_derived1.cpp
==============================================================================
--- branches/release/libs/serialization/test/polymorphic_derived1.cpp (original)
+++ branches/release/libs/serialization/test/polymorphic_derived1.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -9,16 +9,15 @@
 // See http://www.boost.org for updates, documentation, and revision history.
 
 #include <boost/serialization/type_info_implementation.hpp>
-#include <boost/serialization/extended_type_info_no_rtti.hpp>
 #include <boost/serialization/export.hpp>
 
 #include "polymorphic_derived1.hpp"
 
 const char * polymorphic_derived1::get_key() const {
- return
+ return
         boost::serialization::type_info_implementation<
             polymorphic_derived1
>::type::get_const_instance().get_key();
 }
 
-BOOST_CLASS_EXPORT(polymorphic_derived1)
+BOOST_CLASS_EXPORT_IMPLEMENT(polymorphic_derived1)

Modified: branches/release/libs/serialization/test/polymorphic_derived1.hpp
==============================================================================
--- branches/release/libs/serialization/test/polymorphic_derived1.hpp (original)
+++ branches/release/libs/serialization/test/polymorphic_derived1.hpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -23,6 +23,7 @@
 #include <boost/serialization/extended_type_info_no_rtti.hpp>
 
 #include "polymorphic_base.hpp"
+
 class polymorphic_derived1 : public polymorphic_base
 {
     friend class boost::serialization::access;
@@ -34,6 +35,8 @@
     virtual const char * get_key() const ;
 };
 
+BOOST_CLASS_EXPORT_KEY(polymorphic_derived1)
+
 BOOST_CLASS_TYPE_INFO(
     polymorphic_derived1,
     extended_type_info_no_rtti<polymorphic_derived1>

Modified: branches/release/libs/serialization/test/polymorphic_derived2.cpp
==============================================================================
--- branches/release/libs/serialization/test/polymorphic_derived2.cpp (original)
+++ branches/release/libs/serialization/test/polymorphic_derived2.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -45,7 +45,7 @@
 BOOST_SERIALIZATION_MWERKS_BASE_AND_DERIVED(polymorphic_base, polymorphic_derived2)
 
 // note: export has to be AFTER #includes for all archive classes
-BOOST_CLASS_EXPORT(polymorphic_derived2)
+BOOST_CLASS_EXPORT_IMPLEMENT(polymorphic_derived2)
 
 // export plug-in not yet working !!!
 #if 0

Modified: branches/release/libs/serialization/test/polymorphic_derived2.hpp
==============================================================================
--- branches/release/libs/serialization/test/polymorphic_derived2.hpp (original)
+++ branches/release/libs/serialization/test/polymorphic_derived2.hpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -1,5 +1,5 @@
-#ifndef DERIVED2_HPP
-#define DERIVED2_HPP
+#ifndef POLYMORPHIC_DERIVED2_HPP
+#define POLYMORPHIC_DERIVED2_HPP
 
 // MS compatible compilers support #pragma once
 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
@@ -51,6 +51,13 @@
     }
 };
 
+// we use this because we want to assign a key to this type
+// but we don't want to explicitly instantiate code every time
+// we do so!!!. If we don't do this, we end up with the same
+// code in BOTH the DLL which implements polymorphic_derived2
+// as well as the main program.
+BOOST_CLASS_EXPORT_KEY(polymorphic_derived2)
+
 // note the mixing of type_info systems is supported.
 BOOST_CLASS_TYPE_INFO(
     polymorphic_derived2,
@@ -59,5 +66,5 @@
 
 #undef DLL_DECL
 
-#endif // DERIVED2_HPP
+#endif // POLYMORPHIC_DERIVED2_HPP
 

Modified: branches/release/libs/serialization/test/test_binary.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_binary.cpp (original)
+++ branches/release/libs/serialization/test/test_binary.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -76,20 +76,36 @@
     char s1_3[10];
     char s1_4[10];
     int i1 = 34790;
- {
+ {
         test_ostream os(testfile, TEST_STREAM_FLAGS);
         test_oarchive oa(os, TEST_ARCHIVE_FLAGS);
         boost::serialization::make_nvp(
- "s1", boost::serialization::make_binary_object(s1, sizeof(s1))
+ "s1",
+ boost::serialization::make_binary_object(
+ s1,
+ sizeof(s1)
+ )
         );
         oa << boost::serialization::make_nvp(
- "s2", boost::serialization::make_binary_object(s2, sizeof(s2))
+ "s2",
+ boost::serialization::make_binary_object(
+ s2,
+ sizeof(s2)
+ )
         );
         oa << boost::serialization::make_nvp(
- "s3", boost::serialization::make_binary_object(s3, sizeof(s3))
+ "s3",
+ boost::serialization::make_binary_object(
+ s3,
+ sizeof(s3)
+ )
         );
         oa << boost::serialization::make_nvp(
- "s4", boost::serialization::make_binary_object(s4, sizeof(s4))
+ "s4",
+ boost::serialization::make_binary_object(
+ s4,
+ sizeof(s4)
+ )
         );
         oa << BOOST_SERIALIZATION_NVP(a);
         // note: add a little bit on the end of the archive to detect
@@ -100,16 +116,32 @@
         test_istream is(testfile, TEST_STREAM_FLAGS);
         test_iarchive ia(is, TEST_ARCHIVE_FLAGS);
         boost::serialization::make_nvp(
- "s1", boost::serialization::make_binary_object(s1_1, sizeof(s1))
+ "s1",
+ boost::serialization::make_binary_object(
+ s1_1,
+ sizeof(s1)
+ )
         );
         ia >> boost::serialization::make_nvp(
- "s2", boost::serialization::make_binary_object(s1_2, sizeof(s2))
+ "s2",
+ boost::serialization::make_binary_object(
+ s1_2,
+ sizeof(s2)
+ )
         );
         ia >> boost::serialization::make_nvp(
- "s3", boost::serialization::make_binary_object(s1_3, sizeof(s3))
+ "s3",
+ boost::serialization::make_binary_object(
+ s1_3,
+ sizeof(s3)
+ )
         );
         ia >> boost::serialization::make_nvp(
- "s4", boost::serialization::make_binary_object(s1_4, sizeof(s4))
+ "s4",
+ boost::serialization::make_binary_object(
+ s1_4,
+ sizeof(s4)
+ )
         );
         ia >> BOOST_SERIALIZATION_NVP(a1);
         // note: add a little bit on the end of the archive to detect

Modified: branches/release/libs/serialization/test/test_class_info_save.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_class_info_save.cpp (original)
+++ branches/release/libs/serialization/test/test_class_info_save.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -42,6 +42,7 @@
 BOOST_CLASS_TRACKING(A, ::boost::serialization::track_never)
 
 // second case : serialize WITH class information
+// note: GCC compile fails if this is after the class declaration
 class B;
 BOOST_CLASS_VERSION(B, 2)
 
@@ -79,7 +80,6 @@
     std::cout << "b.count=" << b.count << '\n' ;
 }
 
-
 int
 test_main( int /* argc */, char* /* argv */[] )
 {

Modified: branches/release/libs/serialization/test/test_complex.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_complex.cpp (original)
+++ branches/release/libs/serialization/test/test_complex.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -19,7 +19,9 @@
 #if defined(BOOST_NO_STDC_NAMESPACE)
 namespace std{
     using ::remove;
+#ifndef UNDER_CE
     using ::numeric_limits;
+#endif
 }
 #endif
 

Modified: branches/release/libs/serialization/test/test_derived.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_derived.cpp (original)
+++ branches/release/libs/serialization/test/test_derived.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -31,6 +31,8 @@
     template<class Archive>
     void serialize(Archive & /* ar */, const unsigned int /* file_version */){
     }
+protected:
+ virtual ~base(){};
 };
 
 class derived1 : public base
@@ -105,6 +107,10 @@
     base *b1 = NULL;
     base *b2 = NULL;
     
+ // note: this will produce incorrect results for non-polymorphic classes
+ ia >> BOOST_SERIALIZATION_NVP(b1);
+ ia >> BOOST_SERIALIZATION_NVP(b2);
+
     // Warning, the current type id system does not yield true
     // type id for non-polymorphic types
     const boost::serialization::extended_type_info & this_type
@@ -120,9 +126,8 @@
         "current type id system does fails for non-polymorphic types"
     );
 
- // note: this will produce incorrect results for non-polymorphic classes
- ia >> BOOST_SERIALIZATION_NVP(b1);
- ia >> BOOST_SERIALIZATION_NVP(b2);
+ BOOST_CHECK(b1 == static_cast<base *>(d1));
+ BOOST_CHECK(b2 == static_cast<base *>(d2));
 
     delete d1;
     delete d2;

Modified: branches/release/libs/serialization/test/test_dll_exported.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_dll_exported.cpp (original)
+++ branches/release/libs/serialization/test/test_dll_exported.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -43,7 +43,6 @@
 
 #include <boost/serialization/base_object.hpp>
 #include <boost/serialization/export.hpp>
-#include <boost/serialization/type_info_implementation.hpp>
 #include <boost/serialization/access.hpp>
 
 #include "polymorphic_base.hpp"
@@ -62,11 +61,11 @@
     virtual ~polymorphic_derived1(){}
 };
 
+BOOST_CLASS_EXPORT(polymorphic_derived1)
+
 // MWerks users can do this to make their code work
 BOOST_SERIALIZATION_MWERKS_BASE_AND_DERIVED(polymorphic_base, polymorphic_derived1)
 
-BOOST_CLASS_EXPORT(polymorphic_derived1)
-
 #define POLYMORPHIC_DERIVED2_IMPORT
 #include "polymorphic_derived2.hpp"
 

Modified: branches/release/libs/serialization/test/test_exported.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_exported.cpp (original)
+++ branches/release/libs/serialization/test/test_exported.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -24,12 +24,15 @@
 #include <boost/serialization/type_info_implementation.hpp>
 #include <boost/serialization/extended_type_info_typeid.hpp>
 
+#include <boost/serialization/force_include.hpp>
+
 #include <boost/archive/archive_exception.hpp>
 #include "test_tools.hpp"
 
 #include "polymorphic_base.hpp"
 
-class polymorphic_derived1 : public polymorphic_base
+class polymorphic_derived1 :
+ public polymorphic_base
 {
     friend class boost::serialization::access;
     template<class Archive>
@@ -50,7 +53,7 @@
 
 #include "polymorphic_derived2.hpp"
 
-BOOST_CLASS_EXPORT(polymorphic_derived2)
+BOOST_CLASS_EXPORT_IMPLEMENT(polymorphic_derived2)
 
 // MWerks users can do this to make their code work
 BOOST_SERIALIZATION_MWERKS_BASE_AND_DERIVED(polymorphic_base, polymorphic_derived2)

Modified: branches/release/libs/serialization/test/test_no_rtti.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_no_rtti.cpp (original)
+++ branches/release/libs/serialization/test/test_no_rtti.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -30,20 +30,19 @@
 #include <boost/type_traits/is_same.hpp>
 
 #include <boost/archive/archive_exception.hpp>
-#include "test_tools.hpp"
-#include <boost/preprocessor/stringize.hpp>
-#include BOOST_PP_STRINGIZE(BOOST_ARCHIVE_TEST)
 
 #include <boost/serialization/type_info_implementation.hpp>
 #include <boost/serialization/extended_type_info_no_rtti.hpp>
 #include <boost/serialization/export.hpp>
 #include <boost/serialization/nvp.hpp>
 
+#include "test_tools.hpp"
+#include <boost/preprocessor/stringize.hpp>
+#include BOOST_PP_STRINGIZE(BOOST_ARCHIVE_TEST)
+
 #include "polymorphic_base.hpp"
 #include "polymorphic_derived1.hpp"
-
 #include "polymorphic_derived2.hpp"
-BOOST_CLASS_EXPORT(polymorphic_derived2)
 
 template void polymorphic_derived2::serialize(
     test_oarchive & ar,
@@ -65,24 +64,21 @@
 
     std::cout << "saving polymorphic_derived1 (no_rtti)\n";
     oa << BOOST_SERIALIZATION_NVP(rd1);
+
     std::cout << "saving polymorphic_derived2\n";
     oa << BOOST_SERIALIZATION_NVP(rd2);
 
- // the above opereration registers the derived classes as a side
- // effect. Hence, instances can now be correctly serialized through
- // a base class pointer.
- polymorphic_base *rb1 = rd1;
+ const polymorphic_base *rb1 = rd1;
     polymorphic_base *rb2 = rd2;
     std::cout << "saving polymorphic_derived1 (no_rtti) through base (no_rtti)\n";
     oa << BOOST_SERIALIZATION_NVP(rb1);
- std::cout << "saving polymorphic_derived2 through base (no_rtti)\n";
+ std::cout << "saving polymorphic_derived2 through base\n";
     oa << BOOST_SERIALIZATION_NVP(rb2);
 
     delete rd1;
     delete rd2;
 }
 
-// save derived polymorphic class
 void load_derived(const char *testfile)
 {
     test_istream is(testfile, TEST_STREAM_FLAGS);
@@ -93,7 +89,6 @@
 
     std::cout << "loading polymorphic_derived1 (no_rtti)\n";
     ia >> BOOST_SERIALIZATION_NVP(rd1);
-
     BOOST_CHECK_MESSAGE(
         boost::serialization::type_info_implementation<
             polymorphic_derived1
@@ -144,7 +139,6 @@
         ,
         "restored pointer b1 not of correct type"
     );
-
     std::cout << "loading polymorphic_derived2 through base (no_rtti)\n";
     ia >> BOOST_SERIALIZATION_NVP(rb2);
 
@@ -152,7 +146,6 @@
         rb2 == dynamic_cast<polymorphic_base *>(rd2),
         "serialized pointers not correctly restored"
     );
-
     BOOST_CHECK_MESSAGE(
         boost::serialization::type_info_implementation<
             polymorphic_derived2
@@ -164,7 +157,6 @@
         ,
         "restored pointer b2 not of correct type"
     );
-
     delete rb1;
     delete rb2;
 }

Modified: branches/release/libs/serialization/test/test_non_default_ctor.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_non_default_ctor.cpp (original)
+++ branches/release/libs/serialization/test/test_non_default_ctor.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -25,7 +25,9 @@
     using ::rand;
     using ::fabs;
     using ::remove;
+#ifndef UNDER_CE
     using ::numeric_limits;
+#endif
 }
 #endif
 

Modified: branches/release/libs/serialization/test/test_non_intrusive.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_non_intrusive.cpp (original)
+++ branches/release/libs/serialization/test/test_non_intrusive.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -24,7 +24,9 @@
     using ::rand;
     using ::fabs;
     using ::remove;
+#ifndef UNDER_CE
     using ::numeric_limits;
+#endif
 }
 #endif
 

Modified: branches/release/libs/serialization/test/test_shared_ptr.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_shared_ptr.cpp (original)
+++ branches/release/libs/serialization/test/test_shared_ptr.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -23,11 +23,10 @@
 #include <boost/serialization/shared_ptr.hpp>
 #include <boost/serialization/weak_ptr.hpp>
 #include <boost/serialization/nvp.hpp>
+#include <boost/serialization/export.hpp>
 
 #include "test_tools.hpp"
 
-#include <boost/serialization/export.hpp>
-
 // This is a simple class. It contains a counter of the number
 // of objects of this class which have been instantiated.
 class A

Modified: branches/release/libs/serialization/test/test_simple_class_ptr.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_simple_class_ptr.cpp (original)
+++ branches/release/libs/serialization/test/test_simple_class_ptr.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -30,7 +30,7 @@
     
     BOOST_REQUIRE(NULL != testfile);
 
- A *ta = new A();
+ const A *ta = new A();
     A *ta1 = NULL;
 
     {

Modified: branches/release/libs/serialization/test/test_static_warning.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_static_warning.cpp (original)
+++ branches/release/libs/serialization/test/test_static_warning.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -8,10 +8,10 @@
 // note: this is a compile only test.
 
 #include <boost/config.hpp> // BOOST_STATIC_CONST
-#include <boost/serialization/static_warning.hpp>
+#include <boost/static_assert.hpp>
 #include <boost/type_traits/is_polymorphic.hpp>
 
-#pragma warning(disable:4094)
+#include <boost/serialization/static_warning.hpp>
 
 typedef char a1[2];
 typedef char a2[3];
@@ -23,18 +23,14 @@
 class non_polymorphic {
 };
 
-class test_class {
-};
-
-template <class T>
-int f()
-{
+template<class T>
+int f(){
     BOOST_STATIC_WARNING(T::value);
     return 0;
-}
+}
 
 struct A {
- BOOST_STATIC_CONSTANT(bool, value = 0);
+ BOOST_STATIC_CONSTANT(bool, value = false);
 };
 
 /////////////////////////////////////////////////////////////////////////
@@ -44,7 +40,10 @@
 BOOST_STATIC_WARNING(true);
 
 // the following should show 5 warning message
-int x = f<A>();
+int x = f<A>(); // Warn
+int y = f<boost::is_polymorphic<non_polymorphic> >(); // Warn.
+int z = f<boost::is_polymorphic<polymorphic> >();
+
 BOOST_STATIC_WARNING(sizeof(a1) == sizeof(a2)); // Warn.
 BOOST_STATIC_WARNING(sizeof(a1) != sizeof(a1)); // Warn.
 BOOST_STATIC_WARNING(! boost::is_polymorphic<polymorphic>::value); // Warn.
@@ -62,4 +61,3 @@
     BOOST_STATIC_WARNING(boost::is_polymorphic<non_polymorphic>::value); // Warn.
     return 0;
 }
-

Modified: branches/release/libs/serialization/test/test_tracking.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_tracking.cpp (original)
+++ branches/release/libs/serialization/test/test_tracking.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -128,4 +128,3 @@
     return EXIT_SUCCESS;
 }
 
-// EOF

Modified: branches/release/libs/serialization/test/test_utf8_codecvt.cpp
==============================================================================
--- branches/release/libs/serialization/test/test_utf8_codecvt.cpp (original)
+++ branches/release/libs/serialization/test/test_utf8_codecvt.cpp 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -22,7 +22,9 @@
 namespace std{
     using ::size_t;
     using ::wcslen;
+#ifndef UNDER_CE
     using ::w_int;
+#endif
 } // namespace std
 #endif
 

Modified: branches/release/libs/serialization/vc7ide/BoostSerializationLibrary.sln
==============================================================================
--- branches/release/libs/serialization/vc7ide/BoostSerializationLibrary.sln (original)
+++ branches/release/libs/serialization/vc7ide/BoostSerializationLibrary.sln 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -344,6 +344,10 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_check", "test_check.vcproj", "{A7D4CC95-F2AC-11D6-9E47-525400E2CF85}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
 Global
         GlobalSection(SolutionConfiguration) = preSolution
                 Debug = Debug
@@ -6004,8 +6008,8 @@
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-dynamic xml_archive.Build.0 = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-dynamic xml_warchive.ActiveCfg = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-dynamic xml_warchive.Build.0 = Debug|Win32
- {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.ActiveCfg = Debug|Win32
- {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.Build.0 = Debug|Win32
+ {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.ActiveCfg = Debug runtime-static|Win32
+ {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.Build.0 = Debug runtime-static|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static binary_archive.ActiveCfg = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static binary_archive.Build.0 = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static text_archive.ActiveCfg = Debug|Win32
@@ -6964,8 +6968,8 @@
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-dynamic xml_archive.Build.0 = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-dynamic xml_warchive.ActiveCfg = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-dynamic xml_warchive.Build.0 = Debug|Win32
- {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.ActiveCfg = Debug|Win32
- {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.Build.0 = Debug|Win32
+ {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.ActiveCfg = Debug runtime-static|Win32
+ {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.Build.0 = Debug runtime-static|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static binary_archive.ActiveCfg = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static binary_archive.Build.0 = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static text_archive.ActiveCfg = Debug|Win32
@@ -7044,8 +7048,8 @@
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-dynamic xml_archive.Build.0 = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-dynamic xml_warchive.ActiveCfg = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-dynamic xml_warchive.Build.0 = Debug|Win32
- {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.ActiveCfg = Debug|Win32
- {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.Build.0 = Debug|Win32
+ {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.ActiveCfg = Debug runtime-static|Win32
+ {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.Build.0 = Debug runtime-static|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static binary_archive.ActiveCfg = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static binary_archive.Build.0 = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static text_archive.ActiveCfg = Debug|Win32
@@ -7124,8 +7128,8 @@
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-dynamic xml_archive.Build.0 = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-dynamic xml_warchive.ActiveCfg = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-dynamic xml_warchive.Build.0 = Debug|Win32
- {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.ActiveCfg = Debug|Win32
- {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.Build.0 = Debug|Win32
+ {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.ActiveCfg = Debug runtime-static|Win32
+ {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static.Build.0 = Debug runtime-static|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static binary_archive.ActiveCfg = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static binary_archive.Build.0 = Debug|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Debug runtime-static text_archive.ActiveCfg = Debug|Win32
@@ -7188,6 +7192,86 @@
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Release runtime-static xml_archive.Build.0 = Release|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Release runtime-static xml_warchive.ActiveCfg = Release|Win32
                 {CED1BD64-563F-485D-AE69-668797013AA0}.Release runtime-static xml_warchive.Build.0 = Release|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug.ActiveCfg = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug.Build.0 = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic.ActiveCfg = Debug runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic.Build.0 = Debug runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic binary_archive.ActiveCfg = Debug runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic binary_archive.Build.0 = Debug runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic text_archive.ActiveCfg = Debug runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic text_archive.Build.0 = Debug runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic text_warchive.ActiveCfg = Debug runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic text_warchive.Build.0 = Debug runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic threading-multi.ActiveCfg = Debug runtime-dynamic threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic threading-multi.Build.0 = Debug runtime-dynamic threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic xml_archive.ActiveCfg = Debug runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic xml_archive.Build.0 = Debug runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic xml_warchive.ActiveCfg = Debug runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic xml_warchive.Build.0 = Debug runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static.ActiveCfg = Debug runtime-static|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static.Build.0 = Debug runtime-static|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static binary_archive.ActiveCfg = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static binary_archive.Build.0 = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static text_archive.ActiveCfg = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static text_archive.Build.0 = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static text_warchive.ActiveCfg = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static text_warchive.Build.0 = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static threading-multi.ActiveCfg = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static threading-multi.Build.0 = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static threading-multi binary_archive.ActiveCfg = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static threading-multi binary_archive.Build.0 = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static threading-multi text_archive.ActiveCfg = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static threading-multi text_archive.Build.0 = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static threading-multi text_warchive.ActiveCfg = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static threading-multi text_warchive.Build.0 = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static threading-multi xml_archive.ActiveCfg = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static threading-multi xml_archive.Build.0 = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static threading-multi xml_warchive.ActiveCfg = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static threading-multi xml_warchive.Build.0 = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static xml_archive.ActiveCfg = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static xml_archive.Build.0 = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static xml_warchive.ActiveCfg = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-static xml_warchive.Build.0 = Debug runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Default runtime-dynamic.ActiveCfg = Debug runtime-dynamic threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Default runtime-dynamic.Build.0 = Debug runtime-dynamic threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release.ActiveCfg = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release.Build.0 = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-dynamic.ActiveCfg = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-dynamic.Build.0 = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-dynamic binary_archive.ActiveCfg = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-dynamic binary_archive.Build.0 = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-dynamic text_archive.ActiveCfg = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-dynamic text_archive.Build.0 = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-dynamic text_warchive.ActiveCfg = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-dynamic text_warchive.Build.0 = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-dynamic xml_archive.ActiveCfg = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-dynamic xml_archive.Build.0 = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-dynamic xml_warchive.ActiveCfg = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-dynamic xml_warchive.Build.0 = Release runtime-dynamic|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static.ActiveCfg = Release runtime-static|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static.Build.0 = Release runtime-static|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static binary_archive.ActiveCfg = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static binary_archive.Build.0 = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static text_archive.ActiveCfg = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static text_archive.Build.0 = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static text_warchive.ActiveCfg = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static text_warchive.Build.0 = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static threading-multi.ActiveCfg = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static threading-multi.Build.0 = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static threading-multi binary_archive.ActiveCfg = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static threading-multi binary_archive.Build.0 = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static threading-multi text_archive.ActiveCfg = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static threading-multi text_archive.Build.0 = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static threading-multi text_warchive.ActiveCfg = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static threading-multi text_warchive.Build.0 = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static threading-multi xml_archive.ActiveCfg = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static threading-multi xml_archive.Build.0 = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static threading-multi xml_warchive.ActiveCfg = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static threading-multi xml_warchive.Build.0 = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static xml_archive.ActiveCfg = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static xml_archive.Build.0 = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static xml_warchive.ActiveCfg = Release runtime-static threading-multi|Win32
+ {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Release runtime-static xml_warchive.Build.0 = Release runtime-static threading-multi|Win32
                 {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug.ActiveCfg = Debug runtime-static|Win32
                 {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug.Build.0 = Debug runtime-static|Win32
                 {A7D4CC95-F2AC-11D6-9E47-525400E2CF85}.Debug runtime-dynamic.ActiveCfg = Debug runtime-dynamic|Win32

Modified: branches/release/libs/serialization/vc7ide/Library.vcproj
==============================================================================
--- branches/release/libs/serialization/vc7ide/Library.vcproj (original)
+++ branches/release/libs/serialization/vc7ide/Library.vcproj 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -45,7 +45,8 @@
                         <Tool
                                 Name="VCLinkerTool"
                                 OutputFile="$(ConfigurationName)\boost_serialization-vc71-mt-gd-1_39.dll"
- GenerateDebugInformation="TRUE"/>
+ GenerateDebugInformation="TRUE"
+ GenerateMapFile="TRUE"/>
                         <Tool
                                 Name="VCMIDLTool"/>
                         <Tool
@@ -394,13 +395,16 @@
                                 RelativePath="..\..\..\boost\serialization\access.hpp">
                         </File>
                         <File
- RelativePath="..\..\..\boost\serialization\base_object.hpp">
+ RelativePath="..\..\..\boost\archive\archive_exception.hpp">
                         </File>
                         <File
- RelativePath="..\..\..\boost\serialization\export.hpp">
+ RelativePath="..\..\..\boost\serialization\assume_abstract.hpp">
                         </File>
                         <File
- RelativePath="..\..\..\boost\serialization\is_abstract.hpp">
+ RelativePath="..\..\..\boost\serialization\base_object.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\boost\serialization\export.hpp">
                         </File>
                         <File
                                 RelativePath="..\..\..\boost\serialization\level.hpp">
@@ -429,6 +433,12 @@
                         <File
                                 RelativePath="..\..\..\boost\serialization\version.hpp">
                         </File>
+ <File
+ RelativePath="..\..\..\boost\serialization\wrapper.hpp">
+ </File>
+ <File
+ RelativePath="..\..\..\boost\archive\xml_archive_exception.hpp">
+ </File>
                 </Filter>
                 <Filter
                         Name="Serialization Implementations"
@@ -514,9 +524,6 @@
                         <File
                                 RelativePath="..\..\..\boost\serialization\weak_ptr.hpp">
                         </File>
- <File
- RelativePath="..\..\..\boost\serialization\wrapper.hpp">
- </File>
                         <Filter
                                 Name="detail"
                                 Filter="">
@@ -614,6 +621,9 @@
                                 RelativePath="..\..\..\boost\archive\detail\basic_serializer_map.hpp">
                         </File>
                         <File
+ RelativePath="..\..\..\boost\archive\detail\check.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\boost\archive\detail\common_iarchive.hpp">
                         </File>
                         <File
@@ -767,9 +777,6 @@
                         Name="Archive Implementations"
                         Filter="">
                         <File
- RelativePath="..\..\..\boost\archive\archive_exception.hpp">
- </File>
- <File
                                 RelativePath="..\..\..\boost\archive\binary_iarchive.hpp">
                         </File>
                         <File
@@ -812,9 +819,6 @@
                                 RelativePath="..\..\..\boost\archive\text_oarchive.hpp">
                         </File>
                         <File
- RelativePath="..\..\..\boost\archive\xml_archive_exception.hpp">
- </File>
- <File
                                 RelativePath="..\..\..\boost\archive\xml_iarchive.hpp">
                         </File>
                         <File
@@ -877,6 +881,9 @@
                         Name="Source"
                         Filter="">
                         <File
+ RelativePath="..\src\archive_exception.cpp">
+ </File>
+ <File
                                 RelativePath="..\src\basic_archive.cpp">
                         </File>
                         <File
@@ -952,6 +959,9 @@
                                 RelativePath="..\src\polymorphic_oarchive.cpp">
                         </File>
                         <File
+ RelativePath="..\src\shared_ptr_helper.cpp">
+ </File>
+ <File
                                 RelativePath="..\src\stl_port.cpp">
                         </File>
                         <File
@@ -964,6 +974,9 @@
                                 RelativePath="..\src\void_cast.cpp">
                         </File>
                         <File
+ RelativePath="..\src\xml_archive_exception.cpp">
+ </File>
+ <File
                                 RelativePath="..\src\xml_grammar.cpp">
                         </File>
                         <File

Modified: branches/release/libs/serialization/vc7ide/dll_a.vcproj
==============================================================================
--- branches/release/libs/serialization/vc7ide/dll_a.vcproj (original)
+++ branches/release/libs/serialization/vc7ide/dll_a.vcproj 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -208,32 +208,65 @@
                         <Tool
                                 Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
                 </Configuration>
+ <Configuration
+ Name="Debug runtime-static|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\&quot;"
+ PreprocessorDefinitions="WIN32;_DEBUG;BOOST_ALL_DYN_LINK=1;BOOST_LIB_DIAGNOSTIC=1;"
+ RuntimeLibrary="3"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)/$(ProjectName).dll"
+ AdditionalLibraryDirectories="$(ConfigurationName)"
+ GenerateDebugInformation="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
         </Configurations>
         <References>
         </References>
         <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\test\dll_a.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <File
- RelativePath="..\test\A.hpp">
- </File>
- <File
- RelativePath="..\test\A.ipp">
- </File>
- <File
- RelativePath="..\test\test_decl.hpp">
- </File>
- </Filter>
+ <File
+ RelativePath="..\test\A.hpp">
+ </File>
+ <File
+ RelativePath="..\test\A.ipp">
+ </File>
+ <File
+ RelativePath="..\test\dll_a.cpp">
+ </File>
+ <File
+ RelativePath="..\test\test_decl.hpp">
+ </File>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/serialization/vc7ide/dll_base.vcproj
==============================================================================
--- branches/release/libs/serialization/vc7ide/dll_base.vcproj (original)
+++ branches/release/libs/serialization/vc7ide/dll_base.vcproj 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -171,7 +171,8 @@
                         IntermediateDirectory="$(ConfigurationName)"
                         ConfigurationType="1">
                         <Tool
- Name="VCCLCompilerTool"/>
+ Name="VCCLCompilerTool"
+ RuntimeLibrary="3"/>
                         <Tool
                                 Name="VCCustomBuildTool"/>
                         <Tool
@@ -245,22 +246,12 @@
         <References>
         </References>
         <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\test\dll_base.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <File
- RelativePath="..\test\base.hpp">
- </File>
- </Filter>
+ <File
+ RelativePath="..\test\base.hpp">
+ </File>
+ <File
+ RelativePath="..\test\dll_base.cpp">
+ </File>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/serialization/vc7ide/dll_derived2.vcproj
==============================================================================
--- branches/release/libs/serialization/vc7ide/dll_derived2.vcproj (original)
+++ branches/release/libs/serialization/vc7ide/dll_derived2.vcproj 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -157,26 +157,61 @@
                         <Tool
                                 Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
                 </Configuration>
+ <Configuration
+ Name="Debug runtime-static|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ ReferencesPath="$(ConfigurationName)">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\&quot;"
+ PreprocessorDefinitions="WIN32;_DEBUG;BOOST_ALL_DYN_LINK=1;BOOST_LIB_DIAGNOSTIC=1;"
+ RuntimeLibrary="3"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ WarningLevel="3"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="dll_base.lib"
+ AdditionalLibraryDirectories="$(ConfigurationName)"
+ GenerateDebugInformation="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
         </Configurations>
         <References>
         </References>
         <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\test\dll_derived2.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <File
- RelativePath="..\test\derived2.hpp">
- </File>
- </Filter>
+ <File
+ RelativePath="..\test\derived2.hpp">
+ </File>
+ <File
+ RelativePath="..\test\dll_derived2.cpp">
+ </File>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/serialization/vc7ide/polymorphic_derived2.vcproj
==============================================================================
--- branches/release/libs/serialization/vc7ide/polymorphic_derived2.vcproj (original)
+++ branches/release/libs/serialization/vc7ide/polymorphic_derived2.vcproj 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -156,32 +156,66 @@
                         <Tool
                                 Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
                 </Configuration>
+ <Configuration
+ Name="Debug runtime-static|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ ReferencesPath="$(ConfigurationName)">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\&quot;"
+ PreprocessorDefinitions="WIN32;_DEBUG;BOOST_ALL_DYN_LINK=1;BOOST_LIB_DIAGNOSTIC=1;"
+ RuntimeLibrary="3"
+ TreatWChar_tAsBuiltInType="TRUE"
+ ForceConformanceInForLoopScope="TRUE"
+ RuntimeTypeInfo="TRUE"
+ WarningLevel="3"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalLibraryDirectories="$(ConfigurationName)"
+ GenerateDebugInformation="TRUE"/>
+ <Tool
+ Name="VCMIDLTool"/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
         </Configurations>
         <References>
         </References>
         <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath="..\test\polymorphic_base.cpp">
- </File>
- <File
- RelativePath="..\test\polymorphic_derived2.cpp">
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <File
- RelativePath="..\test\polymorphic_base.hpp">
- </File>
- <File
- RelativePath="..\test\polymorphic_derived2.hpp">
- </File>
- </Filter>
+ <File
+ RelativePath="..\test\polymorphic_base.cpp">
+ </File>
+ <File
+ RelativePath="..\test\polymorphic_base.hpp">
+ </File>
+ <File
+ RelativePath="..\test\polymorphic_derived2.cpp">
+ </File>
+ <File
+ RelativePath="..\test\polymorphic_derived2.hpp">
+ </File>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/serialization/vc7ide/test_array.vcproj
==============================================================================
--- branches/release/libs/serialization/vc7ide/test_array.vcproj (original)
+++ branches/release/libs/serialization/vc7ide/test_array.vcproj 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -1756,9 +1756,6 @@
                         RelativePath="..\test\A.hpp">
                 </File>
                 <File
- RelativePath="..\test\A.ipp">
- </File>
- <File
                         RelativePath="..\test\test_array.cpp">
                         <FileConfiguration
                                 Name="Debug runtime-dynamic threading-multi|Win32">

Modified: branches/release/libs/serialization/vc7ide/test_dll_exported.vcproj
==============================================================================
--- branches/release/libs/serialization/vc7ide/test_dll_exported.vcproj (original)
+++ branches/release/libs/serialization/vc7ide/test_dll_exported.vcproj 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -130,29 +130,18 @@
                         Name="Library"/>
         </References>
         <Files>
- <Filter
- Name="Headers"
- Filter="">
- <File
- RelativePath="..\test\polymorphic_base.hpp">
- </File>
- <File
- RelativePath="..\test\polymorphic_derived1.hpp">
- </File>
- <File
- RelativePath="..\test\polymorphic_derived2.hpp">
- </File>
- </Filter>
- <Filter
- Name="Source"
- Filter="">
- <File
- RelativePath="..\test\polymorphic_base.cpp">
- </File>
- <File
- RelativePath="..\test\test_dll_exported.cpp">
- </File>
- </Filter>
+ <File
+ RelativePath="..\test\polymorphic_base.cpp">
+ </File>
+ <File
+ RelativePath="..\test\polymorphic_base.hpp">
+ </File>
+ <File
+ RelativePath="..\test\polymorphic_derived2.hpp">
+ </File>
+ <File
+ RelativePath="..\test\test_dll_exported.cpp">
+ </File>
         </Files>
         <Globals>
         </Globals>

Modified: branches/release/libs/serialization/vc7ide/test_dll_plugin.vcproj
==============================================================================
--- branches/release/libs/serialization/vc7ide/test_dll_plugin.vcproj (original)
+++ branches/release/libs/serialization/vc7ide/test_dll_plugin.vcproj 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -127,12 +127,6 @@
         </References>
         <Files>
                 <File
- RelativePath="..\test\base.hpp">
- </File>
- <File
- RelativePath="..\test\derived2.hpp">
- </File>
- <File
                         RelativePath="..\test\polymorphic_base.hpp">
                 </File>
                 <File

Modified: branches/release/libs/serialization/vc7ide/test_exported.vcproj
==============================================================================
--- branches/release/libs/serialization/vc7ide/test_exported.vcproj (original)
+++ branches/release/libs/serialization/vc7ide/test_exported.vcproj 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -130,6 +130,9 @@
                         RelativePath="..\test\polymorphic_base.cpp">
                 </File>
                 <File
+ RelativePath="..\test\polymorphic_base.hpp">
+ </File>
+ <File
                         RelativePath="..\test\test_exported.cpp">
                 </File>
         </Files>

Modified: branches/release/libs/serialization/vc7ide/test_multiple_ptrs.vcproj
==============================================================================
--- branches/release/libs/serialization/vc7ide/test_multiple_ptrs.vcproj (original)
+++ branches/release/libs/serialization/vc7ide/test_multiple_ptrs.vcproj 2009-09-19 22:18:02 EDT (Sat, 19 Sep 2009)
@@ -77,7 +77,7 @@
                                 ImproveFloatingPointConsistency="TRUE"
                                 AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\&quot;"
                                 PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_LIB_DIAGNOSTIC=1"
- SmallerTypeCheck="TRUE"
+ SmallerTypeCheck="FALSE"
                                 RuntimeLibrary="1"
                                 BufferSecurityCheck="TRUE"
                                 EnableFunctionLevelLinking="FALSE"
@@ -93,7 +93,6 @@
                         <Tool
                                 Name="VCLinkerTool"
                                 IgnoreImportLibrary="TRUE"
- AdditionalDependencies="Library"
                                 LinkIncremental="2"
                                 SuppressStartupBanner="TRUE"
                                 AdditionalLibraryDirectories="$(ConfigurationName)"


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk