[format] Suppressing warnings, and fixing issues.

Samuel, Looking through our open issues list on the Track at svn.boost.org, there are quite a few for Boost.Format that can be dealt with fairly easily: These two issues: http://svn.boost.org/trac/boost/ticket/704 and http://svn.boost.org/trac/boost/ticket/1195 appear to be fixed, and have had the relevent test cases added: is it OK to close these down? These issues: 585, 980, 1196, 1278 and 1340 relate to suppressing warnings, or have a trivial fix (missing #include reported in 1340), patches that fix all these issues are below. Coincidentally this fixes some of the pesky warnings I was getting when building Boost.Math as well, so I have an incentive to fix these :-) Is it OK to apply these patches and close down the issues? Thanks, John Maddock. Index: group.hpp =================================================================== --- group.hpp (revision 41086) +++ group.hpp (working copy) @@ -55,6 +55,8 @@ group1(T1 a1) : a1_(a1) {} +private: + group1& operator=(const group1&); }; template <class Ch, class Tr, class T1> @@ -78,6 +80,8 @@ group2(T1 a1,T2 a2) : a1_(a1),a2_(a2) {} +private: + group2& operator=(const group2&); }; template <class Ch, class Tr, class T1,class T2> @@ -99,6 +103,8 @@ group3(T1 a1,T2 a2,T3 a3) : a1_(a1),a2_(a2),a3_(a3) {} +private: + group3& operator=(const group3&); }; template <class Ch, class Tr, class T1,class T2,class T3> Index: format_implementation.hpp =================================================================== --- format_implementation.hpp (revision 41086) +++ format_implementation.hpp (working copy) @@ -25,21 +25,21 @@ // --- basic_format implementation -----------------------------------------// template< class Ch, class Tr, class Alloc> - basic_format<Ch, Tr, Alloc>:: basic_format(const Ch* str) + basic_format<Ch, Tr, Alloc>:: basic_format(const Ch* s) : style_(0), cur_arg_(0), num_args_(0), dumped_(false), exceptions_(io::all_error_bits) { - if( str) - parse( str ); + if( s) + parse( s ); } #if !defined(BOOST_NO_STD_LOCALE) template< class Ch, class Tr, class Alloc> - basic_format<Ch, Tr, Alloc>:: basic_format(const Ch* str, const std::locale & loc) + basic_format<Ch, Tr, Alloc>:: basic_format(const Ch* s, const std::locale & loc) : style_(0), cur_arg_(0), num_args_(0), dumped_(false), loc_(loc), exceptions_(io::all_error_bits) { - if(str) parse( str ); + if(s) parse( s ); } template< class Ch, class Tr, class Alloc> Index: alt_sstream_impl.hpp =================================================================== --- alt_sstream_impl.hpp (revision 41086) +++ alt_sstream_impl.hpp (working copy) @@ -107,7 +107,7 @@ return pos_type(off_type(-1)); if(eback() <= off+gptr() && off+gptr() <= putend_ ) { // set gptr - streambuf_t::gbump(off); + streambuf_t::gbump(static_cast<int>(off)); if(which & ::std::ios_base::out && pptr() != NULL) // update pptr to match gptr streambuf_t::pbump(static_cast<int>(gptr()-pptr())); @@ -125,7 +125,7 @@ return pos_type(off_type(-1)); if(pbase() <= off+pptr() && off+pptr() <= putend_) // set pptr - streambuf_t::pbump(off); + streambuf_t::pbump(static_cast<int>(off)); else off = off_type(-1); } @@ -221,6 +221,10 @@ typename basic_altstringbuf<Ch, Tr, Alloc>::int_type basic_altstringbuf<Ch, Tr, Alloc>:: overflow (int_type meta) { +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4996) +#endif if(compat_traits_type::eq_int_type(compat_traits_type::eof(), meta) ) return compat_traits_type::not_eof(meta); // nothing to do else if(pptr() != NULL && pptr() < epptr()) { @@ -276,6 +280,9 @@ streambuf_t::sputc(compat_traits_type::to_char_type(meta)); return meta; } +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif } // -end overflow(..) Index: feed_args.hpp =================================================================== --- feed_args.hpp (revision 41086) +++ feed_args.hpp (working copy) @@ -51,7 +51,7 @@ else { std::streamsize n=static_cast<std::streamsize>(w-size-!!prefix_spac e); std::streamsize n_after = 0, n_before = 0; - res.reserve(w); // allocate once for the 2 inserts + res.reserve(static_cast<size_type>(w)); // allocate once for the 2 inserts if(center) n_after = n/2, n_before = n - n_after; else @@ -60,12 +60,12 @@ else n_before = n; // now make the res string : - if(n_before) res.append(n_before, fill_char); + if(n_before) res.append(static_cast<size_type>(n_before), fill_char ); if(prefix_space) res.append(1, prefix_space); if (size) res.append(beg, size); - if(n_after) res.append(n_after, fill_char); + if(n_after) res.append(static_cast<size_type>(n_after), fill_char); } } // -mk_str(..) Index: internals.hpp =================================================================== --- internals.hpp (revision 41086) +++ internals.hpp (working copy) @@ -119,6 +119,8 @@ os.imbue(loc_.get()); else if(loc_default) os.imbue(*loc_default); +#else + (void) loc_default; // keep compiler quiet if we don't support locales #endif } Index: parsing.hpp =================================================================== --- parsing.hpp (revision 41086) +++ parsing.hpp (working copy) @@ -16,6 +16,7 @@ #include <boost/format/format_class.hpp> +#include <boost/format/exceptions.hpp> #include <boost/throw_exception.hpp> #include <boost/assert.hpp>

