diff --git a/doc/contents.html b/doc/contents.html
index b3a87fec..124d20bb 100644
--- a/doc/contents.html
+++ b/doc/contents.html
@@ -302,7 +302,7 @@ function initialize() {
Motivation
Features
-
Class Interfac'
+
Class Interface
Requirements
Examples
Multi-Threading
diff --git a/src/basic_archive.cpp b/src/basic_archive.cpp
index 38dc6075..8d0fd7b1 100644
--- a/src/basic_archive.cpp
+++ b/src/basic_archive.cpp
@@ -59,9 +59,9 @@ BOOST_ARCHIVE_SIGNATURE(){
// 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_DECL(version_type)
BOOST_ARCHIVE_VERSION(){
- return 6;
+ return version_type(6);
}
} // namespace archive
diff --git a/src/basic_iarchive.cpp b/src/basic_iarchive.cpp
index 662ee64e..3b8ab64e 100644
--- a/src/basic_iarchive.cpp
+++ b/src/basic_iarchive.cpp
@@ -23,7 +23,7 @@ namespace std{
} // namespace std
#endif
-#include
+#include
#include
#include
#include
@@ -93,18 +93,18 @@ class basic_iarchive_impl {
// used by load object to look up class id given basic_serializer
struct cobject_type
{
- const basic_iserializer * bis;
- const class_id_type class_id;
+ const basic_iserializer * m_bis;
+ const class_id_type m_class_id;
cobject_type(
- class_id_type class_id_,
- const basic_iserializer & bis_
+ std::size_t class_id,
+ const basic_iserializer & bis
) :
- bis(& bis_),
- class_id(class_id_)
+ m_bis(& bis),
+ m_class_id(class_id)
{}
cobject_type(const cobject_type & rhs) :
- bis(rhs.bis),
- class_id(rhs.class_id)
+ m_bis(rhs.m_bis),
+ m_class_id(rhs.m_class_id)
{}
// the following cannot be defined because of the const
// member. This will generate a link error if an attempt
@@ -112,7 +112,7 @@ class basic_iarchive_impl {
cobject_type & operator=(const cobject_type & rhs);
bool operator<(const cobject_type &rhs) const
{
- return *bis < *(rhs.bis);
+ return *m_bis < *(rhs.m_bis);
}
};
typedef std::set cobject_info_set_type;
@@ -174,7 +174,7 @@ class basic_iarchive_impl {
pending_version(0)
{}
~basic_iarchive_impl(){}
- void set_library_version(unsigned int archive_library_version){
+ void set_library_version(version_type archive_library_version){
m_archive_library_version = archive_library_version;
}
bool
@@ -289,7 +289,14 @@ inline class_id_type
basic_iarchive_impl::register_type(
const basic_iserializer & bis
){
- class_id_type id(static_cast(cobject_info_set.size()));
+ assert(
+ cobject_info_set.size()
+ <=
+ boost::integer_traits::const_max
+ );
+ class_id_type id(static_cast(
+ cobject_info_set.size()
+ ));
cobject_type co(id, bis);
std::pair
result = cobject_info_set.insert(co);
@@ -298,7 +305,7 @@ basic_iarchive_impl::register_type(
cobject_id_vector.push_back(cobject_id(bis));
assert(cobject_info_set.size() == cobject_id_vector.size());
}
- id = result.first->class_id;
+ id = result.first->m_class_id;
// borland complains without this minor hack
const int tid = id;
cobject_id & coid = cobject_id_vector[tid];
@@ -405,6 +412,11 @@ basic_iarchive_impl::load_pointer(
return bpis_ptr;
}
+ assert(
+ cobject_info_set.size()
+ <=
+ boost::integer_traits::const_max
+ );
// if its a new class type - i.e. never been registered
if(class_id_type(cobject_info_set.size()) <= cid){
// if its either abstract
@@ -509,7 +521,7 @@ basic_iarchive::~basic_iarchive()
}
BOOST_ARCHIVE_DECL(void)
-basic_iarchive::set_library_version(unsigned int archive_library_version){
+basic_iarchive::set_library_version(version_type archive_library_version){
pimpl->set_library_version(archive_library_version);
}
diff --git a/src/basic_oarchive.cpp b/src/basic_oarchive.cpp
index d6b25d61..41fa48e9 100644
--- a/src/basic_oarchive.cpp
+++ b/src/basic_oarchive.cpp
@@ -91,26 +91,28 @@ class basic_oarchive_impl {
// keyed on type_info
struct cobject_type
{
- const basic_oserializer * bos_ptr;
- const class_id_type class_id;
- bool initialized;
+ const basic_oserializer * m_bos_ptr;
+ const class_id_type m_class_id;
+ bool m_initialized;
cobject_type(
- std::size_t class_id_,
- const basic_oserializer & bos_
+ std::size_t class_id,
+ const basic_oserializer & bos
) :
- bos_ptr(& bos_),
- class_id(class_id_),
- initialized(false)
+ m_bos_ptr(& bos),
+ m_class_id(
+ static_cast(class_id)
+ ),
+ m_initialized(false)
{}
- cobject_type(const basic_oserializer & bos_)
- : bos_ptr(& bos_)
+ cobject_type(const basic_oserializer & bos)
+ : m_bos_ptr(& bos)
{}
cobject_type(
const cobject_type & rhs
) :
- bos_ptr(rhs.bos_ptr),
- class_id(rhs.class_id),
- initialized(rhs.initialized)
+ m_bos_ptr(rhs.m_bos_ptr),
+ m_class_id(rhs.m_class_id),
+ m_initialized(rhs.m_initialized)
{}
// the following cannot be defined because of the const
// member. This will generate a link error if an attempt
@@ -118,7 +120,7 @@ class basic_oarchive_impl {
// use this only for lookup argument
cobject_type & operator=(const cobject_type &rhs);
bool operator<(const cobject_type &rhs) const {
- return *bos_ptr < *(rhs.bos_ptr);
+ return *m_bos_ptr < *(rhs.m_bos_ptr);
}
};
// keyed on type_info
@@ -167,9 +169,14 @@ class basic_oarchive_impl {
// return NULL if not found
inline const basic_oserializer *
basic_oarchive_impl::find(const serialization::extended_type_info & ti) const {
- class bosarg : public basic_oserializer
+ #ifdef BOOST_MSVC
+ # pragma warning(push)
+ # pragma warning(disable : 4511 4512)
+ #endif
+ class bosarg :
+ public basic_oserializer
{
- bool class_info() const {
+ bool class_info() const {
assert(false);
return false;
}
@@ -179,9 +186,9 @@ basic_oarchive_impl::find(const serialization::extended_type_info & ti) const {
return false;
}
// returns class version
- unsigned int version() const {
+ version_type version() const {
assert(false);
- return 0;
+ return version_type(0);
}
// returns true if this class is polymorphic
bool is_polymorphic() const{
@@ -189,7 +196,7 @@ basic_oarchive_impl::find(const serialization::extended_type_info & ti) const {
return false;
}
void save_object_data(
- basic_oarchive & ar, const void * x
+ basic_oarchive & /*ar*/, const void * /*x*/
) const {
assert(false);
}
@@ -198,6 +205,9 @@ basic_oarchive_impl::find(const serialization::extended_type_info & ti) const {
boost::archive::detail::basic_oserializer(eti)
{}
};
+ #ifdef BOOST_MSVC
+ #pragma warning(pop)
+ #endif
bosarg bos(ti);
cobject_info_set_type::const_iterator cit
= cobject_info_set.find(cobject_type(bos));
@@ -209,12 +219,17 @@ basic_oarchive_impl::find(const serialization::extended_type_info & ti) const {
return NULL;
}
// return pointer to the real class
- return cit->bos_ptr;
+ return cit->m_bos_ptr;
}
inline const basic_oarchive_impl::cobject_type &
basic_oarchive_impl::find(const basic_oserializer & bos)
{
+ assert(
+ cobject_info_set.size()
+ <=
+ boost::integer_traits::const_max
+ );
std::pair cresult =
cobject_info_set.insert(cobject_type(cobject_info_set.size(), bos));
return *(cresult.first);
@@ -224,6 +239,11 @@ inline const basic_oarchive_impl::cobject_type &
basic_oarchive_impl::register_type(
const basic_oserializer & bos
){
+ assert(
+ cobject_info_set.size()
+ <=
+ boost::integer_traits::const_max
+ );
cobject_type co(cobject_info_set.size(), bos);
std::pair
result = cobject_info_set.insert(co);
@@ -247,11 +267,11 @@ basic_oarchive_impl::save_object(
// get class information for this object
const cobject_type & co = register_type(bos);
if(bos.class_info()){
- if( ! co.initialized){
- ar.vsave(class_id_optional_type(co.class_id));
+ if( ! co.m_initialized){
+ ar.vsave(class_id_optional_type(co.m_class_id));
ar.vsave(tracking_type(bos.tracking(m_flags)));
ar.vsave(version_type(bos.version()));
- (const_cast(co)).initialized = true;
+ (const_cast(co)).m_initialized = true;
}
}
@@ -267,7 +287,7 @@ basic_oarchive_impl::save_object(
// look for an existing object id
object_id_type oid(object_set.size());
// lookup to see if this object has already been written to the archive
- basic_oarchive_impl::aobject ao(t, co.class_id, oid);
+ basic_oarchive_impl::aobject ao(t, co.m_class_id, oid);
std::pair
aresult = object_set.insert(ao);
oid = aresult.first->object_id;
@@ -306,8 +326,8 @@ basic_oarchive_impl::save_pointer(
const basic_oserializer & bos = bpos_ptr->get_basic_serializer();
std::size_t original_count = cobject_info_set.size();
const cobject_type & co = register_type(bos);
- if(! co.initialized){
- ar.vsave(co.class_id);
+ if(! co.m_initialized){
+ ar.vsave(co.m_class_id);
// if its a previously unregistered class
if((cobject_info_set.size() > original_count)){
if(bos.is_polymorphic()){
@@ -335,10 +355,10 @@ basic_oarchive_impl::save_pointer(
ar.vsave(tracking_type(bos.tracking(m_flags)));
ar.vsave(version_type(bos.version()));
}
- (const_cast(co)).initialized = true;
+ (const_cast(co)).m_initialized = true;
}
else{
- ar.vsave(class_id_reference_type(co.class_id));
+ ar.vsave(class_id_reference_type(co.m_class_id));
}
// if we're not tracking
@@ -355,7 +375,7 @@ basic_oarchive_impl::save_pointer(
object_id_type oid(object_set.size());
// lookup to see if this object has already been written to the archive
- basic_oarchive_impl::aobject ao(t, co.class_id, oid);
+ basic_oarchive_impl::aobject ao(t, co.m_class_id, oid);
std::pair
aresult = object_set.insert(ao);
oid = aresult.first->object_id;
diff --git a/src/basic_xml_grammar.ipp b/src/basic_xml_grammar.ipp
index a2b2cb4b..0d7682bb 100644
--- a/src/basic_xml_grammar.ipp
+++ b/src/basic_xml_grammar.ipp
@@ -16,11 +16,20 @@
#include
#include // BOOST_DEDUCED_TYPENAME
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4511 4512)
+#endif
+
// spirit stuff
#include
#include
#include
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
// for head_iterator test
//#include
#include
@@ -43,6 +52,11 @@ namespace archive {
namespace xml { // anonymous
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4511 4512)
+#endif
+
template
struct assign_impl {
T & t;
@@ -67,6 +81,9 @@ struct assign_impl {
++b;
}
}
+ assign_impl & operator=(
+ assign_impl & rhs
+ );
assign_impl(std::string & t_)
: t(t_)
{}
@@ -150,6 +167,10 @@ struct append_lit {
{}
};
+#ifdef BOOST_MSVC
+#pragma warning(pop)
+#endif
+
} // namespace anonymous
template
@@ -171,10 +192,12 @@ bool basic_xml_grammar::my_parse(
CharType val;
do{
- val = is.get();
- arg += val;
+ BOOST_DEDUCED_TYPENAME basic_xml_grammar::IStream::int_type
+ result = is.get();
if(is.fail())
return false;
+ val = static_cast(result);
+ arg += val;
}
while(val != delimiter);
diff --git a/src/extended_type_info.cpp b/src/extended_type_info.cpp
index 0c95e1ef..d05fa7e3 100644
--- a/src/extended_type_info.cpp
+++ b/src/extended_type_info.cpp
@@ -32,6 +32,11 @@ namespace std{ using ::strcmp; }
#define BOOST_SERIALIZATION_SOURCE
#include
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4511 4512)
+#endif
+
namespace boost {
namespace serialization {
namespace detail {
@@ -63,6 +68,11 @@ struct key_compare
typedef std::multiset ktmap;
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4511 4512)
+#endif
+
class extended_type_info_arg : public extended_type_info
{
virtual bool
@@ -87,6 +97,10 @@ public:
}
};
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
} // namespace detail
BOOST_SERIALIZATION_DECL(void)
diff --git a/src/extended_type_info_typeid.cpp b/src/extended_type_info_typeid.cpp
index 5b9f0f8c..11557371 100644
--- a/src/extended_type_info_typeid.cpp
+++ b/src/extended_type_info_typeid.cpp
@@ -51,9 +51,9 @@ extended_type_info_typeid_0::is_less_than(
// shortcut for common case
if(this == & rhs)
return false;
- return static_cast(m_ti->before(
+ return 0 != m_ti->before(
*(static_cast(rhs).m_ti)
- ));
+ );
}
BOOST_SERIALIZATION_DECL(bool)
@@ -63,10 +63,14 @@ extended_type_info_typeid_0::is_equal(
// shortcut for common case
if(this == & rhs)
return true;
- return static_cast(
+ return
+ // note: std::type_info == operator returns an int !!!
+ // the following permits conversion to bool without a warning.
+ ! (
* m_ti
- == *(static_cast(rhs).m_ti)
- );
+ != *(static_cast(rhs).m_ti)
+ )
+ ;
}
BOOST_SERIALIZATION_DECL(BOOST_PP_EMPTY())
@@ -109,6 +113,11 @@ extended_type_info_typeid_0::type_unregister()
m_ti = NULL;
}
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4511 4512)
+#endif
+
// this derivation is used for creating search arguments
class extended_type_info_typeid_arg :
public extended_type_info_typeid_0
@@ -127,6 +136,10 @@ public:
}
};
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
BOOST_SERIALIZATION_DECL(const extended_type_info *)
extended_type_info_typeid_0::get_extended_type_info(
const std::type_info & ti
diff --git a/src/void_cast.cpp b/src/void_cast.cpp
index 934f5f51..f016b418 100644
--- a/src/void_cast.cpp
+++ b/src/void_cast.cpp
@@ -67,6 +67,11 @@ struct void_caster_compare {
typedef std::set set_type;
typedef boost::serialization::singleton void_caster_registry;
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4511 4512)
+#endif
+
// implementation of shortcut void caster
class void_caster_shortcut : public void_caster
{
@@ -113,6 +118,10 @@ public:
}
};
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
void const *
void_caster_shortcut::vbc_downcast(
void const * const t
@@ -165,16 +174,21 @@ void_caster_shortcut::vbc_upcast(
return NULL;
}
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable : 4511 4512)
+#endif
+
// just used as a search key
class void_caster_argument : public void_caster
{
virtual void const *
- upcast(void const * const t) const {
+ upcast(void const * const /*t*/) const {
assert(false);
return NULL;
}
virtual void const *
- downcast( void const * const t) const {
+ downcast( void const * const /*t*/) const {
assert(false);
return NULL;
}
@@ -188,6 +202,10 @@ public:
~void_caster_argument(){};
};
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
// implementation of void caster base class
BOOST_SERIALIZATION_DECL(void)
void_caster::recursive_register(bool includes_virtual_base) const {
diff --git a/util/test.jam b/util/test.jam
index e9b37b13..67e1853c 100644
--- a/util/test.jam
+++ b/util/test.jam
@@ -42,7 +42,7 @@ rule run-template ( test-name : sources * : requirements * ) {
msvc:_SCL_SECURE_NO_DEPRECATE
msvc:_CRT_SECURE_NO_WARNINGS
msvc:_CRT_SECURE_NO_DEPRECATE
- msvc-8.0:"-wd4996"
+ msvc:"-wd4996"
# toolset optimizations
gcc:"-ftemplate-depth-255"
msvc:"-Gy"
diff --git a/vc7ide/test_iterators.vcproj b/vc7ide/test_iterators.vcproj
index 1935d622..82ee2256 100644
--- a/vc7ide/test_iterators.vcproj
+++ b/vc7ide/test_iterators.vcproj
@@ -29,7 +29,7 @@
TreatWChar_tAsBuiltInType="TRUE"
ForceConformanceInForLoopScope="TRUE"
RuntimeTypeInfo="TRUE"
- WarningLevel="3"
+ WarningLevel="4"
Detect64BitPortabilityProblems="FALSE"
DebugInformationFormat="1"
CompileAs="0"/>
diff --git a/vc7ide/test_polymorphic.vcproj b/vc7ide/test_polymorphic.vcproj
index 49002cef..48e792dd 100644
--- a/vc7ide/test_polymorphic.vcproj
+++ b/vc7ide/test_polymorphic.vcproj
@@ -21,7 +21,7 @@
Optimization="0"
ImproveFloatingPointConsistency="TRUE"
AdditionalIncludeDirectories=""$(ProjectDir)..\..\..\""
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_LIB_DIAGNOSTIC=1;BOOST_ALL_DYN_LINK=1"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_LIB_DIAGNOSTIC=1;BOOST_ALL_DYN_LINK=1;BOOST_ARCHIVE_TEST=polymorphic_text_archive.hpp"
SmallerTypeCheck="TRUE"
RuntimeLibrary="3"
BufferSecurityCheck="TRUE"
diff --git a/vc7ide/test_simple_class.vcproj b/vc7ide/test_simple_class.vcproj
index 281d0932..1934b186 100644
--- a/vc7ide/test_simple_class.vcproj
+++ b/vc7ide/test_simple_class.vcproj
@@ -29,7 +29,7 @@
TreatWChar_tAsBuiltInType="TRUE"
ForceConformanceInForLoopScope="TRUE"
RuntimeTypeInfo="TRUE"
- WarningLevel="3"
+ WarningLevel="4"
Detect64BitPortabilityProblems="FALSE"
DebugInformationFormat="1"
CompileAs="0"/>