Subject: [boost] [modularization] Improving/splitting up detail
From: John Maddock (john_at_[hidden])
Date: 2013-11-01 15:15:17


Lets say we wanted boost/detail to depend on nothing but config, here's what
it would take:

boost/detail/algorithm.hpp

    Used by graph lib only, suggest it's moved there.

boost/detail/allocator_utilities.hpp

    Used by multi index, statechart and flyweight, suggest move to new
"common" module.

boost/detail/atomic_count.hpp

    Depends on smart_ptr's details only, suggest those details are moved to
"detail" module.

boost/detail/binary_search.hpp

    Used by python and test, move to "common".

boost/detail/bitmask.hpp

    Only external dependency is boost/cstdint.hpp, either move to "common",
or else move cstdint.hpp to "config".

boost/detail/call_traits.hpp

    Move to call_traits (should be there already).

boost/detail/catch_exceptions.hpp

    Only external dependency is boost/cstdint.hpp, suggest latter is moved
to config.

boost/detail/compressed_pair.hpp

    Move to compressed pair (should be there already).

boost/detail/endian.hpp

    Move to "predef"

boost/detail/has_default_constructor.hpp

    File appears to be unused, and not very useful, suggest we remove it.

boost/detail/identifier.hpp

    File appears to be unused, suggest we remove it.

boost/detail/indirect_traits.hpp

    Used by iterator and python, move to "common"

boost/detail/is_incrementable.hpp

    Move to common, or better modify the libraies using this to use the
newer type_traits equivalents.

boost/detail/is_sorted.hpp

    Used by graph and range, move to "common"

boost/detail/is_xxx.hpp

    Used by parameter and python, move to "common"

boost/detail/iterator.hpp

    I suspect this may be obsolete now compiler requirements have been
bumped, but whatever it's still used by multiple libs: move to "common"

boost/detail/lcast_precision.hpp

    Only used by lexical_cast, move it there.

boost/detail/lightweight_mutex.hpp

    Only extern dependency is smart_ptr's details, suggest move those to
detail.

boost/detail/named_template_params.hpp

    Appears to be unused, suggest we remove.

boost/detail/numeric_traits.hpp

    Used by graph and iterator, move to "common"

boost/detail/ob_compressed_pair.hpp

    Move to compressed pair, might also be obsolete by now.

boost/detail/quick_allocator.hpp

    Only external dependency is smart_ptr's details, suggest those are moved
here. Or since only serialization uses this, move this file there...

boost/detail/reference_content.hpp

    Used by optional and variant, move to "common".

boost/detail/winapi/*

    Depends on boost/cstdint.hpp only, suggest that belongs to config.

Everything else in detail has no dependencies other than config.

Thoughts?

John.