Ping? Do we still have a maintainer for this library, or should I just go ahead and commit? Regards, John Maddock.
Looking through our open issues list on the Track at svn.boost.org, there are quite a few for Boost.Format that can be dealt with fairly easily:
These two issues:
http://svn.boost.org/trac/boost/ticket/704 and http://svn.boost.org/trac/boost/ticket/1195
appear to be fixed, and have had the relevent test cases added: is it OK to close these down?
These issues:
585, 980, 1196, 1278 and 1340
relate to suppressing warnings, or have a trivial fix (missing #include reported in 1340), patches that fix all these issues are below. Coincidentally this fixes some of the pesky warnings I was getting when building Boost.Math as well, so I have an incentive to fix these :-)
Is it OK to apply these patches and close down the issues?
Thanks, John Maddock.
Index: group.hpp =================================================================== --- group.hpp (revision 41086) +++ group.hpp (working copy) @@ -55,6 +55,8 @@ group1(T1 a1) : a1_(a1) {} +private: + group1& operator=(const group1&); };
template <class Ch, class Tr, class T1> @@ -78,6 +80,8 @@ group2(T1 a1,T2 a2) : a1_(a1),a2_(a2) {} +private: + group2& operator=(const group2&); };
template <class Ch, class Tr, class T1,class T2> @@ -99,6 +103,8 @@ group3(T1 a1,T2 a2,T3 a3) : a1_(a1),a2_(a2),a3_(a3) {} +private: + group3& operator=(const group3&); };
template <class Ch, class Tr, class T1,class T2,class T3> Index: format_implementation.hpp =================================================================== --- format_implementation.hpp (revision 41086) +++ format_implementation.hpp (working copy) @@ -25,21 +25,21 @@ // --- basic_format implementation -----------------------------------------//
template< class Ch, class Tr, class Alloc> - basic_format<Ch, Tr, Alloc>:: basic_format(const Ch* str) + basic_format<Ch, Tr, Alloc>:: basic_format(const Ch* s) : style_(0), cur_arg_(0), num_args_(0), dumped_(false), exceptions_(io::all_error_bits) { - if( str) - parse( str ); + if( s) + parse( s ); }
#if !defined(BOOST_NO_STD_LOCALE) template< class Ch, class Tr, class Alloc> - basic_format<Ch, Tr, Alloc>:: basic_format(const Ch* str, const std::locale & loc) + basic_format<Ch, Tr, Alloc>:: basic_format(const Ch* s, const std::locale & loc) : style_(0), cur_arg_(0), num_args_(0), dumped_(false), loc_(loc), exceptions_(io::all_error_bits) { - if(str) parse( str ); + if(s) parse( s ); }
template< class Ch, class Tr, class Alloc> Index: alt_sstream_impl.hpp =================================================================== --- alt_sstream_impl.hpp (revision 41086) +++ alt_sstream_impl.hpp (working copy) @@ -107,7 +107,7 @@ return pos_type(off_type(-1)); if(eback() <= off+gptr() && off+gptr() <= putend_ ) { // set gptr - streambuf_t::gbump(off); + streambuf_t::gbump(static_cast<int>(off)); if(which & ::std::ios_base::out && pptr() != NULL) // update pptr to match gptr
streambuf_t::pbump(static_cast<int>(gptr()-pptr())); @@ -125,7 +125,7 @@ return pos_type(off_type(-1)); if(pbase() <= off+pptr() && off+pptr() <= putend_) // set pptr - streambuf_t::pbump(off); + streambuf_t::pbump(static_cast<int>(off)); else off = off_type(-1); } @@ -221,6 +221,10 @@ typename basic_altstringbuf<Ch, Tr, Alloc>::int_type basic_altstringbuf<Ch, Tr, Alloc>:: overflow (int_type meta) { +#ifdef BOOST_MSVC +#pragma warning(push) +#pragma warning(disable:4996) +#endif
if(compat_traits_type::eq_int_type(compat_traits_type::eof(), meta) ) return compat_traits_type::not_eof(meta); // nothing to do else if(pptr() != NULL && pptr() < epptr()) { @@ -276,6 +280,9 @@
streambuf_t::sputc(compat_traits_type::to_char_type(meta)); return meta; } +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif } // -end overflow(..)
Index: feed_args.hpp =================================================================== --- feed_args.hpp (revision 41086) +++ feed_args.hpp (working copy) @@ -51,7 +51,7 @@ else { std::streamsize n=static_cast<std::streamsize>(w-size-!!prefix_spac e); std::streamsize n_after = 0, n_before = 0; - res.reserve(w); // allocate once for the 2 inserts + res.reserve(static_cast<size_type>(w)); // allocate once for the 2 inserts if(center) n_after = n/2, n_before = n - n_after; else @@ -60,12 +60,12 @@ else n_before = n; // now make the res string : - if(n_before) res.append(n_before, fill_char); + if(n_before) res.append(static_cast<size_type>(n_before), fill_char ); if(prefix_space) res.append(1, prefix_space); if (size) res.append(beg, size); - if(n_after) res.append(n_after, fill_char); + if(n_after) res.append(static_cast<size_type>(n_after), fill_char);
} } // -mk_str(..)
Index: internals.hpp =================================================================== --- internals.hpp (revision 41086) +++ internals.hpp (working copy) @@ -119,6 +119,8 @@ os.imbue(loc_.get()); else if(loc_default) os.imbue(*loc_default); +#else + (void) loc_default; // keep compiler quiet if we don't support locales #endif }
Index: parsing.hpp =================================================================== --- parsing.hpp (revision 41086) +++ parsing.hpp (working copy) @@ -16,6 +16,7 @@
#include <boost/format/format_class.hpp> +#include <boost/format/exceptions.hpp> #include <boost/throw_exception.hpp> #include <boost/assert.hpp>
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
participants (2)
-
Jeff Garland
-
John Maddock