Boost logo

Boost :

From: Jens Maurer (Jens.Maurer_at_[hidden])
Date: 2001-08-28 15:51:53


Here are my review comments:

I'd like to see the new config system accepted into boost.

As a historical remark, when we added boost/config.hpp a long
time ago, it was intended as a stop-gap measure. We had
longish discussions how to deal with configuration best
(e.g. use GNU configure), and the simplest thing was a
boost/config.hpp until a better, agreed-upon configuration
mechanism comes along. I believe we've reached that point
now.

On a different topic discussed here, unknown compiler versions
should be assumed to be fully compliant. If they aren't,
people will complain here, and we will know thusly that a new
version of some compiler has appeared and we can make appropriate
corrections.

Detailed remarks:

 - Please reformat source code files to < 80 chars line length,
at least the comments.

 - I'd like the header file names for the compiler configuration
better reflect the *compiler*. In particular:
  tru64.hpp -> compaq_cxx.hpp (similar to intel_icl)
  sun.hpp -> sunpro_cc.hpp
(The others are ok, though sgi.hpp -> sgi_mipspro.hpp would be an
option.)
 - select_compiler_config.hpp around line 52
avoid "(excluding Intel/EDG front end)" since a lot of others
also define _MSC_VER. The explanation below is enough.#
 - I find the source layout of select_compiler_config.hpp not
very parsable; possibly add an empty line before each #elif?
 - Also, make sure ----------- lines end consistently without "//".

 - In select_platform_config.hpp, please change the copyright year
from 1999 to 2001.
 - For the platforms, the header file names should reflect the
operating system. In particular:
  sun.hpp -> solaris.hpp
  be.hpp -> beos.hpp
  map.hpp -> macos.hpp
 - select_stdlib_config.hpp: Why must "stlport" come first? Please add
a line of explanation.

 - I'm missing a select_cpu_config.hpp (to switch between x86, SPARC,
Alpha, whatever). For example, Solaris runs on x86 and SPARC, and
those two CPUs have different endianess (boost/limits.hpp likes to
know). Linux runs on a whole bunch of CPUs. BSD also.

 - cstdint.hpp must be properly merged with the current cstdint.hpp,
which has a "ULL" fix.

 - suffix.hpp: Please remove BOOST_NMEMBER_TEMPLATES now, it's
no longer referenced in the boost sources and it's in "will be
removed soon" state since ages.

 - suffix.hpp: Please move EDG stuff to compiler/edg.hpp;
individual compiler config files should include edg.hpp if
they're EDG-based. (SGI, Alpha cxx, Comeau, Intel).
 - Is this same approach also applicable to Unix-like
platforms, i.e. should they include a platform/unix.hpp?
Then the Unix stuff in suffix.hpp could be removed. Sounds
more orthogonal to me.

 - suffix.hpp has a bunch of empty lines at the end.

 - Please put the boost copyright boilerplate at the top of
each compiler/*.hpp. Same for platform/*.cpp and stdlib/*.cpp.
 - Could we merge intel_icl.hpp and intel_icc.hpp? They're
the same compiler on different platforms, effectively.
 - compiler/true64.hpp has a misspelled filename even if my
above suggestion for renaming is not followed.
 - compiler/mpw.hpp: Please indent consistently with the rest
of compiler/*.hpp.
 - compiler/vacpp.hpp: Needs conditionalization on version
and fixed BOOST_COMPILER #define.
 - comiler/visualc.hpp: Please merge the 1300 (VC7.1) case
with the 1200 (VC6) case by taking advantage of
"#if _MSC_VER <= 1300" or similar.
 - platform/be.hpp: Doesn't need the #ifdef BOOST_DISABLE_THREADS,
because suffix.hpp will take care of undefined BOOST_HAS_THREADS
in that case.

config.htm:

 - I like the transition from BOOST_NO_HASH to BOOST_HAS_HASH
(similar for slist). It's conceptually the right thing to do.
 - Regarding <stdint.h>: Please read my detailed comments
at the beginning of boost/stdint.h why I had serious trouble
with Linux' <stdint.h>.
 - Assuming that new compiler/libraries/platforms are fully
compliant is ok and consistent with the philosophy of boost.
 - It's nice to see documentation on the boost conformance
macros.

Jens Maurer


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