Boost logo

Boost :

From: Robert Ramey (ramey_at_[hidden])
Date: 2003-09-05 11:16:48


I have been rolling in fixes as they are reported. I am also making progress
getting Commeau working. I think it would be a good idea to post this message
to the list in order to let others know that things are moving on this. Also
there is help available in things like getting bjam working.

Your efforts in regards to Borland are much appreciated. With msvc, gcc, commeau
and borland, we would have a credible start a coverage. In my view vc 6, intel are
very similar to vc 7.0 so I'm less concerned about these.

"but I am not likely having stamina for complete port."

Don't underestimate yourself. Once you start to make progress you
won't be able to sleep until its done. I recommend the following:
a) get bjam working.
b) make changes to get a clean build
c) make changes to get a clean test run
d) ship me your whole version of the source
e) I can diff with my latest version and reconcile all the changes
f) I'll upload the next draft
g) and we can all re-test.

1) I've changed std::mbstate_t to mbstate_t and it works in all my
compilers so that's fixed.

2-6) basic_binary_iarchive.cpp isn't compiled separatly. This can be verified
by inspecting the jamfile. It is included in binary_iarchive.cpp and others.
Actually these are template definitions used for building the library. I suppose
it should have different file extension (e.g. basic_binary_archive.ipp ?) but
I left it at *.cpp because its convenient in my IDE. So don't compile
these files separatly. The are included in other modules.

basic_binary_iarchive.cpp
basic_binary_oarchive.cpp
basic_text_iarchive.cpp
basic_text_oarchive.cpp
basic_xml_iarchive.cpp
basic_xml_oarchive.cpp
basic_xml_grammar.cpp

7) fixed
8) fixed
9) I'm not sure how to address this yet. probably the best is to define
a global basic_ostream & operator(const _int64 t){
        ?
}

10) text_local.cpp is left over from something else. I have since removed it.

11) xdr_archive.hpp is an experiment in progress. Not used here

Thanks again for helping out with this.

Robert Ramey

-----Original Message-----
From: Pavel Vozenilek [SMTP:pavel_vozenilek_at_[hidden]]
Sent: Friday, September 05, 2003 6:28 AM
To: Robert Ramey
Subject: few more fixes for serialisation library (Intel C++)

Hello Robert,

I played a bit with Intel C++ and serialisation libarray and bellow are few
fixes.

I was not able to make bjam working and its anyway better to find fixes than
to send huge error listing.

About the typename problem: seems it is something even worse than
BOOST_DEDUCED_TYPENAME.
I posted question about it to c++.moderated newsgroup.

I'll try to do the port on Intel C++ 7 (I feel it is rather possible) and
Borland C++ 6 (hopefully). I may play with MSVC 6

but I am not likely having stamina for complete port.

If there are more people contributing bug fixes, it may be good to post new
versions of library frequently to ease the

frustration a bit.

/Pavel

-------------------

1. Dinkumware library (used in MSVC 6 and by default by Intel C++)
   doesn't place mbstate_t into 'std' namespace.

   <boost/regex/config.hpp> (from REGEX!!!) defines
   namespace std:: { using ::mbstate_t } so solution may be:

// ... some comment on this absurdity ...
#include <boost/regex/config.hpp>

   e.g. in:
    - codecvt_null.hpp.
    - utf8_codecvt_facet.hpp

   I feel this functionality should be moved
   into <boost/config.hpp> (but it is easier to move mountain).

   This change shaved off ~100 errors when compiling under Intel C++.

2. basic_binary_iarchive.cpp needs to include:

#include <boost/archive/basic_binary_iarchive.hpp>

   (Found on Intel C++.)

3. basic_binary_oarchive.cpp needs to include:

#include <boost/archive/basic_binary_oarchive.hpp>

4. basic_text_iarchive.hpp needs to include:

#include <boost/archive/basic_text_iarchive.hpp>

5. basic_text_oarchive.hpp needs to include:

#include <boost/archive/basic_text_oarchive.hpp>

6. basic_xml_oarchive.hpp needs to include:

#include <boost/archive/basic_xml_oarchive.hpp>

7. basic_binary_iarchive.hpp, add

#include <boost/limits.hpp>

>From Boost.Config macro BOOST_NO_CONFIG:

"The C++ implementation does not provide the <limits> header. Never check
for this symbol in library code; always include

<boost/limits.hpp>, which guarantees to provide std::numeric_limits."

8. Intel C++ 7 doesn't like explicit instantiation of typedefed template.

   E.g in binary_iarchive.cpp:

template
binary_iarchive;

fails but

template
basic_binary_iarchive<std::istream>;

works. This can be fixed by:

#include <boost/detail/workaround.hpp>

..

template
#if BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(700) )
basic_binary_iarchive<std::istream>;
#else
binary_iarchive;
#endif

Similarly in:
 - binary_wiarchive.cpp
 - binary_oarchive.cpp
 - binary_woarchive.cpp
 - xml_grammar.cpp
 - text_woarchive.cpp

I preferre workaround in this way so vendors have incentive to blush and fix
the bug.

9. basic_text_oarchive.hpp, template save<>, when compiling test_vector.cpp.
   The line

os << t;

   fails for __int64 datatype T (with error "more than one
std::basic_ostream::operator "<<"
   matches these operands").

   Maybe explicit specialisation is needed here. This happen in old
Dinkumware, I do
   not know if new one is better and how's STLport and SGI.

10. text_locale.cpp includes

#include <boost/archive/text_locale.hpp>

   which doesn't exist.

11. Similarly xdr_archive.hpp includes nonexisting

#include <boost/serialization/xdr_archive.hpp>

and xml_gammar.cpp (isn't is mistake - see the strange file name)
nonexisting

#include "xml_grammar.hpp"

12. There are more problems and even one ICE. I'll try to deal with them
later.

-------------------------------


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk