|
Boost-Commit : |
From: eric_at_[hidden]
Date: 2008-06-10 14:52:58
Author: eric_niebler
Date: 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
New Revision: 46303
URL: http://svn.boost.org/trac/boost/changeset/46303
Log:
merged from trunk
Added:
branches/proto/v4/boost/asio/basic_serial_port.hpp
- copied unchanged from r46295, /trunk/boost/asio/basic_serial_port.hpp
branches/proto/v4/boost/asio/detail/reactive_serial_port_service.hpp
- copied unchanged from r46295, /trunk/boost/asio/detail/reactive_serial_port_service.hpp
branches/proto/v4/boost/asio/detail/win_iocp_serial_port_service.hpp
- copied unchanged from r46295, /trunk/boost/asio/detail/win_iocp_serial_port_service.hpp
branches/proto/v4/boost/asio/impl/serial_port_base.ipp
- copied unchanged from r46295, /trunk/boost/asio/impl/serial_port_base.ipp
branches/proto/v4/boost/asio/serial_port.hpp
- copied unchanged from r46295, /trunk/boost/asio/serial_port.hpp
branches/proto/v4/boost/asio/serial_port_base.hpp
- copied unchanged from r46295, /trunk/boost/asio/serial_port_base.hpp
branches/proto/v4/boost/asio/serial_port_service.hpp
- copied unchanged from r46295, /trunk/boost/asio/serial_port_service.hpp
branches/proto/v4/boost/serialization/assume_abstract.hpp
- copied unchanged from r46295, /trunk/boost/serialization/assume_abstract.hpp
branches/proto/v4/boost/thread/tss.hpp
- copied unchanged from r46295, /trunk/boost/thread/tss.hpp
branches/proto/v4/boost/units/
- copied from r46295, /trunk/boost/units/
branches/proto/v4/boost/units/absolute.hpp
- copied unchanged from r46295, /trunk/boost/units/absolute.hpp
branches/proto/v4/boost/units/base_dimension.hpp
- copied unchanged from r46295, /trunk/boost/units/base_dimension.hpp
branches/proto/v4/boost/units/base_unit.hpp
- copied unchanged from r46295, /trunk/boost/units/base_unit.hpp
branches/proto/v4/boost/units/base_units/
- copied from r46295, /trunk/boost/units/base_units/
branches/proto/v4/boost/units/base_units/angle/
- copied from r46295, /trunk/boost/units/base_units/angle/
branches/proto/v4/boost/units/base_units/angle/arcminute.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/angle/arcminute.hpp
branches/proto/v4/boost/units/base_units/angle/arcsecond.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/angle/arcsecond.hpp
branches/proto/v4/boost/units/base_units/angle/degree.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/angle/degree.hpp
branches/proto/v4/boost/units/base_units/angle/gradian.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/angle/gradian.hpp
branches/proto/v4/boost/units/base_units/angle/radian.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/angle/radian.hpp
branches/proto/v4/boost/units/base_units/angle/revolution.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/angle/revolution.hpp
branches/proto/v4/boost/units/base_units/angle/steradian.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/angle/steradian.hpp
branches/proto/v4/boost/units/base_units/astronomical/
- copied from r46295, /trunk/boost/units/base_units/astronomical/
branches/proto/v4/boost/units/base_units/astronomical/astronomical_unit.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/astronomical/astronomical_unit.hpp
branches/proto/v4/boost/units/base_units/astronomical/light_day.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/astronomical/light_day.hpp
branches/proto/v4/boost/units/base_units/astronomical/light_hour.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/astronomical/light_hour.hpp
branches/proto/v4/boost/units/base_units/astronomical/light_minute.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/astronomical/light_minute.hpp
branches/proto/v4/boost/units/base_units/astronomical/light_second.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/astronomical/light_second.hpp
branches/proto/v4/boost/units/base_units/astronomical/light_year.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/astronomical/light_year.hpp
branches/proto/v4/boost/units/base_units/astronomical/parsec.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/astronomical/parsec.hpp
branches/proto/v4/boost/units/base_units/cgs/
- copied from r46295, /trunk/boost/units/base_units/cgs/
branches/proto/v4/boost/units/base_units/cgs/biot.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/cgs/biot.hpp
branches/proto/v4/boost/units/base_units/cgs/centimeter.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/cgs/centimeter.hpp
branches/proto/v4/boost/units/base_units/cgs/gram.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/cgs/gram.hpp
branches/proto/v4/boost/units/base_units/imperial/
- copied from r46295, /trunk/boost/units/base_units/imperial/
branches/proto/v4/boost/units/base_units/imperial/conversions.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/conversions.hpp
branches/proto/v4/boost/units/base_units/imperial/drachm.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/drachm.hpp
branches/proto/v4/boost/units/base_units/imperial/fluid_ounce.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/fluid_ounce.hpp
branches/proto/v4/boost/units/base_units/imperial/foot.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/foot.hpp
branches/proto/v4/boost/units/base_units/imperial/furlong.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/furlong.hpp
branches/proto/v4/boost/units/base_units/imperial/gallon.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/gallon.hpp
branches/proto/v4/boost/units/base_units/imperial/gill.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/gill.hpp
branches/proto/v4/boost/units/base_units/imperial/grain.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/grain.hpp
branches/proto/v4/boost/units/base_units/imperial/hundredweight.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/hundredweight.hpp
branches/proto/v4/boost/units/base_units/imperial/inch.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/inch.hpp
branches/proto/v4/boost/units/base_units/imperial/league.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/league.hpp
branches/proto/v4/boost/units/base_units/imperial/mile.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/mile.hpp
branches/proto/v4/boost/units/base_units/imperial/ounce.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/ounce.hpp
branches/proto/v4/boost/units/base_units/imperial/pint.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/pint.hpp
branches/proto/v4/boost/units/base_units/imperial/pound.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/pound.hpp
branches/proto/v4/boost/units/base_units/imperial/quart.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/quart.hpp
branches/proto/v4/boost/units/base_units/imperial/quarter.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/quarter.hpp
branches/proto/v4/boost/units/base_units/imperial/stone.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/stone.hpp
branches/proto/v4/boost/units/base_units/imperial/thou.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/thou.hpp
branches/proto/v4/boost/units/base_units/imperial/ton.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/ton.hpp
branches/proto/v4/boost/units/base_units/imperial/yard.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/imperial/yard.hpp
branches/proto/v4/boost/units/base_units/metric/
- copied from r46295, /trunk/boost/units/base_units/metric/
branches/proto/v4/boost/units/base_units/metric/angstrom.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/angstrom.hpp
branches/proto/v4/boost/units/base_units/metric/are.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/are.hpp
branches/proto/v4/boost/units/base_units/metric/atmosphere.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/atmosphere.hpp
branches/proto/v4/boost/units/base_units/metric/bar.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/bar.hpp
branches/proto/v4/boost/units/base_units/metric/barn.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/barn.hpp
branches/proto/v4/boost/units/base_units/metric/day.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/day.hpp
branches/proto/v4/boost/units/base_units/metric/fermi.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/fermi.hpp
branches/proto/v4/boost/units/base_units/metric/hectare.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/hectare.hpp
branches/proto/v4/boost/units/base_units/metric/hour.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/hour.hpp
branches/proto/v4/boost/units/base_units/metric/knot.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/knot.hpp
branches/proto/v4/boost/units/base_units/metric/liter.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/liter.hpp
branches/proto/v4/boost/units/base_units/metric/micron.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/micron.hpp
branches/proto/v4/boost/units/base_units/metric/minute.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/minute.hpp
branches/proto/v4/boost/units/base_units/metric/mmHg.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/mmHg.hpp
branches/proto/v4/boost/units/base_units/metric/nautical_mile.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/nautical_mile.hpp
branches/proto/v4/boost/units/base_units/metric/ton.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/ton.hpp
branches/proto/v4/boost/units/base_units/metric/torr.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/torr.hpp
branches/proto/v4/boost/units/base_units/metric/year.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/metric/year.hpp
branches/proto/v4/boost/units/base_units/si/
- copied from r46295, /trunk/boost/units/base_units/si/
branches/proto/v4/boost/units/base_units/si/ampere.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/si/ampere.hpp
branches/proto/v4/boost/units/base_units/si/candela.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/si/candela.hpp
branches/proto/v4/boost/units/base_units/si/kelvin.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/si/kelvin.hpp
branches/proto/v4/boost/units/base_units/si/kilogram.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/si/kilogram.hpp
branches/proto/v4/boost/units/base_units/si/meter.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/si/meter.hpp
branches/proto/v4/boost/units/base_units/si/mole.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/si/mole.hpp
branches/proto/v4/boost/units/base_units/si/second.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/si/second.hpp
branches/proto/v4/boost/units/base_units/temperature/
- copied from r46295, /trunk/boost/units/base_units/temperature/
branches/proto/v4/boost/units/base_units/temperature/celsius.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/temperature/celsius.hpp
branches/proto/v4/boost/units/base_units/temperature/conversions.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/temperature/conversions.hpp
branches/proto/v4/boost/units/base_units/temperature/fahrenheit.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/temperature/fahrenheit.hpp
branches/proto/v4/boost/units/base_units/us/
- copied from r46295, /trunk/boost/units/base_units/us/
branches/proto/v4/boost/units/base_units/us/cup.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/cup.hpp
branches/proto/v4/boost/units/base_units/us/dram.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/dram.hpp
branches/proto/v4/boost/units/base_units/us/fluid_dram.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/fluid_dram.hpp
branches/proto/v4/boost/units/base_units/us/fluid_ounce.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/fluid_ounce.hpp
branches/proto/v4/boost/units/base_units/us/foot.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/foot.hpp
branches/proto/v4/boost/units/base_units/us/gallon.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/gallon.hpp
branches/proto/v4/boost/units/base_units/us/gill.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/gill.hpp
branches/proto/v4/boost/units/base_units/us/grain.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/grain.hpp
branches/proto/v4/boost/units/base_units/us/hundredweight.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/hundredweight.hpp
branches/proto/v4/boost/units/base_units/us/inch.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/inch.hpp
branches/proto/v4/boost/units/base_units/us/mil.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/mil.hpp
branches/proto/v4/boost/units/base_units/us/mile.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/mile.hpp
branches/proto/v4/boost/units/base_units/us/minim.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/minim.hpp
branches/proto/v4/boost/units/base_units/us/ounce.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/ounce.hpp
branches/proto/v4/boost/units/base_units/us/pint.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/pint.hpp
branches/proto/v4/boost/units/base_units/us/pound.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/pound.hpp
branches/proto/v4/boost/units/base_units/us/quart.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/quart.hpp
branches/proto/v4/boost/units/base_units/us/tablespoon.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/tablespoon.hpp
branches/proto/v4/boost/units/base_units/us/teaspoon.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/teaspoon.hpp
branches/proto/v4/boost/units/base_units/us/ton.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/ton.hpp
branches/proto/v4/boost/units/base_units/us/yard.hpp
- copied unchanged from r46295, /trunk/boost/units/base_units/us/yard.hpp
branches/proto/v4/boost/units/cmath.hpp
- copied unchanged from r46295, /trunk/boost/units/cmath.hpp
branches/proto/v4/boost/units/config.hpp
- copied unchanged from r46295, /trunk/boost/units/config.hpp
branches/proto/v4/boost/units/conversion.hpp
- copied unchanged from r46295, /trunk/boost/units/conversion.hpp
branches/proto/v4/boost/units/derived_dimension.hpp
- copied unchanged from r46295, /trunk/boost/units/derived_dimension.hpp
branches/proto/v4/boost/units/detail/
- copied from r46295, /trunk/boost/units/detail/
branches/proto/v4/boost/units/detail/absolute_impl.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/absolute_impl.hpp
branches/proto/v4/boost/units/detail/cmath_boost_1_35.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/cmath_boost_1_35.hpp
branches/proto/v4/boost/units/detail/cmath_gnu_impl.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/cmath_gnu_impl.hpp
branches/proto/v4/boost/units/detail/cmath_gnu_impl_boost_1_35.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/cmath_gnu_impl_boost_1_35.hpp
branches/proto/v4/boost/units/detail/cmath_impl.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/cmath_impl.hpp
branches/proto/v4/boost/units/detail/cmath_msvc_impl.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/cmath_msvc_impl.hpp
branches/proto/v4/boost/units/detail/cmath_msvc_impl_boost_1_35.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/cmath_msvc_impl_boost_1_35.hpp
branches/proto/v4/boost/units/detail/cmath_mwcw_impl.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/cmath_mwcw_impl.hpp
branches/proto/v4/boost/units/detail/cmath_mwcw_impl_boost_1_35.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/cmath_mwcw_impl_boost_1_35.hpp
branches/proto/v4/boost/units/detail/conversion_impl.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/conversion_impl.hpp
branches/proto/v4/boost/units/detail/dim_impl.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/dim_impl.hpp
branches/proto/v4/boost/units/detail/dimension_impl.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/dimension_impl.hpp
branches/proto/v4/boost/units/detail/dimension_list.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/dimension_list.hpp
branches/proto/v4/boost/units/detail/dimensionless_unit.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/dimensionless_unit.hpp
branches/proto/v4/boost/units/detail/heterogeneous_conversion.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/heterogeneous_conversion.hpp
branches/proto/v4/boost/units/detail/linear_algebra.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/linear_algebra.hpp
branches/proto/v4/boost/units/detail/one.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/one.hpp
branches/proto/v4/boost/units/detail/ordinal.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/ordinal.hpp
branches/proto/v4/boost/units/detail/prevent_redefinition.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/prevent_redefinition.hpp
branches/proto/v4/boost/units/detail/push_front_if.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/push_front_if.hpp
branches/proto/v4/boost/units/detail/push_front_or_add.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/push_front_or_add.hpp
branches/proto/v4/boost/units/detail/sort.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/sort.hpp
branches/proto/v4/boost/units/detail/static_rational_power.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/static_rational_power.hpp
branches/proto/v4/boost/units/detail/unscale.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/unscale.hpp
branches/proto/v4/boost/units/detail/utility.hpp
- copied unchanged from r46295, /trunk/boost/units/detail/utility.hpp
branches/proto/v4/boost/units/dim.hpp
- copied unchanged from r46295, /trunk/boost/units/dim.hpp
branches/proto/v4/boost/units/dimension.hpp
- copied unchanged from r46295, /trunk/boost/units/dimension.hpp
branches/proto/v4/boost/units/dimensionless_quantity.hpp
- copied unchanged from r46295, /trunk/boost/units/dimensionless_quantity.hpp
branches/proto/v4/boost/units/dimensionless_type.hpp
- copied unchanged from r46295, /trunk/boost/units/dimensionless_type.hpp
branches/proto/v4/boost/units/dimensionless_unit.hpp
- copied unchanged from r46295, /trunk/boost/units/dimensionless_unit.hpp
branches/proto/v4/boost/units/get_dimension.hpp
- copied unchanged from r46295, /trunk/boost/units/get_dimension.hpp
branches/proto/v4/boost/units/get_system.hpp
- copied unchanged from r46295, /trunk/boost/units/get_system.hpp
branches/proto/v4/boost/units/heterogeneous_system.hpp
- copied unchanged from r46295, /trunk/boost/units/heterogeneous_system.hpp
branches/proto/v4/boost/units/homogeneous_system.hpp
- copied unchanged from r46295, /trunk/boost/units/homogeneous_system.hpp
branches/proto/v4/boost/units/io.hpp
- copied unchanged from r46295, /trunk/boost/units/io.hpp
branches/proto/v4/boost/units/is_dim.hpp
- copied unchanged from r46295, /trunk/boost/units/is_dim.hpp
branches/proto/v4/boost/units/is_dimension_list.hpp
- copied unchanged from r46295, /trunk/boost/units/is_dimension_list.hpp
branches/proto/v4/boost/units/is_dimensionless.hpp
- copied unchanged from r46295, /trunk/boost/units/is_dimensionless.hpp
branches/proto/v4/boost/units/is_dimensionless_quantity.hpp
- copied unchanged from r46295, /trunk/boost/units/is_dimensionless_quantity.hpp
branches/proto/v4/boost/units/is_dimensionless_unit.hpp
- copied unchanged from r46295, /trunk/boost/units/is_dimensionless_unit.hpp
branches/proto/v4/boost/units/is_quantity.hpp
- copied unchanged from r46295, /trunk/boost/units/is_quantity.hpp
branches/proto/v4/boost/units/is_quantity_of_dimension.hpp
- copied unchanged from r46295, /trunk/boost/units/is_quantity_of_dimension.hpp
branches/proto/v4/boost/units/is_quantity_of_system.hpp
- copied unchanged from r46295, /trunk/boost/units/is_quantity_of_system.hpp
branches/proto/v4/boost/units/is_unit.hpp
- copied unchanged from r46295, /trunk/boost/units/is_unit.hpp
branches/proto/v4/boost/units/is_unit_of_dimension.hpp
- copied unchanged from r46295, /trunk/boost/units/is_unit_of_dimension.hpp
branches/proto/v4/boost/units/is_unit_of_system.hpp
- copied unchanged from r46295, /trunk/boost/units/is_unit_of_system.hpp
branches/proto/v4/boost/units/limits.hpp
- copied unchanged from r46295, /trunk/boost/units/limits.hpp
branches/proto/v4/boost/units/make_scaled_unit.hpp
- copied unchanged from r46295, /trunk/boost/units/make_scaled_unit.hpp
branches/proto/v4/boost/units/make_system.hpp
- copied unchanged from r46295, /trunk/boost/units/make_system.hpp
branches/proto/v4/boost/units/operators.hpp
- copied unchanged from r46295, /trunk/boost/units/operators.hpp
branches/proto/v4/boost/units/physical_dimensions/
- copied from r46295, /trunk/boost/units/physical_dimensions/
branches/proto/v4/boost/units/physical_dimensions.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions.hpp
branches/proto/v4/boost/units/physical_dimensions/absorbed_dose.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/absorbed_dose.hpp
branches/proto/v4/boost/units/physical_dimensions/acceleration.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/acceleration.hpp
branches/proto/v4/boost/units/physical_dimensions/action.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/action.hpp
branches/proto/v4/boost/units/physical_dimensions/activity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/activity.hpp
branches/proto/v4/boost/units/physical_dimensions/amount.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/amount.hpp
branches/proto/v4/boost/units/physical_dimensions/angular_acceleration.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/angular_acceleration.hpp
branches/proto/v4/boost/units/physical_dimensions/angular_momentum.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/angular_momentum.hpp
branches/proto/v4/boost/units/physical_dimensions/angular_velocity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/angular_velocity.hpp
branches/proto/v4/boost/units/physical_dimensions/area.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/area.hpp
branches/proto/v4/boost/units/physical_dimensions/capacitance.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/capacitance.hpp
branches/proto/v4/boost/units/physical_dimensions/conductance.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/conductance.hpp
branches/proto/v4/boost/units/physical_dimensions/conductivity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/conductivity.hpp
branches/proto/v4/boost/units/physical_dimensions/current.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/current.hpp
branches/proto/v4/boost/units/physical_dimensions/dose_equivalent.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/dose_equivalent.hpp
branches/proto/v4/boost/units/physical_dimensions/dynamic_viscosity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/dynamic_viscosity.hpp
branches/proto/v4/boost/units/physical_dimensions/electric_charge.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/electric_charge.hpp
branches/proto/v4/boost/units/physical_dimensions/electric_potential.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/electric_potential.hpp
branches/proto/v4/boost/units/physical_dimensions/energy.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/energy.hpp
branches/proto/v4/boost/units/physical_dimensions/energy_density.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/energy_density.hpp
branches/proto/v4/boost/units/physical_dimensions/force.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/force.hpp
branches/proto/v4/boost/units/physical_dimensions/frequency.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/frequency.hpp
branches/proto/v4/boost/units/physical_dimensions/heat_capacity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/heat_capacity.hpp
branches/proto/v4/boost/units/physical_dimensions/illuminance.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/illuminance.hpp
branches/proto/v4/boost/units/physical_dimensions/impedance.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/impedance.hpp
branches/proto/v4/boost/units/physical_dimensions/inductance.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/inductance.hpp
branches/proto/v4/boost/units/physical_dimensions/kinematic_viscosity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/kinematic_viscosity.hpp
branches/proto/v4/boost/units/physical_dimensions/length.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/length.hpp
branches/proto/v4/boost/units/physical_dimensions/luminance.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/luminance.hpp
branches/proto/v4/boost/units/physical_dimensions/luminous_flux.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/luminous_flux.hpp
branches/proto/v4/boost/units/physical_dimensions/luminous_intensity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/luminous_intensity.hpp
branches/proto/v4/boost/units/physical_dimensions/magnetic_field_intensity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/magnetic_field_intensity.hpp
branches/proto/v4/boost/units/physical_dimensions/magnetic_flux.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/magnetic_flux.hpp
branches/proto/v4/boost/units/physical_dimensions/magnetic_flux_density.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/magnetic_flux_density.hpp
branches/proto/v4/boost/units/physical_dimensions/mass.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/mass.hpp
branches/proto/v4/boost/units/physical_dimensions/mass_density.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/mass_density.hpp
branches/proto/v4/boost/units/physical_dimensions/molar_energy.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/molar_energy.hpp
branches/proto/v4/boost/units/physical_dimensions/molar_heat_capacity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/molar_heat_capacity.hpp
branches/proto/v4/boost/units/physical_dimensions/moment_of_inertia.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/moment_of_inertia.hpp
branches/proto/v4/boost/units/physical_dimensions/momentum.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/momentum.hpp
branches/proto/v4/boost/units/physical_dimensions/permeability.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/permeability.hpp
branches/proto/v4/boost/units/physical_dimensions/permittivity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/permittivity.hpp
branches/proto/v4/boost/units/physical_dimensions/plane_angle.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/plane_angle.hpp
branches/proto/v4/boost/units/physical_dimensions/power.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/power.hpp
branches/proto/v4/boost/units/physical_dimensions/pressure.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/pressure.hpp
branches/proto/v4/boost/units/physical_dimensions/reluctance.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/reluctance.hpp
branches/proto/v4/boost/units/physical_dimensions/resistance.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/resistance.hpp
branches/proto/v4/boost/units/physical_dimensions/resistivity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/resistivity.hpp
branches/proto/v4/boost/units/physical_dimensions/solid_angle.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/solid_angle.hpp
branches/proto/v4/boost/units/physical_dimensions/specific_energy.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/specific_energy.hpp
branches/proto/v4/boost/units/physical_dimensions/specific_heat_capacity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/specific_heat_capacity.hpp
branches/proto/v4/boost/units/physical_dimensions/specific_volume.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/specific_volume.hpp
branches/proto/v4/boost/units/physical_dimensions/stress.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/stress.hpp
branches/proto/v4/boost/units/physical_dimensions/surface_density.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/surface_density.hpp
branches/proto/v4/boost/units/physical_dimensions/surface_tension.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/surface_tension.hpp
branches/proto/v4/boost/units/physical_dimensions/temperature.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/temperature.hpp
branches/proto/v4/boost/units/physical_dimensions/thermal_conductivity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/thermal_conductivity.hpp
branches/proto/v4/boost/units/physical_dimensions/time.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/time.hpp
branches/proto/v4/boost/units/physical_dimensions/torque.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/torque.hpp
branches/proto/v4/boost/units/physical_dimensions/velocity.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/velocity.hpp
branches/proto/v4/boost/units/physical_dimensions/volume.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/volume.hpp
branches/proto/v4/boost/units/physical_dimensions/wavenumber.hpp
- copied unchanged from r46295, /trunk/boost/units/physical_dimensions/wavenumber.hpp
branches/proto/v4/boost/units/pow.hpp
- copied unchanged from r46295, /trunk/boost/units/pow.hpp
branches/proto/v4/boost/units/quantity.hpp
- copied unchanged from r46295, /trunk/boost/units/quantity.hpp
branches/proto/v4/boost/units/reduce_unit.hpp
- copied unchanged from r46295, /trunk/boost/units/reduce_unit.hpp
branches/proto/v4/boost/units/scale.hpp
- copied unchanged from r46295, /trunk/boost/units/scale.hpp
branches/proto/v4/boost/units/scaled_base_unit.hpp
- copied unchanged from r46295, /trunk/boost/units/scaled_base_unit.hpp
branches/proto/v4/boost/units/static_constant.hpp
- copied unchanged from r46295, /trunk/boost/units/static_constant.hpp
branches/proto/v4/boost/units/static_rational.hpp
- copied unchanged from r46295, /trunk/boost/units/static_rational.hpp
branches/proto/v4/boost/units/systems/
- copied from r46295, /trunk/boost/units/systems/
branches/proto/v4/boost/units/systems/abstract.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/abstract.hpp
branches/proto/v4/boost/units/systems/angle/
- copied from r46295, /trunk/boost/units/systems/angle/
branches/proto/v4/boost/units/systems/angle/degrees.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/angle/degrees.hpp
branches/proto/v4/boost/units/systems/angle/gradians.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/angle/gradians.hpp
branches/proto/v4/boost/units/systems/angle/revolutions.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/angle/revolutions.hpp
branches/proto/v4/boost/units/systems/cgs/
- copied from r46295, /trunk/boost/units/systems/cgs/
branches/proto/v4/boost/units/systems/cgs.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs.hpp
branches/proto/v4/boost/units/systems/cgs/acceleration.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/acceleration.hpp
branches/proto/v4/boost/units/systems/cgs/area.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/area.hpp
branches/proto/v4/boost/units/systems/cgs/base.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/base.hpp
branches/proto/v4/boost/units/systems/cgs/current.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/current.hpp
branches/proto/v4/boost/units/systems/cgs/dimensionless.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/dimensionless.hpp
branches/proto/v4/boost/units/systems/cgs/dynamic_viscosity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/dynamic_viscosity.hpp
branches/proto/v4/boost/units/systems/cgs/energy.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/energy.hpp
branches/proto/v4/boost/units/systems/cgs/force.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/force.hpp
branches/proto/v4/boost/units/systems/cgs/frequency.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/frequency.hpp
branches/proto/v4/boost/units/systems/cgs/io.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/io.hpp
branches/proto/v4/boost/units/systems/cgs/kinematic_viscosity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/kinematic_viscosity.hpp
branches/proto/v4/boost/units/systems/cgs/length.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/length.hpp
branches/proto/v4/boost/units/systems/cgs/mass.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/mass.hpp
branches/proto/v4/boost/units/systems/cgs/mass_density.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/mass_density.hpp
branches/proto/v4/boost/units/systems/cgs/momentum.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/momentum.hpp
branches/proto/v4/boost/units/systems/cgs/power.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/power.hpp
branches/proto/v4/boost/units/systems/cgs/pressure.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/pressure.hpp
branches/proto/v4/boost/units/systems/cgs/time.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/time.hpp
branches/proto/v4/boost/units/systems/cgs/velocity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/velocity.hpp
branches/proto/v4/boost/units/systems/cgs/volume.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/volume.hpp
branches/proto/v4/boost/units/systems/cgs/wavenumber.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/cgs/wavenumber.hpp
branches/proto/v4/boost/units/systems/detail/
- copied from r46295, /trunk/boost/units/systems/detail/
branches/proto/v4/boost/units/systems/detail/constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/detail/constants.hpp
branches/proto/v4/boost/units/systems/si/
- copied from r46295, /trunk/boost/units/systems/si/
branches/proto/v4/boost/units/systems/si.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si.hpp
branches/proto/v4/boost/units/systems/si/absorbed_dose.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/absorbed_dose.hpp
branches/proto/v4/boost/units/systems/si/acceleration.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/acceleration.hpp
branches/proto/v4/boost/units/systems/si/action.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/action.hpp
branches/proto/v4/boost/units/systems/si/activity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/activity.hpp
branches/proto/v4/boost/units/systems/si/amount.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/amount.hpp
branches/proto/v4/boost/units/systems/si/angular_acceleration.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/angular_acceleration.hpp
branches/proto/v4/boost/units/systems/si/angular_momentum.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/angular_momentum.hpp
branches/proto/v4/boost/units/systems/si/angular_velocity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/angular_velocity.hpp
branches/proto/v4/boost/units/systems/si/area.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/area.hpp
branches/proto/v4/boost/units/systems/si/base.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/base.hpp
branches/proto/v4/boost/units/systems/si/capacitance.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/capacitance.hpp
branches/proto/v4/boost/units/systems/si/catalytic_activity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/catalytic_activity.hpp
branches/proto/v4/boost/units/systems/si/codata/
- copied from r46295, /trunk/boost/units/systems/si/codata/
branches/proto/v4/boost/units/systems/si/codata/alpha_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/alpha_constants.hpp
branches/proto/v4/boost/units/systems/si/codata/atomic-nuclear_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/atomic-nuclear_constants.hpp
branches/proto/v4/boost/units/systems/si/codata/deuteron_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/deuteron_constants.hpp
branches/proto/v4/boost/units/systems/si/codata/electromagnetic_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/electromagnetic_constants.hpp
branches/proto/v4/boost/units/systems/si/codata/electron_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/electron_constants.hpp
branches/proto/v4/boost/units/systems/si/codata/helion_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/helion_constants.hpp
branches/proto/v4/boost/units/systems/si/codata/muon_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/muon_constants.hpp
branches/proto/v4/boost/units/systems/si/codata/neutron_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/neutron_constants.hpp
branches/proto/v4/boost/units/systems/si/codata/physico-chemical_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/physico-chemical_constants.hpp
branches/proto/v4/boost/units/systems/si/codata/proton_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/proton_constants.hpp
branches/proto/v4/boost/units/systems/si/codata/tau_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/tau_constants.hpp
branches/proto/v4/boost/units/systems/si/codata/triton_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/triton_constants.hpp
branches/proto/v4/boost/units/systems/si/codata/typedefs.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/typedefs.hpp
branches/proto/v4/boost/units/systems/si/codata/universal_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata/universal_constants.hpp
branches/proto/v4/boost/units/systems/si/codata_constants.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/codata_constants.hpp
branches/proto/v4/boost/units/systems/si/conductance.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/conductance.hpp
branches/proto/v4/boost/units/systems/si/conductivity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/conductivity.hpp
branches/proto/v4/boost/units/systems/si/current.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/current.hpp
branches/proto/v4/boost/units/systems/si/dimensionless.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/dimensionless.hpp
branches/proto/v4/boost/units/systems/si/dose_equivalent.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/dose_equivalent.hpp
branches/proto/v4/boost/units/systems/si/dynamic_viscosity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/dynamic_viscosity.hpp
branches/proto/v4/boost/units/systems/si/electric_charge.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/electric_charge.hpp
branches/proto/v4/boost/units/systems/si/electric_potential.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/electric_potential.hpp
branches/proto/v4/boost/units/systems/si/energy.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/energy.hpp
branches/proto/v4/boost/units/systems/si/force.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/force.hpp
branches/proto/v4/boost/units/systems/si/frequency.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/frequency.hpp
branches/proto/v4/boost/units/systems/si/illuminance.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/illuminance.hpp
branches/proto/v4/boost/units/systems/si/impedance.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/impedance.hpp
branches/proto/v4/boost/units/systems/si/inductance.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/inductance.hpp
branches/proto/v4/boost/units/systems/si/io.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/io.hpp
branches/proto/v4/boost/units/systems/si/kinematic_viscosity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/kinematic_viscosity.hpp
branches/proto/v4/boost/units/systems/si/length.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/length.hpp
branches/proto/v4/boost/units/systems/si/luminous_flux.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/luminous_flux.hpp
branches/proto/v4/boost/units/systems/si/luminous_intensity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/luminous_intensity.hpp
branches/proto/v4/boost/units/systems/si/magnetic_field_intensity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/magnetic_field_intensity.hpp
branches/proto/v4/boost/units/systems/si/magnetic_flux.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/magnetic_flux.hpp
branches/proto/v4/boost/units/systems/si/magnetic_flux_density.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/magnetic_flux_density.hpp
branches/proto/v4/boost/units/systems/si/mass.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/mass.hpp
branches/proto/v4/boost/units/systems/si/mass_density.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/mass_density.hpp
branches/proto/v4/boost/units/systems/si/moment_of_inertia.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/moment_of_inertia.hpp
branches/proto/v4/boost/units/systems/si/momentum.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/momentum.hpp
branches/proto/v4/boost/units/systems/si/permeability.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/permeability.hpp
branches/proto/v4/boost/units/systems/si/permittivity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/permittivity.hpp
branches/proto/v4/boost/units/systems/si/plane_angle.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/plane_angle.hpp
branches/proto/v4/boost/units/systems/si/power.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/power.hpp
branches/proto/v4/boost/units/systems/si/prefixes.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/prefixes.hpp
branches/proto/v4/boost/units/systems/si/pressure.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/pressure.hpp
branches/proto/v4/boost/units/systems/si/reluctance.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/reluctance.hpp
branches/proto/v4/boost/units/systems/si/resistance.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/resistance.hpp
branches/proto/v4/boost/units/systems/si/resistivity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/resistivity.hpp
branches/proto/v4/boost/units/systems/si/solid_angle.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/solid_angle.hpp
branches/proto/v4/boost/units/systems/si/surface_density.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/surface_density.hpp
branches/proto/v4/boost/units/systems/si/surface_tension.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/surface_tension.hpp
branches/proto/v4/boost/units/systems/si/temperature.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/temperature.hpp
branches/proto/v4/boost/units/systems/si/time.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/time.hpp
branches/proto/v4/boost/units/systems/si/torque.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/torque.hpp
branches/proto/v4/boost/units/systems/si/velocity.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/velocity.hpp
branches/proto/v4/boost/units/systems/si/volume.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/volume.hpp
branches/proto/v4/boost/units/systems/si/wavenumber.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/si/wavenumber.hpp
branches/proto/v4/boost/units/systems/temperature/
- copied from r46295, /trunk/boost/units/systems/temperature/
branches/proto/v4/boost/units/systems/temperature/celsius.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/temperature/celsius.hpp
branches/proto/v4/boost/units/systems/temperature/fahrenheit.hpp
- copied unchanged from r46295, /trunk/boost/units/systems/temperature/fahrenheit.hpp
branches/proto/v4/boost/units/unit.hpp
- copied unchanged from r46295, /trunk/boost/units/unit.hpp
branches/proto/v4/boost/units/units_fwd.hpp
- copied unchanged from r46295, /trunk/boost/units/units_fwd.hpp
branches/proto/v4/libs/asio/test/basic_serial_port.cpp
- copied unchanged from r46295, /trunk/libs/asio/test/basic_serial_port.cpp
branches/proto/v4/libs/asio/test/serial_port.cpp
- copied unchanged from r46295, /trunk/libs/asio/test/serial_port.cpp
branches/proto/v4/libs/asio/test/serial_port_base.cpp
- copied unchanged from r46295, /trunk/libs/asio/test/serial_port_base.cpp
branches/proto/v4/libs/asio/test/serial_port_service.cpp
- copied unchanged from r46295, /trunk/libs/asio/test/serial_port_service.cpp
branches/proto/v4/libs/serialization/doc/new_case_studies.html
- copied unchanged from r46295, /trunk/libs/serialization/doc/new_case_studies.html
branches/proto/v4/libs/serialization/doc/performance_status.html
- copied unchanged from r46295, /trunk/libs/serialization/doc/performance_status.html
branches/proto/v4/libs/serialization/doc/profile1.txt
- copied unchanged from r46295, /trunk/libs/serialization/doc/profile1.txt
branches/proto/v4/libs/serialization/doc/profile2.txt
- copied unchanged from r46295, /trunk/libs/serialization/doc/profile2.txt
branches/proto/v4/libs/serialization/doc/profile3.txt
- copied unchanged from r46295, /trunk/libs/serialization/doc/profile3.txt
branches/proto/v4/libs/serialization/doc/singleton.html
- copied unchanged from r46295, /trunk/libs/serialization/doc/singleton.html
branches/proto/v4/libs/serialization/doc/todo.html
- copied unchanged from r46295, /trunk/libs/serialization/doc/todo.html
branches/proto/v4/libs/serialization/performance/
- copied from r46295, /trunk/libs/serialization/performance/
branches/proto/v4/libs/serialization/performance/Jamfile.v2
- copied unchanged from r46295, /trunk/libs/serialization/performance/Jamfile.v2
branches/proto/v4/libs/serialization/performance/binary_archive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/binary_archive.hpp
branches/proto/v4/libs/serialization/performance/binary_warchive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/binary_warchive.hpp
branches/proto/v4/libs/serialization/performance/peformance_array.cpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/peformance_array.cpp
branches/proto/v4/libs/serialization/performance/performance_binary.cpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/performance_binary.cpp
branches/proto/v4/libs/serialization/performance/performance_codecvt_null.cpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/performance_codecvt_null.cpp
branches/proto/v4/libs/serialization/performance/performance_iterators.cpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/performance_iterators.cpp
branches/proto/v4/libs/serialization/performance/performance_iterators_base64.cpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/performance_iterators_base64.cpp
branches/proto/v4/libs/serialization/performance/performance_no_rtti.cpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/performance_no_rtti.cpp
branches/proto/v4/libs/serialization/performance/performance_polymorphic.cpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/performance_polymorphic.cpp
branches/proto/v4/libs/serialization/performance/performance_simple_class.cpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/performance_simple_class.cpp
branches/proto/v4/libs/serialization/performance/performance_utf8_codecvt.cpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/performance_utf8_codecvt.cpp
branches/proto/v4/libs/serialization/performance/performance_vector.cpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/performance_vector.cpp
branches/proto/v4/libs/serialization/performance/polymorphic_array_binary_archive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/polymorphic_array_binary_archive.hpp
branches/proto/v4/libs/serialization/performance/polymorphic_binary_archive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/polymorphic_binary_archive.hpp
branches/proto/v4/libs/serialization/performance/polymorphic_text_archive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/polymorphic_text_archive.hpp
branches/proto/v4/libs/serialization/performance/polymorphic_text_warchive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/polymorphic_text_warchive.hpp
branches/proto/v4/libs/serialization/performance/polymorphic_xml_archive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/polymorphic_xml_archive.hpp
branches/proto/v4/libs/serialization/performance/polymorphic_xml_warchive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/polymorphic_xml_warchive.hpp
branches/proto/v4/libs/serialization/performance/portable_binary_archive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/portable_binary_archive.hpp
branches/proto/v4/libs/serialization/performance/profile.sh
- copied unchanged from r46295, /trunk/libs/serialization/performance/profile.sh
branches/proto/v4/libs/serialization/performance/text_archive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/text_archive.hpp
branches/proto/v4/libs/serialization/performance/text_warchive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/text_warchive.hpp
branches/proto/v4/libs/serialization/performance/xml_archive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/xml_archive.hpp
branches/proto/v4/libs/serialization/performance/xml_warchive.hpp
- copied unchanged from r46295, /trunk/libs/serialization/performance/xml_warchive.hpp
branches/proto/v4/libs/units/
- copied from r46295, /trunk/libs/units/
branches/proto/v4/libs/units/boost.css
- copied unchanged from r46295, /trunk/libs/units/boost.css
branches/proto/v4/libs/units/doc/
- copied from r46295, /trunk/libs/units/doc/
branches/proto/v4/libs/units/doc/Jamfile.v2
- copied unchanged from r46295, /trunk/libs/units/doc/Jamfile.v2
branches/proto/v4/libs/units/doc/generate_base_units.jam
- copied unchanged from r46295, /trunk/libs/units/doc/generate_base_units.jam
branches/proto/v4/libs/units/doc/units.qbk
- copied unchanged from r46295, /trunk/libs/units/doc/units.qbk
branches/proto/v4/libs/units/example/
- copied from r46295, /trunk/libs/units/example/
branches/proto/v4/libs/units/example/Jamfile.v2
- copied unchanged from r46295, /trunk/libs/units/example/Jamfile.v2
branches/proto/v4/libs/units/example/complex.cpp
- copied unchanged from r46295, /trunk/libs/units/example/complex.cpp
branches/proto/v4/libs/units/example/composite_output.cpp
- copied unchanged from r46295, /trunk/libs/units/example/composite_output.cpp
branches/proto/v4/libs/units/example/conversion.cpp
- copied unchanged from r46295, /trunk/libs/units/example/conversion.cpp
branches/proto/v4/libs/units/example/conversion_factor.cpp
- copied unchanged from r46295, /trunk/libs/units/example/conversion_factor.cpp
branches/proto/v4/libs/units/example/dimension.cpp
- copied unchanged from r46295, /trunk/libs/units/example/dimension.cpp
branches/proto/v4/libs/units/example/heterogeneous_unit.cpp
- copied unchanged from r46295, /trunk/libs/units/example/heterogeneous_unit.cpp
branches/proto/v4/libs/units/example/kitchen_sink.cpp
- copied unchanged from r46295, /trunk/libs/units/example/kitchen_sink.cpp
branches/proto/v4/libs/units/example/measurement.hpp
- copied unchanged from r46295, /trunk/libs/units/example/measurement.hpp
branches/proto/v4/libs/units/example/non_base_dimension.cpp
- copied unchanged from r46295, /trunk/libs/units/example/non_base_dimension.cpp
branches/proto/v4/libs/units/example/performance.cpp
- copied unchanged from r46295, /trunk/libs/units/example/performance.cpp
branches/proto/v4/libs/units/example/quantity.cpp
- copied unchanged from r46295, /trunk/libs/units/example/quantity.cpp
branches/proto/v4/libs/units/example/quaternion.cpp
- copied unchanged from r46295, /trunk/libs/units/example/quaternion.cpp
branches/proto/v4/libs/units/example/radar_beam_height.cpp
- copied unchanged from r46295, /trunk/libs/units/example/radar_beam_height.cpp
branches/proto/v4/libs/units/example/runtime_conversion_factor.cpp
- copied unchanged from r46295, /trunk/libs/units/example/runtime_conversion_factor.cpp
branches/proto/v4/libs/units/example/runtime_unit.cpp
- copied unchanged from r46295, /trunk/libs/units/example/runtime_unit.cpp
branches/proto/v4/libs/units/example/runtime_unit_input.txt
- copied unchanged from r46295, /trunk/libs/units/example/runtime_unit_input.txt
branches/proto/v4/libs/units/example/systems.cpp
- copied unchanged from r46295, /trunk/libs/units/example/systems.cpp
branches/proto/v4/libs/units/example/temperature.cpp
- copied unchanged from r46295, /trunk/libs/units/example/temperature.cpp
branches/proto/v4/libs/units/example/test_system.hpp
- copied unchanged from r46295, /trunk/libs/units/example/test_system.hpp
branches/proto/v4/libs/units/example/tutorial.cpp
- copied unchanged from r46295, /trunk/libs/units/example/tutorial.cpp
branches/proto/v4/libs/units/example/unit.cpp
- copied unchanged from r46295, /trunk/libs/units/example/unit.cpp
branches/proto/v4/libs/units/images/
- copied from r46295, /trunk/libs/units/images/
branches/proto/v4/libs/units/images/form_0.png
- copied unchanged from r46295, /trunk/libs/units/images/form_0.png
branches/proto/v4/libs/units/images/form_1.png
- copied unchanged from r46295, /trunk/libs/units/images/form_1.png
branches/proto/v4/libs/units/images/form_10.png
- copied unchanged from r46295, /trunk/libs/units/images/form_10.png
branches/proto/v4/libs/units/images/form_11.png
- copied unchanged from r46295, /trunk/libs/units/images/form_11.png
branches/proto/v4/libs/units/images/form_12.png
- copied unchanged from r46295, /trunk/libs/units/images/form_12.png
branches/proto/v4/libs/units/images/form_13.png
- copied unchanged from r46295, /trunk/libs/units/images/form_13.png
branches/proto/v4/libs/units/images/form_14.png
- copied unchanged from r46295, /trunk/libs/units/images/form_14.png
branches/proto/v4/libs/units/images/form_15.png
- copied unchanged from r46295, /trunk/libs/units/images/form_15.png
branches/proto/v4/libs/units/images/form_2.png
- copied unchanged from r46295, /trunk/libs/units/images/form_2.png
branches/proto/v4/libs/units/images/form_3.png
- copied unchanged from r46295, /trunk/libs/units/images/form_3.png
branches/proto/v4/libs/units/images/form_4.png
- copied unchanged from r46295, /trunk/libs/units/images/form_4.png
branches/proto/v4/libs/units/images/form_5.png
- copied unchanged from r46295, /trunk/libs/units/images/form_5.png
branches/proto/v4/libs/units/images/form_6.png
- copied unchanged from r46295, /trunk/libs/units/images/form_6.png
branches/proto/v4/libs/units/images/form_7.png
- copied unchanged from r46295, /trunk/libs/units/images/form_7.png
branches/proto/v4/libs/units/images/form_8.png
- copied unchanged from r46295, /trunk/libs/units/images/form_8.png
branches/proto/v4/libs/units/images/form_9.png
- copied unchanged from r46295, /trunk/libs/units/images/form_9.png
branches/proto/v4/libs/units/index.html
- copied unchanged from r46295, /trunk/libs/units/index.html
branches/proto/v4/libs/units/test/
- copied from r46295, /trunk/libs/units/test/
branches/proto/v4/libs/units/test/Jamfile.v2
- copied unchanged from r46295, /trunk/libs/units/test/Jamfile.v2
branches/proto/v4/libs/units/test/check_conversion_defs.cpp
- copied unchanged from r46295, /trunk/libs/units/test/check_conversion_defs.cpp
branches/proto/v4/libs/units/test/fail_add_temperature.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_add_temperature.cpp
branches/proto/v4/libs/units/test/fail_adl_detail.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_adl_detail.cpp
branches/proto/v4/libs/units/test/fail_base_dimension.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_base_dimension.cpp
branches/proto/v4/libs/units/test/fail_heterogeneous_unit.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_heterogeneous_unit.cpp
branches/proto/v4/libs/units/test/fail_implicit_conversion.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_implicit_conversion.cpp
branches/proto/v4/libs/units/test/fail_quantity_add.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_quantity_add.cpp
branches/proto/v4/libs/units/test/fail_quantity_add_assign.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_quantity_add_assign.cpp
branches/proto/v4/libs/units/test/fail_quantity_assign.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_quantity_assign.cpp
branches/proto/v4/libs/units/test/fail_quantity_construct.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_quantity_construct.cpp
branches/proto/v4/libs/units/test/fail_quantity_non_unit.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_quantity_non_unit.cpp
branches/proto/v4/libs/units/test/fail_quantity_scalar_add.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_quantity_scalar_add.cpp
branches/proto/v4/libs/units/test/fail_quantity_scalar_sub.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_quantity_scalar_sub.cpp
branches/proto/v4/libs/units/test/fail_quantity_sub_assign.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_quantity_sub_assign.cpp
branches/proto/v4/libs/units/test/fail_quantity_subtract.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_quantity_subtract.cpp
branches/proto/v4/libs/units/test/fail_quantity_unit_add.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_quantity_unit_add.cpp
branches/proto/v4/libs/units/test/fail_quantity_unit_subtract.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_quantity_unit_subtract.cpp
branches/proto/v4/libs/units/test/fail_scalar_quantity_add.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_scalar_quantity_add.cpp
branches/proto/v4/libs/units/test/fail_scalar_quantity_sub.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_scalar_quantity_sub.cpp
branches/proto/v4/libs/units/test/fail_unit_quantity_add.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_unit_quantity_add.cpp
branches/proto/v4/libs/units/test/fail_unit_quantity_subtract.cpp
- copied unchanged from r46295, /trunk/libs/units/test/fail_unit_quantity_subtract.cpp
branches/proto/v4/libs/units/test/test_absolute.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_absolute.cpp
branches/proto/v4/libs/units/test/test_base_dimension.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_base_dimension.cpp
branches/proto/v4/libs/units/test/test_cmath.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_cmath.cpp
branches/proto/v4/libs/units/test/test_complicated_system.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_complicated_system.cpp
branches/proto/v4/libs/units/test/test_conversion.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_conversion.cpp
branches/proto/v4/libs/units/test/test_custom_unit.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_custom_unit.cpp
branches/proto/v4/libs/units/test/test_default_conversion.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_default_conversion.cpp
branches/proto/v4/libs/units/test/test_dimensionless_ice1.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_dimensionless_ice1.cpp
branches/proto/v4/libs/units/test/test_dimensionless_ice2.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_dimensionless_ice2.cpp
branches/proto/v4/libs/units/test/test_dimensionless_quantity.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_dimensionless_quantity.cpp
branches/proto/v4/libs/units/test/test_header.hpp
- copied unchanged from r46295, /trunk/libs/units/test/test_header.hpp
branches/proto/v4/libs/units/test/test_implicit_conversion.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_implicit_conversion.cpp
branches/proto/v4/libs/units/test/test_limits.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_limits.cpp
branches/proto/v4/libs/units/test/test_mixed_value_types.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_mixed_value_types.cpp
branches/proto/v4/libs/units/test/test_negative_denominator.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_negative_denominator.cpp
branches/proto/v4/libs/units/test/test_predicates.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_predicates.cpp
branches/proto/v4/libs/units/test/test_quantity.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_quantity.cpp
branches/proto/v4/libs/units/test/test_scaled_conversion.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_scaled_conversion.cpp
branches/proto/v4/libs/units/test/test_scaled_unit.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_scaled_unit.cpp
branches/proto/v4/libs/units/test/test_unit.cpp
- copied unchanged from r46295, /trunk/libs/units/test/test_unit.cpp
branches/proto/v4/libs/units/test_headers/
- copied from r46295, /trunk/libs/units/test_headers/
branches/proto/v4/libs/units/test_headers/Jamfile.v2
- copied unchanged from r46295, /trunk/libs/units/test_headers/Jamfile.v2
branches/proto/v4/libs/units/test_headers/generate_header.jam
- copied unchanged from r46295, /trunk/libs/units/test_headers/generate_header.jam
branches/proto/v4/libs/units/test_headers/main.cpp
- copied unchanged from r46295, /trunk/libs/units/test_headers/main.cpp
branches/proto/v4/libs/units/test_headers/test.cpp
- copied unchanged from r46295, /trunk/libs/units/test_headers/test.cpp
branches/proto/v4/libs/units/tutorial/
- copied from r46295, /trunk/libs/units/tutorial/
branches/proto/v4/libs/units/tutorial/tutorial_1.cpp
- copied unchanged from r46295, /trunk/libs/units/tutorial/tutorial_1.cpp
Removed:
branches/proto/v4/boost/serialization/is_abstract.hpp
branches/proto/v4/boost/thread/pthread/tss.hpp
branches/proto/v4/boost/thread/win32/tss.hpp
Properties modified:
branches/proto/v4/ (props changed)
Text files modified:
branches/proto/v4/boost/archive/array/iarchive.hpp | 6
branches/proto/v4/boost/archive/array/oarchive.hpp | 4
branches/proto/v4/boost/archive/detail/common_iarchive.hpp | 4
branches/proto/v4/boost/archive/detail/common_oarchive.hpp | 4
branches/proto/v4/boost/archive/detail/iserializer.hpp | 4
branches/proto/v4/boost/archive/detail/oserializer.hpp | 4
branches/proto/v4/boost/archive/detail/register_archive.hpp | 2
branches/proto/v4/boost/archive/impl/basic_xml_oarchive.ipp | 2
branches/proto/v4/boost/archive/impl/text_iarchive_impl.ipp | 2
branches/proto/v4/boost/archive/impl/xml_iarchive_impl.ipp | 4
branches/proto/v4/boost/archive/impl/xml_wiarchive_impl.ipp | 4
branches/proto/v4/boost/archive/xml_archive_exception.hpp | 1
branches/proto/v4/boost/asio.hpp | 4
branches/proto/v4/boost/asio/detail/descriptor_ops.hpp | 18 ++
branches/proto/v4/boost/asio/detail/reactive_descriptor_service.hpp | 2
branches/proto/v4/boost/asio/detail/win_iocp_handle_service.hpp | 4
branches/proto/v4/boost/config/platform/win32.hpp | 5
branches/proto/v4/boost/serialization/collection_traits.hpp | 16 +
branches/proto/v4/boost/serialization/collections_load_imp.hpp | 2
branches/proto/v4/boost/serialization/config.hpp | 6
branches/proto/v4/boost/serialization/deque.hpp | 2
branches/proto/v4/boost/serialization/detail/shared_count_132.hpp | 19 -
branches/proto/v4/boost/serialization/detail/shared_ptr_132.hpp | 2
branches/proto/v4/boost/serialization/export.hpp | 10
branches/proto/v4/boost/serialization/extended_type_info.hpp | 8
branches/proto/v4/boost/serialization/shared_ptr_132.hpp | 11
branches/proto/v4/boost/serialization/valarray.hpp | 4
branches/proto/v4/boost/serialization/variant.hpp | 10
branches/proto/v4/boost/static_warning.hpp | 11
branches/proto/v4/boost/test/impl/execution_monitor.ipp | 2
branches/proto/v4/boost/test/test_tools.hpp | 2
branches/proto/v4/boost/thread/detail/thread.hpp | 14 +
branches/proto/v4/boost/thread/locks.hpp | 12 +
branches/proto/v4/boost/thread/win32/thread_primitives.hpp | 6
branches/proto/v4/libs/regex/src/posix_api.cpp | 16 +
branches/proto/v4/libs/regex/src/wide_posix_api.cpp | 16 +
branches/proto/v4/libs/serialization/doc/archives.html | 22 +-
branches/proto/v4/libs/serialization/doc/contents.html | 19 ++
branches/proto/v4/libs/serialization/doc/release.html | 10
branches/proto/v4/libs/serialization/doc/serialization.html | 4
branches/proto/v4/libs/serialization/example/demo.cpp | 2
branches/proto/v4/libs/serialization/example/demo_dll_a.hpp | 2
branches/proto/v4/libs/serialization/example/demo_dll_a.ipp | 2
branches/proto/v4/libs/serialization/example/portable_binary_oarchive.cpp | 2
branches/proto/v4/libs/serialization/src/basic_iarchive.cpp | 19 +
branches/proto/v4/libs/serialization/src/basic_xml_grammar.ipp | 4
branches/proto/v4/libs/serialization/src/codecvt_null.cpp | 2
branches/proto/v4/libs/serialization/test/A.cpp | 2
branches/proto/v4/libs/serialization/test/A.hpp | 1
branches/proto/v4/libs/serialization/test/base.hpp | 2
branches/proto/v4/libs/serialization/test/test_delete_pointer.cpp | 13
branches/proto/v4/libs/serialization/test/test_no_rtti.cpp | 1
branches/proto/v4/libs/serialization/test/test_non_default_ctor.cpp | 2
branches/proto/v4/libs/serialization/test/test_non_default_ctor2.cpp | 7
branches/proto/v4/libs/serialization/test/test_static_warning.cpp | 1
branches/proto/v4/libs/thread/test/test_lock_concept.cpp | 33 +++
branches/proto/v4/libs/thread/test/test_tss.cpp | 48 +++++
branches/proto/v4/status/Jamfile.v2 | 1
branches/proto/v4/tools/build/v2/build/feature.jam | 49 +++++
branches/proto/v4/tools/build/v2/build/project.jam | 94 ++++++-----
branches/proto/v4/tools/build/v2/build/property-set.jam | 42 +++-
branches/proto/v4/tools/build/v2/build/property.jam | 43 +++-
branches/proto/v4/tools/build/v2/build/targets.jam | 112 +++++++------
branches/proto/v4/tools/build/v2/build/toolset.jam | 2
branches/proto/v4/tools/build/v2/build/type.jam | 22 ++
branches/proto/v4/tools/build/v2/build/version.jam | 2
branches/proto/v4/tools/build/v2/build/virtual-target.jam | 2
branches/proto/v4/tools/build/v2/doc/src/tutorial.xml | 179 ++++++++++-----------
branches/proto/v4/tools/build/v2/kernel/class.jam | 154 ++++++++---------
branches/proto/v4/tools/build/v2/kernel/errors.jam | 12 +
branches/proto/v4/tools/build/v2/kernel/modules.jam | 92 +++++-----
branches/proto/v4/tools/build/v2/tools/msvc.jam | 6
branches/proto/v4/tools/build/v2/tools/stage.jam | 9
branches/proto/v4/tools/build/v2/util/assert.jam | 318 +++++++++++++++++++++++++++++--------
branches/proto/v4/tools/build/v2/util/container.jam | 333 +++++++++++++++++++++------------------
branches/proto/v4/tools/build/v2/util/doc.jam | 281 ++++++++++++++++++---------------
branches/proto/v4/tools/build/v2/util/indirect.jam | 5
branches/proto/v4/tools/build/v2/util/path.jam | 24 +-
branches/proto/v4/tools/build/v2/util/print.jam | 134 ++++++++-------
branches/proto/v4/tools/build/v2/util/sequence.jam | 2
branches/proto/v4/tools/build/v2/util/utility.jam | 2
branches/proto/v4/tools/inspect/ascii_check.cpp | 4
branches/proto/v4/tools/inspect/build/Jamfile.v2 | 2
83 files changed, 1430 insertions(+), 937 deletions(-)
Modified: branches/proto/v4/boost/archive/array/iarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/array/iarchive.hpp (original)
+++ branches/proto/v4/boost/archive/array/iarchive.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -66,7 +66,7 @@
// the optimized implementation for vector uses serialization::array
template<class ValueType, class Allocator>
void load_optimized(
- std::vector<ValueType, Allocator> &t, unsigned int version, mpl::true_)
+ std::vector<ValueType, Allocator> &t, unsigned int /*version*/, mpl::true_)
{
t.clear();
// retrieve number of elements
@@ -92,7 +92,7 @@
template<class ValueType, class Allocator>
void load_override(std::vector<ValueType,Allocator> &x, unsigned int version)
{
- typedef typename mpl::and_<
+ typedef BOOST_DEDUCED_TYPENAME mpl::and_<
mpl::not_<is_same<ValueType,bool> >,
mpl::apply1<
BOOST_DEDUCED_TYPENAME Archive::use_array_optimization
@@ -105,7 +105,7 @@
template<class ValueType>
void load_override(serialization::array<ValueType> const& x, unsigned int version)
{
- typedef typename mpl::apply1<
+ typedef BOOST_DEDUCED_TYPENAME mpl::apply1<
BOOST_DEDUCED_TYPENAME Archive::use_array_optimization
, ValueType
>::type use_optimized;
Modified: branches/proto/v4/boost/archive/array/oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/array/oarchive.hpp (original)
+++ branches/proto/v4/boost/archive/array/oarchive.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -90,7 +90,7 @@
void save_override(std::vector<ValueType,Allocator> const &x, unsigned int version)
{
typedef BOOST_DEDUCED_TYPENAME remove_const<ValueType>::type value_type;
- typedef typename mpl::and_<
+ typedef BOOST_DEDUCED_TYPENAME mpl::and_<
mpl::not_<is_same<value_type,bool> >,
mpl::apply1<
BOOST_DEDUCED_TYPENAME Archive::use_array_optimization
@@ -103,7 +103,7 @@
template<class ValueType>
void save_override(serialization::array<ValueType> const& x, unsigned int version)
{
- typedef typename mpl::apply1<
+ typedef BOOST_DEDUCED_TYPENAME mpl::apply1<
BOOST_DEDUCED_TYPENAME Archive::use_array_optimization
, BOOST_DEDUCED_TYPENAME remove_const<ValueType>::type
>::type use_optimized;
Modified: branches/proto/v4/boost/archive/detail/common_iarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/common_iarchive.hpp (original)
+++ branches/proto/v4/boost/archive/detail/common_iarchive.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -60,8 +60,8 @@
}
// default implementations of functions which emit start/end tags for
// archive types that require them.
- void load_start(const char *name){}
- void load_end(const char *name){}
+ void load_start(const char * /*name*/){}
+ void load_end(const char * /*name*/){}
// default archive initialization
common_iarchive(unsigned int flags = 0) :
basic_iarchive(flags),
Modified: branches/proto/v4/boost/archive/detail/common_oarchive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/common_oarchive.hpp (original)
+++ branches/proto/v4/boost/archive/detail/common_oarchive.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -63,8 +63,8 @@
void save_override(T & t, BOOST_PFTO int){
archive::save(* this->This(), t);
}
- void save_start(const char *name){}
- void save_end(const char *name){}
+ void save_start(const char * /*name*/){}
+ void save_end(const char * /*name*/){}
common_oarchive(unsigned int flags = 0) :
basic_oarchive(flags),
interface_oarchive<Archive>()
Modified: branches/proto/v4/boost/archive/detail/iserializer.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/iserializer.hpp (original)
+++ branches/proto/v4/boost/archive/detail/iserializer.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -44,7 +44,7 @@
#include <boost/type_traits/is_const.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/type_traits/remove_all_extents.hpp>
-#include <boost/serialization/is_abstract.hpp>
+#include <boost/serialization/assume_abstract.hpp>
#include <boost/type_traits/is_polymorphic.hpp>
#include <boost/mpl/eval_if.hpp>
@@ -469,7 +469,7 @@
template<class Archive, class T>
struct load_array_type {
static void invoke(Archive &ar, T &t){
- typedef typename remove_all_extents<T>::type value_type;
+ typedef BOOST_DEDUCED_TYPENAME remove_all_extents<T>::type value_type;
// convert integers to correct enum to load
int current_count = sizeof(t) / (
Modified: branches/proto/v4/boost/archive/detail/oserializer.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/oserializer.hpp (original)
+++ branches/proto/v4/boost/archive/detail/oserializer.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -38,7 +38,7 @@
//#include <boost/type_traits/is_same.hpp>
#include <boost/type_traits/is_polymorphic.hpp>
#include <boost/type_traits/remove_all_extents.hpp>
-#include <boost/serialization/is_abstract.hpp>
+#include <boost/serialization/assume_abstract.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/and.hpp>
@@ -464,7 +464,7 @@
struct save_array_type
{
static void invoke(Archive &ar, const T &t){
- typedef typename remove_all_extents<T>::type value_type;
+ typedef BOOST_DEDUCED_TYPENAME remove_all_extents<T>::type value_type;
save_access::end_preamble(ar);
// consider alignment
Modified: branches/proto/v4/boost/archive/detail/register_archive.hpp
==============================================================================
--- branches/proto/v4/boost/archive/detail/register_archive.hpp (original)
+++ branches/proto/v4/boost/archive/detail/register_archive.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -43,7 +43,7 @@
namespace boost { namespace archive { namespace detail { \
\
template <class Serializable> \
-typename _ptr_serialization_support<Archive, Serializable>::type \
+BOOST_DEDUCED_TYPENAME _ptr_serialization_support<Archive, Serializable>::type \
instantiate_ptr_serialization( Serializable*, Archive*, adl_tag ); \
\
}}}
Modified: branches/proto/v4/boost/archive/impl/basic_xml_oarchive.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/basic_xml_oarchive.ipp (original)
+++ branches/proto/v4/boost/archive/impl/basic_xml_oarchive.ipp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -263,7 +263,7 @@
basic_xml_oarchive<Archive>::~basic_xml_oarchive(){
if(0 == (this->get_flags() & no_header)){
BOOST_TRY{
- this->This()->put("</boost_serialization>");
+ this->This()->put("</boost_serialization>\n");
}
BOOST_CATCH(...){}
BOOST_CATCH_END
Modified: branches/proto/v4/boost/archive/impl/text_iarchive_impl.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/text_iarchive_impl.ipp (original)
+++ branches/proto/v4/boost/archive/impl/text_iarchive_impl.ipp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -54,7 +54,7 @@
#endif
s.resize(size);
if(0 < size)
- is.read(&(*s.begin()), size);
+ is.read(&(*s.begin()), size);
}
#ifndef BOOST_NO_CWCHAR
Modified: branches/proto/v4/boost/archive/impl/xml_iarchive_impl.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/xml_iarchive_impl.ipp (original)
+++ branches/proto/v4/boost/archive/impl/xml_iarchive_impl.ipp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -143,7 +143,9 @@
xml_iarchive_impl<Archive>::load_override(class_name_type & t, int){
const std::string & s = gimpl->rv.class_name;
if(s.size() > BOOST_SERIALIZATION_MAX_KEY_SIZE - 1)
- boost::throw_exception( archive_exception( archive_exception::invalid_class_name ) );
+ boost::throw_exception(
+ archive_exception(archive_exception::invalid_class_name)
+ );
char * tptr = t;
std::memcpy(tptr, s.data(), s.size());
tptr[s.size()] = '\0';
Modified: branches/proto/v4/boost/archive/impl/xml_wiarchive_impl.ipp
==============================================================================
--- branches/proto/v4/boost/archive/impl/xml_wiarchive_impl.ipp (original)
+++ branches/proto/v4/boost/archive/impl/xml_wiarchive_impl.ipp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -136,7 +136,9 @@
xml_wiarchive_impl<Archive>::load_override(class_name_type & t, int){
const std::wstring & ws = gimpl->rv.class_name;
if(ws.size() > BOOST_SERIALIZATION_MAX_KEY_SIZE - 1)
- boost::throw_exception( archive_exception( archive_exception::invalid_class_name ) );
+ boost::throw_exception(
+ archive_exception(archive_exception::invalid_class_name)
+ );
copy_to_ptr(t, ws);
}
Modified: branches/proto/v4/boost/archive/xml_archive_exception.hpp
==============================================================================
--- branches/proto/v4/boost/archive/xml_archive_exception.hpp (original)
+++ branches/proto/v4/boost/archive/xml_archive_exception.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -36,6 +36,7 @@
xml_archive_tag_mismatch,
xml_archive_tag_name_error
} exception_code;
+ exception_code code;
xml_archive_exception(exception_code c)
{}
virtual const char *what( ) const throw( )
Modified: branches/proto/v4/boost/asio.hpp
==============================================================================
--- branches/proto/v4/boost/asio.hpp (original)
+++ branches/proto/v4/boost/asio.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -21,6 +21,7 @@
#include <boost/asio/basic_deadline_timer.hpp>
#include <boost/asio/basic_io_object.hpp>
#include <boost/asio/basic_raw_socket.hpp>
+#include <boost/asio/basic_serial_port.hpp>
#include <boost/asio/basic_socket_acceptor.hpp>
#include <boost/asio/basic_socket_iostream.hpp>
#include <boost/asio/basic_socket_streambuf.hpp>
@@ -73,6 +74,9 @@
#include <boost/asio/raw_socket_service.hpp>
#include <boost/asio/read.hpp>
#include <boost/asio/read_until.hpp>
+#include <boost/asio/serial_port.hpp>
+#include <boost/asio/serial_port_base.hpp>
+#include <boost/asio/serial_port_service.hpp>
#include <boost/asio/socket_acceptor_service.hpp>
#include <boost/asio/socket_base.hpp>
#include <boost/asio/strand.hpp>
Modified: branches/proto/v4/boost/asio/detail/descriptor_ops.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/descriptor_ops.hpp (original)
+++ branches/proto/v4/boost/asio/detail/descriptor_ops.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -47,6 +47,12 @@
return return_value;
}
+inline int open(const char* path, int flags, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ return error_wrapper(::open(path, flags), ec);
+}
+
inline int close(int d, boost::system::error_code& ec)
{
clear_error(ec);
@@ -88,6 +94,18 @@
return error_wrapper(::ioctl(d, cmd, arg), ec);
}
+inline int fcntl(int d, long cmd, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ return error_wrapper(::fcntl(d, cmd), ec);
+}
+
+inline int fcntl(int d, long cmd, long arg, boost::system::error_code& ec)
+{
+ clear_error(ec);
+ return error_wrapper(::fcntl(d, cmd, arg), ec);
+}
+
inline int poll_read(int d, boost::system::error_code& ec)
{
clear_error(ec);
Modified: branches/proto/v4/boost/asio/detail/reactive_descriptor_service.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/reactive_descriptor_service.hpp (original)
+++ branches/proto/v4/boost/asio/detail/reactive_descriptor_service.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -177,7 +177,7 @@
}
// Get the native descriptor representation.
- native_type native(implementation_type& impl)
+ native_type native(const implementation_type& impl) const
{
return impl.descriptor_;
}
Modified: branches/proto/v4/boost/asio/detail/win_iocp_handle_service.hpp
==============================================================================
--- branches/proto/v4/boost/asio/detail/win_iocp_handle_service.hpp (original)
+++ branches/proto/v4/boost/asio/detail/win_iocp_handle_service.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -155,7 +155,7 @@
// Destroy a handle implementation.
boost::system::error_code close(implementation_type& impl,
- boost::system::error_code& ec)
+ boost::system::error_code& ec)
{
if (is_open(impl))
{
@@ -176,7 +176,7 @@
}
// Get the native handle representation.
- native_type native(implementation_type& impl)
+ native_type native(const implementation_type& impl) const
{
return impl.handle_;
}
Modified: branches/proto/v4/boost/config/platform/win32.hpp
==============================================================================
--- branches/proto/v4/boost/config/platform/win32.hpp (original)
+++ branches/proto/v4/boost/config/platform/win32.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -52,10 +52,7 @@
#ifndef BOOST_DISABLE_WIN32
// WEK: Added
-#ifndef _WIN32_WCE
- // GetSystemTimeAsFileTime not present on WinCE.
-# define BOOST_HAS_FTIME
-#endif
+#define BOOST_HAS_FTIME
#define BOOST_WINDOWS 1
#endif
Modified: branches/proto/v4/boost/serialization/collection_traits.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/collection_traits.hpp (original)
+++ branches/proto/v4/boost/serialization/collection_traits.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -27,6 +27,7 @@
#include <boost/mpl/integral_c_tag.hpp>
#include <boost/cstdint.hpp>
+#include <climits> // ULONG_MAX
#include <boost/serialization/level.hpp>
#define BOOST_SERIALIZATION_COLLECTION_TRAITS_HELPER(T, C) \
@@ -50,10 +51,17 @@
// i.e. that its not a synonym for (unsigned) long
// if there is no 64 bit int or if its the same as a long
// we shouldn't define separate functions for int64 data types.
-#if defined(BOOST_NO_INT64_T) \
- || (ULONG_MAX != 0xffffffff && ULONG_MAX == 18446744073709551615u) // 2**64 - 1
-# define BOOST_NO_INTRINSIC_INT64_T
-#endif
+#if defined(BOOST_NO_INT64_T)
+ #define BOOST_NO_INTRINSIC_INT64_T
+#else
+ #if defined(ULONG_MAX)
+ #if(ULONG_MAX != 0xffffffff && ULONG_MAX == 18446744073709551615u) // 2**64 - 1
+ #define BOOST_NO_INTRINSIC_INT64_T
+ #endif
+ #else
+ #define BOOST_NO_INTRINSIC_INT64_T
+ #endif
+#endif
#if !defined(BOOST_NO_INTRINSIC_INT64_T)
#define BOOST_SERIALIZATION_COLLECTION_TRAITS_HELPER_INT64(C) \
Modified: branches/proto/v4/boost/serialization/collections_load_imp.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/collections_load_imp.hpp (original)
+++ branches/proto/v4/boost/serialization/collections_load_imp.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -67,7 +67,7 @@
const unsigned int v
){
typedef BOOST_DEDUCED_TYPENAME Container::value_type type;
- detail::stack_construct<Archive, type>t(ar, v);
+ detail::stack_construct<Archive, type> t(ar, v);
// borland fails silently w/o full namespace
ar >> boost::serialization::make_nvp("item", t.reference());
std::pair<BOOST_DEDUCED_TYPENAME Container::const_iterator, bool> result =
Modified: branches/proto/v4/boost/serialization/config.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/config.hpp (original)
+++ branches/proto/v4/boost/serialization/config.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -69,6 +69,12 @@
//
#define BOOST_LIB_NAME boost_serialization
//
+ // If we're importing code from a dll, then tell auto_link.hpp about it:
+ //
+ #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SERIALIZATION_DYN_LINK)
+ # define BOOST_DYN_LINK
+ #endif
+ //
// And include the header that does the work:
//
#include <boost/config/auto_link.hpp>
Modified: branches/proto/v4/boost/serialization/deque.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/deque.hpp (original)
+++ branches/proto/v4/boost/serialization/deque.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -42,7 +42,7 @@
inline void load(
Archive & ar,
std::deque<U, Allocator> &t,
- const unsigned int file_version
+ const unsigned int /*file_version*/
){
boost::serialization::stl::load_collection<
Archive,
Modified: branches/proto/v4/boost/serialization/detail/shared_count_132.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/detail/shared_count_132.hpp (original)
+++ branches/proto/v4/boost/serialization/detail/shared_count_132.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -45,10 +45,6 @@
namespace boost_132 {
-#if !BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x564) )
-using namespace boost;
-#endif
-
// Debug hooks
#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
@@ -87,19 +83,12 @@
#endif
namespace detail{
-#if !BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x564) )
-using namespace boost::detail;
-#endif
class sp_counted_base
{
//private:
-#if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x564) )
typedef boost::detail::lightweight_mutex mutex_type;
-#else
- typedef detail::lightweight_mutex mutex_type;
-#endif
public:
@@ -372,7 +361,11 @@
// auto_ptr<Y> is special cased to provide the strong guarantee
template<class Y>
- explicit shared_count(std::auto_ptr<Y> & r): pi_(new sp_counted_base_impl< Y *, checked_deleter<Y> >(r.get(), checked_deleter<Y>()))
+ explicit shared_count(std::auto_ptr<Y> & r): pi_(
+ new sp_counted_base_impl<
+ Y *,
+ boost::checked_deleter<Y>
+ >(r.get(), boost::checked_deleter<Y>()))
#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
, id_(shared_count_id)
#endif
@@ -559,6 +552,8 @@
} // namespace boost
+BOOST_SERIALIZATION_ASSUME_ABSTRACT(boost_132::detail::sp_counted_base)
+
#ifdef __BORLANDC__
# pragma warn .8027 // Functions containing try are not expanded inline
# pragma warn .8026 // Functions with excep. spec. are not expanded inline
Modified: branches/proto/v4/boost/serialization/detail/shared_ptr_132.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/detail/shared_ptr_132.hpp (original)
+++ branches/proto/v4/boost/serialization/detail/shared_ptr_132.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -118,7 +118,7 @@
typedef T element_type;
typedef T value_type;
typedef T * pointer;
- typedef typename detail::shared_ptr_traits<T>::reference reference;
+ typedef BOOST_DEDUCED_TYPENAME detail::shared_ptr_traits<T>::reference reference;
shared_ptr(): px(0), pn() // never throws in 1.30+
{
Modified: branches/proto/v4/boost/serialization/export.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/export.hpp (original)
+++ branches/proto/v4/boost/serialization/export.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -33,7 +33,7 @@
#include <boost/serialization/extended_type_info_typeid.hpp>
#endif
#include <boost/serialization/type_info_implementation.hpp>
-#include <boost/serialization/is_abstract.hpp>
+#include <boost/serialization/assume_abstract.hpp>
#include <boost/serialization/force_include.hpp>
#include <boost/serialization/singleton.hpp>
@@ -62,14 +62,14 @@
{
static const basic_pointer_iserializer &
enable_load(mpl::true_){
- return boost::serialization::singleton<
+ return /* BOOST_DEDUCED_TYPENAME */ boost::serialization::singleton<
pointer_iserializer<Archive, Serializable>
>::get_const_instance();
}
static const basic_pointer_oserializer &
enable_save(mpl::true_){
- return boost::serialization::singleton<
+ return /* BOOST_DEDUCED_TYPENAME */ boost::serialization::singleton<
pointer_oserializer<Archive, Serializable>
>::get_const_instance();
}
@@ -90,7 +90,7 @@
# elif defined(__INTEL_COMPILER)
virtual BOOST_DLLEXPORT void instantiate() BOOST_USED;
# elif defined(__BORLANDC__)
- static void instantiate();
+ static BOOST_DLLEXPORT void instantiate();
enum { x = sizeof(instantiate(),3) };
# else
static void instantiate();
@@ -122,7 +122,7 @@
instantiate_ptr_serialization((T*)0, 0, adl_tag());
return *this;
}
- const guid_initializer & export_guid(char const* key, mpl::true_){
+ const guid_initializer & export_guid(char const* /*key*/, mpl::true_){
return *this;
}
const guid_initializer & export_guid(char const* key){
Modified: branches/proto/v4/boost/serialization/extended_type_info.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/extended_type_info.hpp (original)
+++ branches/proto/v4/boost/serialization/extended_type_info.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -42,12 +42,12 @@
// included in implementation of sets and maps.
const unsigned int m_type_info_key;
virtual bool
- is_less_than(const extended_type_info &rhs) const {
+ is_less_than(const extended_type_info & /*rhs*/) const {
assert(false);
return false;
};
virtual bool
- is_equal(const extended_type_info &rhs) const {
+ is_equal(const extended_type_info & /*rhs*/) const {
assert(false);
return false;
};
@@ -75,11 +75,11 @@
}
static const extended_type_info * find(const char *key);
// for plugins
- virtual void * construct(unsigned int count = 0, ...) const {
+ virtual void * construct(unsigned int /*count*/ = 0, ...) const {
assert(false); // must be implemented if used
return NULL;
};
- virtual void destroy(void const * const p) const {
+ virtual void destroy(void const * const /*p*/) const {
assert(false); // must be implemented if used
}
};
Deleted: branches/proto/v4/boost/serialization/is_abstract.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/is_abstract.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
+++ (empty file)
@@ -1,57 +0,0 @@
-#ifndef BOOST_SERIALIZATION_IS_ABSTRACT_CLASS_HPP
-#define BOOST_SERIALIZATION_IS_ABSTRACT_CLASS_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// is_abstract_class.hpp:
-
-// (C) Copyright 2008 Robert Ramey
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-// this is useful for compilers which don't support the boost::is_abstract
-
-#include <boost/type_traits/is_abstract.hpp>
-
-#ifndef BOOST_NO_IS_ABSTRACT
-
-// if there is an intrinsic is_abstract defined, we don't have to do anything
-#define BOOST_SERIALIZATION_ASSUME_ABSTRACT(T)
-
-// but forward to the "official" is_abstract
-namespace boost {
-namespace serialization {
- template<class T>
- struct is_abstract : boost::is_abstract<T> {} ;
-} // namespace serialization
-} // namespace boost
-
-#else
-// we have to "make" one
-
-namespace boost {
-namespace serialization {
- template<class T>
- struct is_abstract : boost::false_type {};
-} // namespace serialization
-} // namespace boost
-
-// define a macro to make explicit designation of this more transparent
-#define BOOST_SERIALIZATION_ASSUME_ABSTRACT(T) \
-namespace boost { \
-namespace serialization { \
-template<> \
-struct is_abstract<const T > : boost::true_type {}; \
-}} \
-/**/
-
-#endif // BOOST_NO_IS_ABSTRACT
-
-#endif //BOOST_SERIALIZATION_IS_ABSTRACT_CLASS_HPP
Modified: branches/proto/v4/boost/serialization/shared_ptr_132.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/shared_ptr_132.hpp (original)
+++ branches/proto/v4/boost/serialization/shared_ptr_132.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -24,16 +24,14 @@
#include <list>
-#include <boost/serialization/detail/shared_ptr_132.hpp>
-
-#include <boost/serialization/is_abstract.hpp>
+#include <boost/serialization/assume_abstract.hpp>
#include <boost/serialization/split_free.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/serialization/tracking.hpp>
#include <boost/serialization/void_cast.hpp>
// mark base class as an (uncreatable) base class
-BOOST_SERIALIZATION_ASSUME_ABSTRACT(boost_132::detail::sp_counted_base)
+#include <boost/serialization/detail/shared_ptr_132.hpp>
/////////////////////////////////////////////////////////////
// Maintain a couple of lists of loaded shared pointers of the old previous
@@ -77,8 +75,9 @@
template<class Archive, class P, class D>
inline void save_construct_data(
Archive & ar,
- const boost_132::detail::sp_counted_base_impl<P, D> *t,
- const unsigned int /* file_version */
+ const
+ boost_132::detail::sp_counted_base_impl<P, D> *t,
+ const BOOST_PFTO unsigned int /* file_version */
){
// variables used for construction
ar << boost::serialization::make_nvp("ptr", t->ptr);
Modified: branches/proto/v4/boost/serialization/valarray.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/valarray.hpp (original)
+++ branches/proto/v4/boost/serialization/valarray.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -37,7 +37,7 @@
// valarray<T>
template<class Archive, class U>
-void save( Archive & ar, const STD::valarray<U> &t, const unsigned int file_version )
+void save( Archive & ar, const STD::valarray<U> &t, const unsigned int /*file_version*/ )
{
const collection_size_type count(t.size());
ar << BOOST_SERIALIZATION_NVP(count);
@@ -47,7 +47,7 @@
template<class Archive, class U>
-void load( Archive & ar, STD::valarray<U> &t, const unsigned int file_version )
+void load( Archive & ar, STD::valarray<U> &t, const unsigned int /*file_version*/ )
{
collection_size_type count;
ar >> BOOST_SERIALIZATION_NVP(count);
Modified: branches/proto/v4/boost/serialization/variant.hpp
==============================================================================
--- branches/proto/v4/boost/serialization/variant.hpp (original)
+++ branches/proto/v4/boost/serialization/variant.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -63,7 +63,7 @@
void save(
Archive & ar,
boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> const & v,
- unsigned int version
+ unsigned int /*version*/
){
int which = v.which();
ar << BOOST_SERIALIZATION_NVP(which);
@@ -78,10 +78,10 @@
struct load_null {
template<class Archive, class V>
static void invoke(
- Archive & ar,
- int which,
- V & v,
- unsigned int version
+ Archive & /*ar*/,
+ int /*which*/,
+ V & /*v*/,
+ unsigned int /*version*/
){}
};
Modified: branches/proto/v4/boost/static_warning.hpp
==============================================================================
--- branches/proto/v4/boost/static_warning.hpp (original)
+++ branches/proto/v4/boost/static_warning.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -76,7 +76,8 @@
# endif
//------------------Configure-------------------------------------------------//
-# if defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)
+# if defined(BOOST_INTEL)
+# elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x600)
# define BOOST_HAS_DESCRIPTIVE_UNREFERENCED_VARIABLE_WARNING
# elif defined(__PGI)
# define BOOST_HAS_DESCRIPTIVE_DIVIDE_BY_ZERO_WARNING
@@ -89,6 +90,8 @@
# elif defined(BOOST_MSVC) // && (BOOST_MSVC < 1300)
# define BOOST_NO_PREDEFINED_LINE_MACRO
# pragma warning(disable:4094) // C4094: untagged 'struct' declared no symbols
+# else
+# define BOOST_HAS_DESCRIPTIVE_INCOMPLETE_TYPE_WARNING
#endif
//------------------Helper templates------------------------------------------//
@@ -166,13 +169,15 @@
}; \
} \
/**/
-#else // Deletion of pointer to incomplete type.
-# define BOOST_STATIC_WARNING_IMPL(B) \
+#elif defined(BOOST_HAS_DESCRIPTIVE_INCOMPLETE_TYPE_WARNING)
+# define BOOST_STATIC_WARNING_IMPL(B) \
struct BOOST_JOIN(STATIC_WARNING, __LINE__) { \
::boost::static_warning_impl<(bool)( B )>::type* p; \
void f() { delete p; } \
} \
/**/
+#else // not defined for this compiler
+# define BOOST_STATIC_WARNING_IMPL(B)
#endif
#ifndef BOOST_DISABLE_STATIC_WARNINGS
Modified: branches/proto/v4/boost/test/impl/execution_monitor.ipp
==============================================================================
--- branches/proto/v4/boost/test/impl/execution_monitor.ipp (original)
+++ branches/proto/v4/boost/test/impl/execution_monitor.ipp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -667,7 +667,7 @@
::alarm( 0 );
#ifdef BOOST_TEST_USE_ALT_STACK
- stack_t sigstk;
+ stack_t sigstk = {};
sigstk.ss_flags = SS_DISABLE;
BOOST_TEST_SYS_ASSERT( ::sigaltstack( &sigstk, 0 ) != -1 );
Modified: branches/proto/v4/boost/test/test_tools.hpp
==============================================================================
--- branches/proto/v4/boost/test/test_tools.hpp (original)
+++ branches/proto/v4/boost/test/test_tools.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -299,7 +299,7 @@
typedef unit_test::const_string const_string;
-namespace { bool dummy_cond = false; }
+namespace { bool const dummy_cond = false; }
namespace tt_detail {
Modified: branches/proto/v4/boost/thread/detail/thread.hpp
==============================================================================
--- branches/proto/v4/boost/thread/detail/thread.hpp (original)
+++ branches/proto/v4/boost/thread/detail/thread.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -20,6 +20,8 @@
#include <boost/bind.hpp>
#include <stdlib.h>
#include <memory>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/remove_reference.hpp>
#include <boost/config/abi_prefix.hpp>
@@ -121,7 +123,11 @@
template<typename F>
static inline detail::thread_data_ptr make_thread_info(F&& f)
{
- return detail::thread_data_ptr(detail::heap_new<detail::thread_data<F> >(static_cast<F&&>(f)));
+ return detail::thread_data_ptr(detail::heap_new<detail::thread_data<typename boost::remove_reference<F>::type> >(static_cast<F&&>(f)));
+ }
+ static inline detail::thread_data_ptr make_thread_info(void (*f)())
+ {
+ return detail::thread_data_ptr(detail::heap_new<detail::thread_data<void(*)()> >(f));
}
#else
template<typename F>
@@ -134,6 +140,8 @@
{
return detail::thread_data_ptr(detail::heap_new<detail::thread_data<F> >(f));
}
+
+ struct dummy;
#endif
public:
thread();
@@ -166,12 +174,12 @@
#else
template <class F>
- explicit thread(F f):
+ explicit thread(F f,typename disable_if<boost::is_convertible<F&,detail::thread_move_t<F> >, dummy* >::type=0):
thread_info(make_thread_info(f))
{
start_thread();
}
-
+
template <class F>
thread(detail::thread_move_t<F> f):
thread_info(make_thread_info(f))
Modified: branches/proto/v4/boost/thread/locks.hpp
==============================================================================
--- branches/proto/v4/boost/thread/locks.hpp (original)
+++ branches/proto/v4/boost/thread/locks.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -276,6 +276,12 @@
};
template<typename Mutex>
+ void swap(unique_lock<Mutex>& lhs,unique_lock<Mutex>& rhs)
+ {
+ lhs.swap(rhs);
+ }
+
+ template<typename Mutex>
class shared_lock
{
protected:
@@ -723,6 +729,12 @@
return static_cast<base const&>(*this);
}
};
+
+ template<typename Mutex>
+ void swap(try_lock_wrapper<Mutex>& lhs,try_lock_wrapper<Mutex>& rhs)
+ {
+ lhs.swap(rhs);
+ }
template<typename MutexType1,typename MutexType2>
unsigned try_lock_internal(MutexType1& m1,MutexType2& m2)
Deleted: branches/proto/v4/boost/thread/pthread/tss.hpp
==============================================================================
--- branches/proto/v4/boost/thread/pthread/tss.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
+++ (empty file)
@@ -1,107 +0,0 @@
-#ifndef BOOST_THREAD_PTHREAD_TSS_HPP
-#define BOOST_THREAD_PTHREAD_TSS_HPP
-
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-// (C) Copyright 2007-8 Anthony Williams
-
-#include <boost/thread/detail/config.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include <boost/config/abi_prefix.hpp>
-
-namespace boost
-{
- namespace detail
- {
- struct tss_cleanup_function
- {
- virtual ~tss_cleanup_function()
- {}
-
- virtual void operator()(void* data)=0;
- };
-
- BOOST_THREAD_DECL void set_tss_data(void const* key,boost::shared_ptr<tss_cleanup_function> func,void* tss_data,bool cleanup_existing);
- BOOST_THREAD_DECL void* get_tss_data(void const* key);
- }
-
- template <typename T>
- class thread_specific_ptr
- {
- private:
- thread_specific_ptr(thread_specific_ptr&);
- thread_specific_ptr& operator=(thread_specific_ptr&);
-
- struct delete_data:
- detail::tss_cleanup_function
- {
- void operator()(void* data)
- {
- delete static_cast<T*>(data);
- }
- };
-
- struct run_custom_cleanup_function:
- detail::tss_cleanup_function
- {
- void (*cleanup_function)(T*);
-
- explicit run_custom_cleanup_function(void (*cleanup_function_)(T*)):
- cleanup_function(cleanup_function_)
- {}
-
- void operator()(void* data)
- {
- cleanup_function(static_cast<T*>(data));
- }
- };
-
-
- boost::shared_ptr<detail::tss_cleanup_function> cleanup;
-
- public:
- thread_specific_ptr():
- cleanup(new delete_data)
- {}
- explicit thread_specific_ptr(void (*func_)(T*)):
- cleanup(new run_custom_cleanup_function(func_))
- {}
- ~thread_specific_ptr()
- {
- reset();
- }
-
- T* get() const
- {
- return static_cast<T*>(detail::get_tss_data(this));
- }
- T* operator->() const
- {
- return get();
- }
- T& operator*() const
- {
- return *get();
- }
- T* release()
- {
- T* const temp=get();
- detail::set_tss_data(this,boost::shared_ptr<detail::tss_cleanup_function>(),0,false);
- return temp;
- }
- void reset(T* new_value=0)
- {
- T* const current_value=get();
- if(current_value!=new_value)
- {
- detail::set_tss_data(this,cleanup,new_value,true);
- }
- }
- };
-}
-
-#include <boost/config/abi_suffix.hpp>
-
-#endif
Modified: branches/proto/v4/boost/thread/win32/thread_primitives.hpp
==============================================================================
--- branches/proto/v4/boost/thread/win32/thread_primitives.hpp (original)
+++ branches/proto/v4/boost/thread/win32/thread_primitives.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -281,8 +281,7 @@
}
}
-#if defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN)
-#if _MSC_VER>=1400
+#if defined(BOOST_MSVC) && (_MSC_VER>=1400) && !defined(UNDER_CE)
#if _MSC_VER==1400
extern "C" unsigned char _interlockedbittestandset(long *a,long b);
extern "C" unsigned char _interlockedbittestandreset(long *a,long b);
@@ -314,7 +313,7 @@
}
}
#define BOOST_THREAD_BTS_DEFINED
-#elif defined(_M_IX86)
+#elif (defined(BOOST_MSVC) || defined(BOOST_INTEL_WIN)) && defined(_M_IX86)
namespace boost
{
namespace detail
@@ -346,7 +345,6 @@
}
#define BOOST_THREAD_BTS_DEFINED
#endif
-#endif
#ifndef BOOST_THREAD_BTS_DEFINED
Deleted: branches/proto/v4/boost/thread/win32/tss.hpp
==============================================================================
--- branches/proto/v4/boost/thread/win32/tss.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
+++ (empty file)
@@ -1,106 +0,0 @@
-#ifndef BOOST_THREAD_WIN32_TSS_HPP
-#define BOOST_THREAD_WIN32_TSS_HPP
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-// (C) Copyright 2007-8 Anthony Williams
-
-#include <boost/shared_ptr.hpp>
-#include "thread_heap_alloc.hpp"
-
-#include <boost/config/abi_prefix.hpp>
-
-namespace boost
-{
- namespace detail
- {
- struct tss_cleanup_function
- {
- virtual ~tss_cleanup_function()
- {}
-
- virtual void operator()(void* data)=0;
- };
-
- BOOST_THREAD_DECL void set_tss_data(void const* key,boost::shared_ptr<tss_cleanup_function> func,void* tss_data,bool cleanup_existing);
- BOOST_THREAD_DECL void* get_tss_data(void const* key);
- }
-
- template <typename T>
- class thread_specific_ptr
- {
- private:
- thread_specific_ptr(thread_specific_ptr&);
- thread_specific_ptr& operator=(thread_specific_ptr&);
-
- struct delete_data:
- detail::tss_cleanup_function
- {
- void operator()(void* data)
- {
- delete static_cast<T*>(data);
- }
- };
-
- struct run_custom_cleanup_function:
- detail::tss_cleanup_function
- {
- void (*cleanup_function)(T*);
-
- explicit run_custom_cleanup_function(void (*cleanup_function_)(T*)):
- cleanup_function(cleanup_function_)
- {}
-
- void operator()(void* data)
- {
- cleanup_function(static_cast<T*>(data));
- }
- };
-
-
- boost::shared_ptr<detail::tss_cleanup_function> cleanup;
-
- public:
- thread_specific_ptr():
- cleanup(detail::heap_new<delete_data>(),detail::do_heap_delete<delete_data>())
- {}
- explicit thread_specific_ptr(void (*func_)(T*)):
- cleanup(detail::heap_new<run_custom_cleanup_function>(func_),detail::do_heap_delete<run_custom_cleanup_function>())
- {}
- ~thread_specific_ptr()
- {
- reset();
- }
-
- T* get() const
- {
- return static_cast<T*>(detail::get_tss_data(this));
- }
- T* operator->() const
- {
- return get();
- }
- T& operator*() const
- {
- return *get();
- }
- T* release()
- {
- T* const temp=get();
- detail::set_tss_data(this,boost::shared_ptr<detail::tss_cleanup_function>(),0,false);
- return temp;
- }
- void reset(T* new_value=0)
- {
- T* const current_value=get();
- if(current_value!=new_value)
- {
- detail::set_tss_data(this,cleanup,new_value,true);
- }
- }
- };
-}
-
-#include <boost/config/abi_suffix.hpp>
-
-#endif
Modified: branches/proto/v4/libs/regex/src/posix_api.cpp
==============================================================================
--- branches/proto/v4/libs/regex/src/posix_api.cpp (original)
+++ branches/proto/v4/libs/regex/src/posix_api.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -62,6 +62,8 @@
};
} // namespace
+typedef boost::basic_regex<char, c_regex_traits<char> > c_regex_type;
+
BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompA(regex_tA* expression, const char* ptr, int f)
{
if(expression->re_magic != magic_value)
@@ -70,7 +72,7 @@
#ifndef BOOST_NO_EXCEPTIONS
try{
#endif
- expression->guts = new regex();
+ expression->guts = new c_regex_type();
#ifndef BOOST_NO_EXCEPTIONS
} catch(...)
{
@@ -120,9 +122,9 @@
try{
#endif
expression->re_magic = magic_value;
- static_cast<regex*>(expression->guts)->set_expression(ptr, p2, flags);
- expression->re_nsub = static_cast<regex*>(expression->guts)->mark_count() - 1;
- result = static_cast<regex*>(expression->guts)->error_code();
+ static_cast<c_regex_type*>(expression->guts)->set_expression(ptr, p2, flags);
+ expression->re_nsub = static_cast<c_regex_type*>(expression->guts)->mark_count() - 1;
+ result = static_cast<c_regex_type*>(expression->guts)->error_code();
#ifndef BOOST_NO_EXCEPTIONS
}
catch(const boost::regex_error& be)
@@ -187,7 +189,7 @@
{
std::string p;
if((e) && (e->re_magic == magic_value))
- p = static_cast<regex*>(e->guts)->get_traits().error_string(static_cast< ::boost::regex_constants::error_type>(code));
+ p = static_cast<c_regex_type*>(e->guts)->get_traits().error_string(static_cast< ::boost::regex_constants::error_type>(code));
else
{
p = re_detail::get_default_error_string(static_cast< ::boost::regex_constants::error_type>(code));
@@ -236,7 +238,7 @@
#endif
if(expression->re_magic == magic_value)
{
- result = regex_search(start, end, m, *static_cast<regex*>(expression->guts), flags);
+ result = regex_search(start, end, m, *static_cast<c_regex_type*>(expression->guts), flags);
}
else
return result;
@@ -274,7 +276,7 @@
{
if(expression->re_magic == magic_value)
{
- delete static_cast<regex*>(expression->guts);
+ delete static_cast<c_regex_type*>(expression->guts);
}
expression->re_magic = 0;
}
Modified: branches/proto/v4/libs/regex/src/wide_posix_api.cpp
==============================================================================
--- branches/proto/v4/libs/regex/src/wide_posix_api.cpp (original)
+++ branches/proto/v4/libs/regex/src/wide_posix_api.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -69,6 +69,8 @@
};
}
+typedef boost::basic_regex<wchar_t, c_regex_traits<wchar_t> > c_regex_type;
+
BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW* expression, const wchar_t* ptr, int f)
{
if(expression->re_magic != wmagic_value)
@@ -77,7 +79,7 @@
#ifndef BOOST_NO_EXCEPTIONS
try{
#endif
- expression->guts = new wregex();
+ expression->guts = new c_regex_type();
#ifndef BOOST_NO_EXCEPTIONS
} catch(...)
{
@@ -127,9 +129,9 @@
try{
#endif
expression->re_magic = wmagic_value;
- static_cast<wregex*>(expression->guts)->set_expression(ptr, p2, flags);
- expression->re_nsub = static_cast<wregex*>(expression->guts)->mark_count() - 1;
- result = static_cast<wregex*>(expression->guts)->error_code();
+ static_cast<c_regex_type*>(expression->guts)->set_expression(ptr, p2, flags);
+ expression->re_nsub = static_cast<c_regex_type*>(expression->guts)->mark_count() - 1;
+ result = static_cast<c_regex_type*>(expression->guts)->error_code();
#ifndef BOOST_NO_EXCEPTIONS
}
catch(const boost::regex_error& be)
@@ -208,7 +210,7 @@
{
std::string p;
if((e) && (e->re_magic == wmagic_value))
- p = static_cast<wregex*>(e->guts)->get_traits().error_string(static_cast< ::boost::regex_constants::error_type>(code));
+ p = static_cast<c_regex_type*>(e->guts)->get_traits().error_string(static_cast< ::boost::regex_constants::error_type>(code));
else
{
p = re_detail::get_default_error_string(static_cast< ::boost::regex_constants::error_type>(code));
@@ -257,7 +259,7 @@
#endif
if(expression->re_magic == wmagic_value)
{
- result = regex_search(start, end, m, *static_cast<wregex*>(expression->guts), flags);
+ result = regex_search(start, end, m, *static_cast<c_regex_type*>(expression->guts), flags);
}
else
return result;
@@ -294,7 +296,7 @@
{
if(expression->re_magic == wmagic_value)
{
- delete static_cast<wregex*>(expression->guts);
+ delete static_cast<c_regex_type*>(expression->guts);
}
expression->re_magic = 0;
}
Modified: branches/proto/v4/libs/serialization/doc/archives.html
==============================================================================
--- branches/proto/v4/libs/serialization/doc/archives.html (original)
+++ branches/proto/v4/libs/serialization/doc/archives.html 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -41,14 +41,14 @@
<h4><a name="saving_interface">Saving Archive Concept</a></h4>
<h4>Associated Types</h4>
Intuitively, a type modeling this concept will generate a sequence of bytes
-correpsonding to an arbitrary set of C++ data structures. Each type modeling the
+corresponding to an arbitrary set of C++ data structures. Each type modeling the
Saving Archive concept (SA) may be associated with another type modeling the
<a href="#loading_interface">Loading Archive Concept</a>(LA).
This associated type will perform the inverse operation.
That is, given a sequence of bytes generated by SA, it will generate a set of
-C++ data structures the is equivalent to the original.
+C++ data structures that is equivalent to the original.
The notion of equivalence is defined by the implementations of the pair of archives and the
-way the data is are rendered serializable.
+way the data are rendered serializable.
<p>
<h4>Valid Expressions</h4>
<dl>
@@ -190,8 +190,8 @@
moved to address v.
<p>
When an object is loaded to a temporary variable and later moved to another location,
- This function must be called in order communicate this fact. This is permits the
- the archive to properly implement object tracking. Object tracking is required in order
+ this function must be called in order communicate this fact. This permits the
+ archive to properly implement object tracking. Object tracking is required in order
to correctly implement serialization of pointers to instances of derived classes.
</dd>
<dt><h4><code>
@@ -215,7 +215,7 @@
<p>
The existence of the <code style="white-space: normal"><<</code>
-and <code style="white-space: normal">>></code> suggest
+and <code style="white-space: normal">>></code> suggests
a relationship between archives and C++ i/o streams. <strong>Archives are not
C++ i/o streams</strong>. All the archives included with this system take a stream
as an argument in the constructor and that stream is used for output or input.
@@ -224,7 +224,7 @@
found it useful to base their implementation on streams.
<h3><a name="archive_models">Archive Models</a></h3>
-This library includes a various implementation of the Archive concept.
+This library includes various implementations of the Archive concept.
An archive is defined by two complementary classes. One is for saving data while
the other is for loading it.
@@ -307,7 +307,7 @@
text_oarchive(std::ostream & os, unsigned int flags = 0);
</code></h4></dt>
<dd>
-Contructs an archive given an open <code style="white-space: normal">stream</code> as
+Constructs an archive given an open <code style="white-space: normal">stream</code> as
an argument and optional flags. For most applications there will be no need to use flags.
Flags are defined by <code style="white-space: normal">enum archive_flags</code> enumerator.
Multiple flags can be combined with the <code style="white-space: normal">|</code> operator.
@@ -339,7 +339,7 @@
<dd>
Destructor for an archive. This should be called before the stream is
closed. It restores any altered stream facets to their state before the
-the archive was opened.
+archive was opened.
</dd>
</dl>
@@ -402,12 +402,12 @@
<h3><a name="exceptions">Exceptions</h3>
All of the archive classes included may throw exceptions. The list of exceptions that might
-be throw can be found in section <a target="detail" href="exceptions.html">Archive Exceptions</a>
+be thrown can be found in section <a target="detail" href="exceptions.html">Archive Exceptions</a>
of this documentation.
<h3><a name="charactersets">Character Sets</h3>
This library includes two archive classes for XML. The wide character
-version (<code style="white-space: normal">xml_w?archive</code>) renders it output as UTF-8 which can
+version (<code style="white-space: normal">xml_w?archive</code>) renders its output as UTF-8 which can
handle any wide character without loss of information.
<code style="white-space: normal">std::string</code> data is converted from multi-byte format to wide
character format using the current <code style="white-space: normal">
Modified: branches/proto/v4/libs/serialization/doc/contents.html
==============================================================================
--- branches/proto/v4/libs/serialization/doc/contents.html (original)
+++ branches/proto/v4/libs/serialization/doc/contents.html 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -1,4 +1,4 @@
-<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--
(C) Copyright 2002-4 Robert Ramey - http://www.rrsd.com .
@@ -301,6 +301,23 @@
<dt><img style="display:none" src="dot.gif"><a target="detail" href="rationale.html#typeid"><code style="white-space: normal">typeid</code> information is not included in archives</a></dt>
<dt><img style="display:none" src="dot.gif"><a target="detail" href="rationale.html#trap">Compile time trap when saving a non-const value</a></dt>
</dl></div></dd>
+
+ <dt><img style="display:none" src="plus.gif" id="todo"><a target="detail" href="todo.html">To Do</a></dt>
+ <dd><div id="todo_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="todo.html#portablebinaryarchive">Portable Binary Archive</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="todo.html#performancetesting">Performance Testing and Profiling</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="todo.html#backversioning">Back Versioning</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="todo.html#nortti">Environments without RTTI</a></dt>
+
+ <dt><img style="display:none" src="plus.gif" id="newcasestudies"><a target="detail" href="new_case_studies.html">Proposed Case Studies</a></dt>
+ <dd><div id="newcasestudies_detail"><dl class="page-index">
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="new_case_studies.html#functionobject">Serializing a Function Object</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="new_case_studies.html#archiveadaptor">Archive Adaptors</a></dt>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="new_case_studies.html#archivehelper">Archive Helpers</a></dt>
+ </dl></div></dd>
+
+ </dl></div></dd>
+
<dt><img style="display:none" src="dot.gif"><a target="detail" href="history.html">History</a>
<!--
<dt><img style="display:none" src="dot.gif"><a target="detail" href="definitions.html">Definitions</a></dt>
Modified: branches/proto/v4/libs/serialization/doc/release.html
==============================================================================
--- branches/proto/v4/libs/serialization/doc/release.html (original)
+++ branches/proto/v4/libs/serialization/doc/release.html 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -1,4 +1,4 @@
-<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--
(C) Copyright 2002-4 Robert Ramey - http://www.rrsd.com .
@@ -120,18 +120,18 @@
<h2><a name="todo"></a>Pending issues</h2>
<ul>
- <li>Compile, and test on more platforms
<li>currently can't serialize through a pointer an object a of class
that implements its own <code style="white-space: normal">new/delete</code> operators.
<li>Its possible that <code style="white-space: normal">std::string</code>
and <code style="white-space: normal">std::wstring</code> contain characters such as
- '\0' which cannot be rendered in XML without an escape mechanism. Currently there is
- no such escape mechanism implemented.
+ '\0' and -1 (EOF) which cannot be rendered in text and XML archives without an escape mechanism.
+ Currently there is no such escape mechanism implemented.
<li>A subtle error in the implementation of serializaton of <code style="white-space: normal">std::map</code>
is fixed in this version. Unfortunately, the fix breaks serialization of
<code style="white-space: normal">std::map</code> for those compilers which do not support
partial template specialization.
-</ul>
+ <li>Without taking special precautions, racking fails for types placed in a <code style="white-space: normal">std::map</code>.
+ </ul>
<p>
Aside from the above, there are a number of issues related to specific platforms.
These are listed in Specific Compiler/Library Issues.
Modified: branches/proto/v4/libs/serialization/doc/serialization.html
==============================================================================
--- branches/proto/v4/libs/serialization/doc/serialization.html (original)
+++ branches/proto/v4/libs/serialization/doc/serialization.html 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -794,8 +794,8 @@
boost::serialization::base_object<base>(*this);
// method 2 : explicitly register base/derived relationship
boost::serialization::void_cast_register<derived, base>(
- static_cast<base *>(NULL),
- static_cast<derived *>(NULL)
+ static_cast<derived *>(NULL),
+ static_cast<base *>(NULL)
)
}
};
Modified: branches/proto/v4/libs/serialization/example/demo.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/example/demo.cpp (original)
+++ branches/proto/v4/libs/serialization/example/demo.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -20,7 +20,7 @@
#include <boost/serialization/base_object.hpp>
#include <boost/serialization/utility.hpp>
#include <boost/serialization/list.hpp>
-#include <boost/serialization/is_abstract.hpp>
+#include <boost/serialization/assume_abstract.hpp>
/////////////////////////////////////////////////////////////
// The intent of this program is to serve as a tutorial for
Modified: branches/proto/v4/libs/serialization/example/demo_dll_a.hpp
==============================================================================
--- branches/proto/v4/libs/serialization/example/demo_dll_a.hpp (original)
+++ branches/proto/v4/libs/serialization/example/demo_dll_a.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -143,7 +143,7 @@
unsigned int i = std::rand() % 27;
if(0 == i)
break;
- x += static_cast<typename S::value_type>('a' - 1 + i);
+ x += static_cast<BOOST_DEDUCED_TYPENAME S::value_type>('a' - 1 + i);
}
}
Modified: branches/proto/v4/libs/serialization/example/demo_dll_a.ipp
==============================================================================
--- branches/proto/v4/libs/serialization/example/demo_dll_a.ipp (original)
+++ branches/proto/v4/libs/serialization/example/demo_dll_a.ipp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -143,7 +143,7 @@
unsigned int i = std::rand() % 27;
if(0 == i)
break;
- x += static_cast<typename S::value_type>('a' - 1 + i);
+ x += static_cast<BOOST_DEDUCED_TYPENAME S::value_type>('a' - 1 + i);
}
}
Modified: branches/proto/v4/libs/serialization/example/portable_binary_oarchive.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/example/portable_binary_oarchive.cpp (original)
+++ branches/proto/v4/libs/serialization/example/portable_binary_oarchive.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -47,7 +47,7 @@
char * cptr = reinterpret_cast<char *>(& ll);
#ifdef BOOST_BIG_ENDIAN
cptr += (sizeof(boost::intmax_t) - size);
- if(m_flags & endian_big)
+ if(m_flags & endian_little)
reverse_bytes(size, cptr);
#else
if(m_flags & endian_big)
Modified: branches/proto/v4/libs/serialization/src/basic_iarchive.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/src/basic_iarchive.cpp (original)
+++ branches/proto/v4/libs/serialization/src/basic_iarchive.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -225,9 +225,10 @@
const void *old_address
){
object_id_type i;
+ i = moveable_objects_recent;
// this code handles a couple of situations.
// a) where reset_object_address is applied to an untracked object.
- // In such a case the call is really superfluous and its really an
+ // In such a case the call is really superfluous and it,s really an
// an error. But we don't have access to the types here so we can't
// know that. However, this code will effectively turn this situation
// into a no-op and every thing will work fine - albeat with a small
@@ -237,28 +238,30 @@
// but the code may work anyway. Naturally, a bad practice on the part
// of the programmer but we can't detect it - as above. So maybe we
// can save a few more people from themselves as above.
- for(i = moveable_objects_recent; i < moveable_objects_end; ++i){
+ //
+ // note: this scheme fails when an untracked object contains a tracked object!!!
+ for(; i < moveable_objects_end; ++i){
if(old_address == object_id_vector[i].address)
break;
}
for(; i < moveable_objects_end; ++i){
-
+ aobject o = this->object_id_vector[i];
// calculate displacement from this level
// warning - pointer arithmetic on void * is in herently non-portable
// but expected to work on all platforms in current usage
- if(object_id_vector[i].address > old_address){
+ if(o.address > old_address){
std::size_t member_displacement
- = reinterpret_cast<std::size_t>(object_id_vector[i].address)
+ = reinterpret_cast<std::size_t>(o.address)
- reinterpret_cast<std::size_t>(old_address);
- object_id_vector[i].address = reinterpret_cast<void *>(
+ o.address = reinterpret_cast<void *>(
reinterpret_cast<std::size_t>(new_address) + member_displacement
);
}
else{
std::size_t member_displacement
= reinterpret_cast<std::size_t>(old_address)
- - reinterpret_cast<std::size_t>(object_id_vector[i].address);
- object_id_vector[i].address = reinterpret_cast<void *>(
+ - reinterpret_cast<std::size_t>(o.address);
+ o.address = reinterpret_cast<void *>(
reinterpret_cast<std::size_t>(new_address) - member_displacement
);
}
Modified: branches/proto/v4/libs/serialization/src/basic_xml_grammar.ipp
==============================================================================
--- branches/proto/v4/libs/serialization/src/basic_xml_grammar.ipp (original)
+++ branches/proto/v4/libs/serialization/src/basic_xml_grammar.ipp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -129,7 +129,7 @@
struct append_char {
String & contents;
void operator()(const unsigned int char_value) const {
- const typename String::value_type z = char_value;
+ const BOOST_DEDUCED_TYPENAME String::value_type z = char_value;
contents += z;
}
append_char(String & contents_)
@@ -142,7 +142,7 @@
String & contents;
template<class X, class Y>
void operator()(const X & /*x*/, const Y & /*y*/) const {
- const typename String::value_type z = c;
+ const BOOST_DEDUCED_TYPENAME String::value_type z = c;
contents += z;
}
append_lit(String & contents_)
Modified: branches/proto/v4/libs/serialization/src/codecvt_null.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/src/codecvt_null.cpp (original)
+++ branches/proto/v4/libs/serialization/src/codecvt_null.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -19,7 +19,7 @@
BOOST_WARCHIVE_DECL(std::codecvt_base::result)
codecvt_null<wchar_t>::do_out(
- std::mbstate_t & state,
+ std::mbstate_t & /*state*/,
const wchar_t * first1,
const wchar_t * last1,
const wchar_t * & next1,
Modified: branches/proto/v4/libs/serialization/test/A.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/A.cpp (original)
+++ branches/proto/v4/libs/serialization/test/A.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -37,7 +37,7 @@
unsigned int i = std::rand() % 27;
if(0 == i)
break;
- x += static_cast<typename S::value_type>('a' - 1 + i);
+ x += static_cast<BOOST_DEDUCED_TYPENAME S::value_type>('a' - 1 + i);
}
}
Modified: branches/proto/v4/libs/serialization/test/A.hpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/A.hpp (original)
+++ branches/proto/v4/libs/serialization/test/A.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -17,7 +17,6 @@
// See http://www.boost.org for updates, documentation, and revision history.
#include <cstddef> // size_t
-#include <string>
#include <ostream> // for friend output operators
#include <boost/config.hpp>
Modified: branches/proto/v4/libs/serialization/test/base.hpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/base.hpp (original)
+++ branches/proto/v4/libs/serialization/test/base.hpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -17,7 +17,7 @@
// See http://www.boost.org for updates, documentation, and revision history.
#include <boost/serialization/access.hpp>
-#include <boost/serialization/is_abstract.hpp>
+#include <boost/serialization/assume_abstract.hpp>
#ifndef DLL_DECL
#define DLL_DECL
Modified: branches/proto/v4/libs/serialization/test/test_delete_pointer.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_delete_pointer.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_delete_pointer.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -19,6 +19,7 @@
#include "test_tools.hpp"
#include <boost/detail/no_exceptions_support.hpp>
+#include <boost/throw_exception.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/serialization/split_member.hpp>
@@ -38,14 +39,11 @@
void load(Archive & ar, const unsigned int /* file_version */)
{
static int i = 0;
- ++i;
- bool b = false;
- if(i == 2)
- b = true;
-
ar >> BOOST_SERIALIZATION_NVP(next_);
- if(b)
- boost::throw_exception(0);
+ if(++i == 3)
+ boost::throw_exception(boost::archive::archive_exception(
+ boost::archive::archive_exception::no_exception
+ ));
}
BOOST_SERIALIZATION_SPLIT_MEMBER()
public:
@@ -128,4 +126,3 @@
return EXIT_SUCCESS;
}
-
Modified: branches/proto/v4/libs/serialization/test/test_no_rtti.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_no_rtti.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_no_rtti.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -50,6 +50,7 @@
};
BOOST_SERIALIZATION_ASSUME_ABSTRACT(polymorphic_base)
+
BOOST_CLASS_TYPE_INFO(
polymorphic_base,
extended_type_info_no_rtti<polymorphic_base>
Modified: branches/proto/v4/libs/serialization/test/test_non_default_ctor.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_non_default_ctor.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_non_default_ctor.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -123,7 +123,7 @@
inline void save_construct_data(
Archive & ar,
const A * a,
- const unsigned int /* file_version */
+ const BOOST_PFTO unsigned int /* file_version */
){
// variable used for construction
ar << boost::serialization::make_nvp("i", a->get_i());
Modified: branches/proto/v4/libs/serialization/test/test_non_default_ctor2.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_non_default_ctor2.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_non_default_ctor2.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -96,8 +96,11 @@
namespace serialization {
template <class ArchiveT>
-void save_construct_data(ArchiveT& archive, const A* p, unsigned int version)
-{
+void save_construct_data(
+ ArchiveT& archive,
+ const A* p,
+ const BOOST_PFTO unsigned int version
+){
archive & boost::serialization::make_nvp("initialValue", p->value);
}
Modified: branches/proto/v4/libs/serialization/test/test_static_warning.cpp
==============================================================================
--- branches/proto/v4/libs/serialization/test/test_static_warning.cpp (original)
+++ branches/proto/v4/libs/serialization/test/test_static_warning.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -62,3 +62,4 @@
BOOST_STATIC_WARNING(boost::is_polymorphic<non_polymorphic>::value); // Warn.
return 0;
}
+
Modified: branches/proto/v4/libs/thread/test/test_lock_concept.cpp
==============================================================================
--- branches/proto/v4/libs/thread/test/test_lock_concept.cpp (original)
+++ branches/proto/v4/libs/thread/test/test_lock_concept.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -1,4 +1,4 @@
-// (C) Copyright 2006-7 Anthony Williams
+// (C) Copyright 2006-8 Anthony Williams
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
@@ -196,6 +196,35 @@
};
};
+
+template<typename Mutex,typename Lock>
+struct test_locks_can_be_swapped
+{
+ void operator()() const
+ {
+ Mutex m1;
+ Mutex m2;
+ Lock l1(m1);
+ Lock l2(m2);
+
+ BOOST_CHECK_EQUAL(l1.mutex(),&m1);
+ BOOST_CHECK_EQUAL(l2.mutex(),&m2);
+
+ l1.swap(l2);
+
+ BOOST_CHECK_EQUAL(l1.mutex(),&m2);
+ BOOST_CHECK_EQUAL(l2.mutex(),&m1);
+
+ swap(l1,l2);
+
+ BOOST_CHECK_EQUAL(l1.mutex(),&m1);
+ BOOST_CHECK_EQUAL(l2.mutex(),&m2);
+
+ }
+};
+
+
+
BOOST_TEST_CASE_TEMPLATE_FUNCTION(test_scoped_lock_concept,Mutex)
{
typedef typename Mutex::scoped_lock Lock;
@@ -208,6 +237,7 @@
test_locked_after_lock_called<Mutex,Lock>()();
test_throws_if_lock_called_when_already_locked<Mutex,Lock>()();
test_throws_if_unlock_called_when_already_unlocked<Mutex,Lock>()();
+ test_locks_can_be_swapped<Mutex,Lock>()();
}
BOOST_TEST_CASE_TEMPLATE_FUNCTION(test_scoped_try_lock_concept,Mutex)
@@ -225,6 +255,7 @@
test_throws_if_lock_called_when_already_locked<Mutex,Lock>()();
test_throws_if_try_lock_called_when_already_locked<Mutex,Lock>()();
test_throws_if_unlock_called_when_already_unlocked<Mutex,Lock>()();
+ test_locks_can_be_swapped<Mutex,Lock>()();
}
boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[])
Modified: branches/proto/v4/libs/thread/test/test_tss.cpp
==============================================================================
--- branches/proto/v4/libs/thread/test/test_tss.cpp (original)
+++ branches/proto/v4/libs/thread/test/test_tss.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -258,11 +258,58 @@
}
}
+struct dummy_class_tracks_deletions
+{
+ static unsigned deletions;
+
+ ~dummy_class_tracks_deletions()
+ {
+ ++deletions;
+ }
+
+};
+
+unsigned dummy_class_tracks_deletions::deletions=0;
+
+boost::thread_specific_ptr<dummy_class_tracks_deletions> tss_with_null_cleanup(NULL);
+
+void tss_thread_with_null_cleanup(dummy_class_tracks_deletions* delete_tracker)
+{
+ tss_with_null_cleanup.reset(delete_tracker);
+}
+
+void do_test_tss_does_no_cleanup_with_null_cleanup_function()
+{
+ dummy_class_tracks_deletions* delete_tracker=new dummy_class_tracks_deletions;
+ boost::thread t(tss_thread_with_null_cleanup,delete_tracker);
+ try
+ {
+ t.join();
+ }
+ catch(...)
+ {
+ t.interrupt();
+ t.join();
+ throw;
+ }
+
+ BOOST_CHECK(!dummy_class_tracks_deletions::deletions);
+ if(!dummy_class_tracks_deletions::deletions)
+ {
+ delete delete_tracker;
+ }
+}
+
void test_tss_does_no_cleanup_after_release()
{
timed_test(&do_test_tss_does_no_cleanup_after_release, 2);
}
+void test_tss_does_no_cleanup_with_null_cleanup_function()
+{
+ timed_test(&do_test_tss_does_no_cleanup_with_null_cleanup_function, 2);
+}
+
boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[])
{
boost::unit_test_framework::test_suite* test =
@@ -271,6 +318,7 @@
test->add(BOOST_TEST_CASE(test_tss));
test->add(BOOST_TEST_CASE(test_tss_with_custom_cleanup));
test->add(BOOST_TEST_CASE(test_tss_does_no_cleanup_after_release));
+ test->add(BOOST_TEST_CASE(test_tss_does_no_cleanup_with_null_cleanup_function));
return test;
}
Modified: branches/proto/v4/status/Jamfile.v2
==============================================================================
--- branches/proto/v4/status/Jamfile.v2 (original)
+++ branches/proto/v4/status/Jamfile.v2 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -121,6 +121,7 @@
tuple/test # test-suite tuple
type_traits/test # test-suite type_traits
typeof/test # test-suite typeof
+ units/test # test-suite units
unordered/test/unordered # test-suite unordered
unordered/test/exception # test-suite unordered-exception
utility/enable_if/test # test-suite utility/enable_if
Modified: branches/proto/v4/tools/build/v2/build/feature.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/feature.jam (original)
+++ branches/proto/v4/tools/build/v2/build/feature.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -42,6 +42,7 @@
# Prepare a fresh space to test in by moving all global variable settings into
# the given temporary module and erasing them here.
+#
rule prepare-test ( temp-module )
{
DELETE_MODULE $(temp-module) ;
@@ -61,6 +62,7 @@
# Clear out all global variables and recover all variables from the given
# temporary module.
+#
rule finish-test ( temp-module )
{
# Clear globals.
@@ -80,8 +82,9 @@
}
-# Transform features by bracketing any elements which aren't already bracketed
+# Transform features by bracketing any elements which are not already bracketed
# by "<>".
+#
local rule grist ( features * )
{
local empty = "" ;
@@ -90,6 +93,7 @@
# Declare a new feature with the given name, values, and attributes.
+#
rule feature (
name # Feature name.
: values * # Allowable values - may be extended later using feature.extend.
@@ -118,15 +122,15 @@
{
error = free features cannot be propagated ;
}
- else
+ else
{
local m = [ MATCH (.*=.*) : $(values) ] ;
if $(m[1])
{
error = "feature value may not contain '='" ;
- }
+ }
}
-
+
if $(error)
{
errors.error $(error)
@@ -153,6 +157,7 @@
# Sets the default value of the given feature, overriding any previous default.
+#
rule set-default ( feature : value )
{
local f = [ grist $(feature) ] ;
@@ -166,6 +171,7 @@
# Returns the default property values for the given features.
+#
rule defaults ( features * )
{
local result ;
@@ -186,6 +192,7 @@
# Returns true iff all 'names' elements are valid features.
+#
rule valid ( names + )
{
if $(names) in $(.all-features)
@@ -196,6 +203,7 @@
# Returns the attibutes of the given feature.
+#
rule attributes ( feature )
{
return $($(:E=:G=$(feature)).attributes) ;
@@ -203,6 +211,7 @@
# Returns the values of the given feature.
+#
rule values ( feature )
{
return $($(:E=:G=$(feature)).values) ;
@@ -210,6 +219,7 @@
# Returns true iff 'value-string' is a value-string of an implicit feature.
+#
rule is-implicit-value ( value-string )
{
local v = [ regex.split $(value-string) - ] ;
@@ -238,6 +248,7 @@
# Returns the implicit feature associated with the given implicit value.
+#
rule implied-feature ( implicit-value )
{
local components = [ regex.split $(implicit-value) "-" ] ;
@@ -267,6 +278,7 @@
# Given a feature and a value of one of its subfeatures, find the name of the
# subfeature. If value-string is supplied, looks for implied subfeatures that
# are specific to that value of feature
+#
rule implied-subfeature (
feature # The main feature name.
subvalue # The value of one of its subfeatures.
@@ -286,6 +298,7 @@
# Generate an error if the feature is unknown.
+#
local rule validate-feature ( feature )
{
if ! $(feature) in $(.all-features)
@@ -305,6 +318,7 @@
# return:
#
# <toolset>gcc <toolset-version>2.95.2 <toolset-os>linux <toolset-cpu>x86
+#
local rule expand-subfeatures-aux (
feature ? # Feature name or empty if value corresponds to an
# implicit property.
@@ -399,6 +413,7 @@
# Helper for extend, below. Handles the feature case.
+#
local rule extend-feature ( feature : values * )
{
feature = [ grist $(feature) ] ;
@@ -427,6 +442,7 @@
# Checks that value-string is a valid value-string for the given feature.
+#
rule validate-value-string ( feature value-string )
{
if ! (
@@ -464,6 +480,7 @@
# between subvalue(s) and a subfeature
# * value of that variable when such a subfeature/subvalue has been defined and
# returns a list consisting of the latter followed by the former.
+#
local rule subvalue-var (
feature # Main feature name.
value-string ? # If supplied, specifies a specific value of the main
@@ -518,6 +535,7 @@
# Returns true iff the subvalues are valid for the feature. When the optional
# value-string is provided, returns true iff the subvalues are valid for the
# given value of the feature.
+#
rule is-subvalue ( feature : value-string ? : subfeature : subvalue )
{
local subfeature-vars = [ subvalue-var $(feature) $(value-string)
@@ -591,6 +609,7 @@
# Declares a subfeature.
+#
rule subfeature (
feature # Root feature that is not a subfeature.
value-string ? # A value-string specifying which feature or subfeature
@@ -623,6 +642,7 @@
# Set components of the given composite property.
+#
rule compose ( composite-property : component-properties * )
{
local feature = $(composite-property:G) ;
@@ -654,6 +674,7 @@
# Return all values of the given feature specified by the given property set.
+#
rule get-values ( feature : properties * )
{
local result ;
@@ -681,6 +702,7 @@
# Expand all composite properties in the set so that all components are
# explicitly expressed.
+#
rule expand-composites ( properties * )
{
local explicit-features = $(properties:G) ;
@@ -739,6 +761,7 @@
# Return true iff f is an ordinary subfeature of the parent-property's feature,
# or if f is a subfeature of the parent-property's feature specific to the
# parent-property's value.
+#
local rule is-subfeature-of ( parent-property f )
{
if subfeature in $($(f).attributes)
@@ -769,6 +792,7 @@
# As for is-subfeature-of but for subproperties.
+#
local rule is-subproperty-of ( parent-property p )
{
return [ is-subfeature-of $(parent-property) $(p:G) ] ;
@@ -778,6 +802,7 @@
# Given a property, return the subset of features consisting of all ordinary
# subfeatures of the property's feature, and all specific subfeatures of the
# property's feature which are conditional on the property's value.
+#
local rule select-subfeatures ( parent-property : features * )
{
return [ sequence.filter is-subfeature-of $(parent-property) : $(features) ] ;
@@ -785,6 +810,7 @@
# As for select-subfeatures but for subproperties.
+#
local rule select-subproperties ( parent-property : properties * )
{
return [ sequence.filter is-subproperty-of $(parent-property) : $(properties) ] ;
@@ -799,6 +825,7 @@
# of those features due to composite feature expansion to be dropped. If two
# values of a given non-free feature are directly expressed in the input, an
# error is issued.
+#
rule expand ( properties * )
{
local expanded = [ expand-subfeatures $(properties) ] ;
@@ -808,6 +835,7 @@
# Helper rule for minimize. Returns true iff property's feature is present in
# the contents of the variable named by feature-set-var.
+#
local rule in-features ( feature-set-var property )
{
if $(property:G) in $($(feature-set-var))
@@ -819,6 +847,7 @@
# Helper rule for minimize. Returns the list with the same properties, but with
# all subfeatures moved to the end of the list.
+#
local rule move-subfeatures-to-the-end ( properties * )
{
local x1 ;
@@ -844,6 +873,7 @@
# they override a value from some composite property. Implicit properties will
# be expressed without feature grist, and sub-property values will be expressed
# as elements joined to the corresponding main property.
+#
rule minimize ( properties * )
{
# Precondition checking
@@ -913,8 +943,9 @@
# Requires: for every subproperty, there is a parent property. All features are
# explicitly expressed.
#
-# This rule probably shouldn't be needed, but build-request.expand-no-defaults
+# This rule probably should not be needed, but build-request.expand-no-defaults
# is being abused for unintended purposes and it needs help.
+#
rule compress-subproperties ( properties * )
{
local all-subs ;
@@ -926,7 +957,7 @@
if ! $(p:G)
{
# Expecting fully-gristed properties.
- assert.nonempty-variable p:G ;
+ assert.variable-not-empty p:G ;
}
if ! subfeature in $($(p:G).attributes)
@@ -954,6 +985,7 @@
# feature name followed by a dash, and return a pair consisting of the parts
# before and after that dash. More interesting than a simple split because
# feature names may contain dashes.
+#
local rule split-top-feature ( feature-plus )
{
local e = [ regex.split $(feature-plus) - ] ;
@@ -989,6 +1021,7 @@
# <variant>debug <runtime_debugging>off
#
# and that's kind of strange.
+#
rule add-defaults ( properties * )
{
for local v in $(properties:G=)
@@ -1033,6 +1066,7 @@
# Note that vN...vM may contain slashes. This needs to be resilient to the
# substitution of backslashes for slashes, since Jam, unbidden, sometimes swaps
# slash direction on NT.
+#
rule split ( property-set )
{
local pieces = [ regex.split $(property-set) [\\/] ] ;
@@ -1055,7 +1089,8 @@
# Tests of module feature.
-local rule __test__ ( )
+#
+rule __test__ ( )
{
# Use a fresh copy of the feature module.
prepare-test feature-test-temp ;
Modified: branches/proto/v4/tools/build/v2/build/project.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/project.jam (original)
+++ branches/proto/v4/tools/build/v2/build/project.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -4,36 +4,35 @@
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-# Implements project representation and loading. Each project is represented
-# by:
-# - a module where all the Jamfile content live.
-# - an instance of 'project-attributes' class.
-# (given a module name, can be obtained using the 'attributes' rule)
-# - an instance of 'project-target' class (from targets.jam)
-# (given a module name, can be obtained using the 'target' rule)
-#
-# Typically, projects are created as result of loading a Jamfile, which is done
-# by rules 'load' and 'initialize', below. First, module for Jamfile is loaded
-# and new project-attributes instance is created. Some rules necessary for
-# project are added to the module (see 'project-rules' module) at the bottom of
-# this file. Default project attributes are set (inheriting attributes of
-# parent project, if it exists). After that the Jamfile is read. It can declare
-# its own attributes using the 'project' rule which will be combined with any
-# alread set attributes.
-#
-# The 'project' rule can also declare a project id which will be associated
-# with the project module.
-#
-# There can also be 'standalone' projects. They are created by calling
-# 'initialize' on an arbitrary module and not specifying their location. After
-# the call, the module can call the 'project' rule, declare main targets and
-# behave as a regular project except that, since it's not associated with any
-# location, it should not declare targets that are not prebuilt.
-#
-# The list of all loaded Jamfile is stored in the .project-locations variable.
-# It's possible to obtain a module name for a location using the 'module-name'
-# rule. Standalone projects are not recorded and can only be referenced using
-# their project id.
+# Implements project representation and loading. Each project is represented by:
+# - a module where all the Jamfile content live.
+# - an instance of 'project-attributes' class.
+# (given a module name, can be obtained using the 'attributes' rule)
+# - an instance of 'project-target' class (from targets.jam)
+# (given a module name, can be obtained using the 'target' rule)
+#
+# Typically, projects are created as result of loading a Jamfile, which is done
+# by rules 'load' and 'initialize', below. First, module for Jamfile is loaded
+# and new project-attributes instance is created. Some rules necessary for
+# project are added to the module (see 'project-rules' module) at the bottom of
+# this file. Default project attributes are set (inheriting attributes of parent
+# project, if it exists). After that the Jamfile is read. It can declare its own
+# attributes using the 'project' rule which will be combined with any already
+# set attributes.
+#
+# The 'project' rule can also declare a project id which will be associated with
+# the project module.
+#
+# There can also be 'standalone' projects. They are created by calling
+# 'initialize' on an arbitrary module and not specifying their location. After
+# the call, the module can call the 'project' rule, declare main targets and
+# behave as a regular project except that, since it is not associated with any
+# location, it should not declare targets that are not prebuilt.
+#
+# The list of all loaded Jamfile is stored in the .project-locations variable.
+# It is possible to obtain a module name for a location using the 'module-name'
+# rule. Standalone projects are not recorded and can only be referenced using
+# their project id.
import "class" : new ;
import errors ;
@@ -94,13 +93,14 @@
# Note the use of character groups, as opposed to listing 'Jamroot' and
-# 'jamroot'. With the latter, we'd get duplicate matches on Windows and would
-# have to eliminate duplicates.
+# 'jamroot'. With the latter, we would get duplicate matches on Windows and
+# would have to eliminate duplicates.
JAMROOT ?= [ modules.peek : JAMROOT ] ;
JAMROOT ?= project-root.jam [Jj]amroot [Jj]amroot.jam ;
# Loads parent of Jamfile at 'location'. Issues an error if nothing is found.
+#
rule load-parent ( location )
{
local found = [ path.glob-in-parents $(location) :
@@ -120,6 +120,7 @@
# Makes the specified 'module' act as if it were a regularly loaded Jamfile at
# 'location'. Reports an error if a Jamfile has already been loaded for that
# location.
+#
rule act-as-jamfile ( module : location )
{
if [ module-name $(location) ] in $(.jamfile-modules)
@@ -139,6 +140,7 @@
# Returns the project module corresponding to the given project-id or plain
# directory name. Returns nothing if such a project can not be found.
+#
rule find ( name : current-location )
{
local project-module ;
@@ -489,6 +491,7 @@
# Make 'project-module' inherit attributes of project root and parent module.
+#
rule inherit-attributes ( project-module : parent-module )
{
local attributes = $($(project-module).attributes) ;
@@ -528,6 +531,7 @@
# Associate the given id with the given project module.
+#
rule register-id ( id : module )
{
$(id).jamfile-module = $(module) ;
@@ -538,6 +542,7 @@
#
# The standard attributes are "id", "location", "project-root", "parent"
# "requirements", "default-build", "source-location" and "projects-to-build".
+#
class project-attributes
{
import property ;
@@ -556,6 +561,7 @@
# Set the named attribute from the specification given by the user. The
# value actually set may be different.
+ #
rule set ( attribute : specification *
: exact ? # Sets value from 'specification' without any processing.
)
@@ -640,12 +646,14 @@
}
# Returns the value of the given attribute.
+ #
rule get ( attribute )
{
return $(self.$(attribute)) ;
}
# Prints the project attributes.
+ #
rule print ( )
{
local id = $(self.id) ; id ?= (none) ;
@@ -664,6 +672,7 @@
# Returns the project which is currently being loaded.
+#
rule current ( )
{
return $(.current-project) ;
@@ -672,6 +681,7 @@
# Temporarily changes the current project to 'project'. Should be followed by
# 'pop-current'.
+#
rule push-current ( project )
{
.saved-current-project += $(.current-project) ;
@@ -687,6 +697,7 @@
# Returns the project-attribute instance for the specified Jamfile module.
+#
rule attributes ( project )
{
return $($(project).attributes) ;
@@ -694,6 +705,7 @@
# Returns the value of the specified attribute in the specified Jamfile module.
+#
rule attribute ( project attribute )
{
return [ $($(project).attributes).get $(attribute) ] ;
@@ -701,6 +713,7 @@
# Returns the project target corresponding to the 'project-module'.
+#
rule target ( project-module )
{
if ! $(.target.$(project-module))
@@ -714,6 +727,7 @@
# Use/load a project.
+#
rule use ( id : location )
{
local saved-project = $(.current-project) ;
@@ -810,6 +824,7 @@
# This module defines rules common to all projects.
+#
module project-rules
{
rule using ( toolset-module : * )
@@ -926,8 +941,8 @@
# child Jamfile.
#
rule constant (
- name # Variable name of the constant.
- : value + # Value of the constant.
+ name # Variable name of the constant.
+ : value + # Value of the constant.
)
{
import project ;
@@ -938,6 +953,7 @@
# Declare and set a project global constant, whose value is a path. The path
# is adjusted to be relative to the invocation directory. The given value
# path is taken to be either absolute, or relative to this project root.
+ #
rule path-constant (
name # Variable name of the constant.
: value + # Value of the constant.
@@ -979,8 +995,8 @@
rule glob ( wildcards + : excludes * )
{
import project ;
- return [ project.glob-internal [ project.current ]
- : $(wildcards) : $(excludes) : glob ] ;
+ return [ project.glob-internal [ project.current ] : $(wildcards) :
+ $(excludes) : glob ] ;
}
rule glob-tree ( wildcards + : excludes * )
@@ -1015,9 +1031,3 @@
}
}
}
-
-
-local rule __test__ ( )
-{
- import assert ;
-}
Modified: branches/proto/v4/tools/build/v2/build/property-set.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/property-set.jam (original)
+++ branches/proto/v4/tools/build/v2/build/property-set.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -9,22 +9,23 @@
import sequence ;
import set ;
+
# Class for storing a set of properties.
-# - there's 1<->1 correspondence between identity and value. No two instances of
-# the class are equal. To maintain this property, the 'property-set.create'
-# rule should be used to create new instances. Instances are immutable.
#
-# - each property is classified with regard to it's effect on build results.
-# Incidental properties have no effect on build results, from Boost.Build's
-# point of view. Others are either free, or non-free, which we call 'base'.
-# Each property belongs to exactly one of those categories and it's possible
-# to get list of properties in each category.
+# There is 1<->1 correspondence between identity and value. No two instances
+# of the class are equal. To maintain this property, the 'property-set.create'
+# rule should be used to create new instances. Instances are immutable.
+#
+# Each property is classified with regard to its effect on build results.
+# Incidental properties have no effect on build results, from Boost.Build's
+# point of view. Others are either free, or non-free and we refer to non-free
+# ones as 'base'. Each property belongs to exactly one of those categories.
#
-# In addition, it's possible to get a list of properties with a specific
-# attribute.
+# It is possible to get a list of properties belonging to each category as
+# well as a list of properties with a specific attribute.
#
-# - several operations, like and refine and as-path are provided. They all use
-# caching whenever possible.
+# Several operations, like and refine and as-path are provided. They all use
+# caching whenever possible.
#
class property-set
{
@@ -92,6 +93,7 @@
}
# Returns Jam list of stored properties.
+ #
rule raw ( )
{
return $(self.raw) ;
@@ -103,18 +105,21 @@
}
# Returns properties that are neither incidental nor free.
+ #
rule base ( )
{
return $(self.base) ;
}
- # Returns free properties which are not dependency properties.
+ # Returns free properties which are not incidental.
+ #
rule free ( )
{
return $(self.free) ;
}
# Returns dependency properties.
+ #
rule dependency ( )
{
return $(self.dependency) ;
@@ -136,6 +141,7 @@
}
# Returns incidental properties.
+ #
rule incidental ( )
{
return $(self.incidental) ;
@@ -239,6 +245,7 @@
# Returns a list of
# - the computed path
# - if the path is relative to the build directory, a value of 'true'.
+ #
rule target-path ( )
{
if ! $(self.target-path)
@@ -318,6 +325,7 @@
}
# Returns all values of 'feature'.
+ #
rule get ( feature )
{
if ! $(self.map-built)
@@ -338,6 +346,7 @@
# Creates a new 'property-set' instance for the given raw properties or returns
# an already existing ones.
+#
rule create ( raw-properties * )
{
raw-properties = [ sequence.unique
@@ -356,6 +365,7 @@
# Creates a new 'property-set' instance after checking that all properties are
# valid and converting incidental properties into gristed form.
+#
rule create-with-validation ( raw-properties * )
{
property.validate $(raw-properties) ;
@@ -365,6 +375,7 @@
# Creates a property-set from the input given by the user, in the context of
# 'jamfile-module' at 'location'.
+#
rule create-from-user-input ( raw-properties * : jamfile-module location )
{
local specification = [ property.translate-paths $(raw-properties)
@@ -386,8 +397,8 @@
# bound.
# - location -- path to which path features are relative.
#
-rule refine-from-user-input ( parent-requirements : specification *
- : project-module : location )
+rule refine-from-user-input ( parent-requirements : specification * :
+ project-module : location )
{
if ! $(specification)
{
@@ -434,6 +445,7 @@
# Returns a property-set with an empty set of properties.
+#
rule empty ( )
{
if ! $(.empty)
Modified: branches/proto/v4/tools/build/v2/build/property.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/property.jam (original)
+++ branches/proto/v4/tools/build/v2/build/property.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -18,6 +18,7 @@
# Refines 'properties' by overriding any non-free and non-conditional properties
# for which a different value is specified in 'requirements'. Returns the
# resulting list of properties.
+#
rule refine ( properties * : requirements * )
{
local result ;
@@ -88,6 +89,7 @@
# Removes all conditional properties whose conditions are not met. For those
# with met conditions, removes the condition. Properties in conditions are
# looked up in 'context'.
+#
rule evaluate-conditionals-in-context ( properties * : context * )
{
local base ;
@@ -165,6 +167,7 @@
# Helper for as-path, below. Orders properties with the implicit ones first, and
# within the two sections in alphabetical order of feature name.
+#
local rule path-order ( x y )
{
if $(y:G) && ! $(x:G)
@@ -219,6 +222,7 @@
# Returns a path representing the given expanded property set.
+#
rule as-path ( properties * )
{
local entry = .result.$(properties:J=-) ;
@@ -250,6 +254,7 @@
# Exit with error if property is not valid.
+#
local rule validate1 ( property )
{
local msg ;
@@ -307,6 +312,7 @@
# Expands any implicit property values in the given property 'specification' so
# they explicitly state their feature.
+#
rule make ( specification * )
{
local result ;
@@ -332,6 +338,7 @@
# Returns a property set containing all the elements in 'properties' that do not
# have their attributes listed in 'attributes'.
+#
rule remove ( attributes + : properties * )
{
local result ;
@@ -348,6 +355,7 @@
# Returns a property set containing all the elements in 'properties' that have
# their attributes listed in 'attributes'.
+#
rule take ( attributes + : properties * )
{
local result ;
@@ -363,6 +371,7 @@
# Selects properties corresponding to any of the given features.
+#
rule select ( features * : properties * )
{
local result ;
@@ -384,6 +393,7 @@
# Returns a modified version of properties with all values of the given feature
# replaced by the given value. If 'value' is empty the feature will be removed.
+#
rule change ( properties * : feature value ? )
{
local result ;
@@ -406,6 +416,7 @@
# property. E.g. <variant>debug,<toolset>gcc:<inlining>full will become
# <variant>debug,<toolset>gcc <inlining>full. Otherwise, returns an empty
# string.
+#
rule split-conditional ( property )
{
local m = [ MATCH "(.+):<(.+)" : $(property) ] ;
@@ -419,6 +430,7 @@
# Interpret all path properties in 'properties' as relative to 'path'. The
# property values are assumed to be in system-specific form, and will be
# translated into normalized form.
+#
rule translate-paths ( properties * : path )
{
local result ;
@@ -456,6 +468,7 @@
# in 'context-module'. Such rules can be either local to the module or global.
# Converts such values into 'indirect-rule' format (see indirect.jam), so they
# can be called from other modules.
+#
rule translate-indirect ( specification * : context-module )
{
local result ;
@@ -498,6 +511,7 @@
# Class which maintains a property set -> string mapping.
+#
class property-map
{
import errors ;
@@ -509,7 +523,8 @@
self.next-flag = 1 ;
}
- # Associate 'value' with 'properties'
+ # Associate 'value' with 'properties'.
+ #
rule insert ( properties + : value )
{
self.all-flags += $(self.next-flag) ;
@@ -522,6 +537,7 @@
# Returns the value associated with 'properties' or any subset of it. If
# more than one subset has a value assigned to it, returns the value for the
# longest subset, if it's unique.
+ #
rule find ( properties + )
{
return [ find-replace $(properties) ] ;
@@ -529,6 +545,7 @@
# Returns the value associated with 'properties'. If 'value' parameter is
# given, replaces the found value.
+ #
rule find-replace ( properties + : value ? )
{
# First find all matches
@@ -558,7 +575,7 @@
}
-local rule __test__ ( )
+rule __test__ ( )
{
import assert ;
import "class" : new ;
@@ -591,24 +608,24 @@
assert.true path-order $(test-space) <optimization>on <rtti>on ;
assert.false path-order $(test-space) <rtti>on <optimization>on ;
- assert.result-equal <toolset>gcc <rtti>off <define>FOO
+ assert.result-set-equal <toolset>gcc <rtti>off <define>FOO
: refine <toolset>gcc <rtti>off
: <define>FOO
: $(test-space) ;
- assert.result-equal <toolset>gcc <optimization>on
+ assert.result-set-equal <toolset>gcc <optimization>on
: refine <toolset>gcc <optimization>off
: <optimization>on
: $(test-space) ;
- assert.result-equal <toolset>gcc <rtti>off
+ assert.result-set-equal <toolset>gcc <rtti>off
: refine <toolset>gcc : <rtti>off : $(test-space) ;
- assert.result-equal <toolset>gcc <rtti>off <rtti>off:<define>FOO
+ assert.result-set-equal <toolset>gcc <rtti>off <rtti>off:<define>FOO
: refine <toolset>gcc : <rtti>off <rtti>off:<define>FOO
: $(test-space) ;
- assert.result-equal <toolset>gcc:<define>foo <toolset>gcc:<define>bar
+ assert.result-set-equal <toolset>gcc:<define>foo <toolset>gcc:<define>bar
: refine <toolset>gcc:<define>foo : <toolset>gcc:<define>bar
: $(test-space) ;
@@ -646,19 +663,19 @@
validate value : $(test-space) ;
catch "value" is not a value of an implicit feature ;
- assert.result-equal <rtti>on
+ assert.result-set-equal <rtti>on
: remove free implicit : <toolset>gcc <define>foo <rtti>on : $(test-space) ;
- assert.result-equal <include>a
+ assert.result-set-equal <include>a
: select include : <include>a <toolset>gcc ;
- assert.result-equal <include>a
+ assert.result-set-equal <include>a
: select include bar : <include>a <toolset>gcc ;
- assert.result-equal <include>a <toolset>gcc
+ assert.result-set-equal <include>a <toolset>gcc
: select include <bar> <toolset> : <include>a <toolset>gcc ;
- assert.result-equal <toolset>kylix <include>a
+ assert.result-set-equal <toolset>kylix <include>a
: change <toolset>gcc <include>a : <toolset> kylix ;
pm = [ new property-map ] ;
@@ -681,7 +698,7 @@
assert.result : split-conditional <define>FOO=A::B ;
# Test conditional feature.
- assert.result-equal <toolset>gcc,<toolset-gcc:version>3.0 <define>FOO
+ assert.result-set-equal <toolset>gcc,<toolset-gcc:version>3.0 <define>FOO
: split-conditional <toolset>gcc,<toolset-gcc:version>3.0:<define>FOO ;
feature.finish-test property-test-temp ;
Modified: branches/proto/v4/tools/build/v2/build/targets.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/targets.jam (original)
+++ branches/proto/v4/tools/build/v2/build/targets.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -507,7 +507,7 @@
# Import rules from parent.
local this-module = [ project-module ] ;
local parent-module = [ $(parent).project-module ] ;
- # Don't import rules coming from 'project-rules' as they must be
+ # Do not import rules coming from 'project-rules' as they must be
# imported localized.
local user-rules = [ set.difference
[ RULENAMES $(parent-module) ] :
@@ -832,7 +832,7 @@
#
rule resolve-reference ( target-reference : project )
{
- # Separate target name from properties override
+ # Separate target name from properties override.
local split = [ MATCH "^([^<]*)(/(<.*))?$" : $(target-reference) ] ;
local id = $(split[1]) ;
local sproperties = ;
@@ -842,7 +842,7 @@
sproperties = [ feature.expand-composites $(sproperties) ] ;
}
- # Find the target
+ # Find the target.
local target = [ $(project).find $(id) ] ;
return $(target) [ property-set.create $(sproperties) ] ;
@@ -880,16 +880,23 @@
# Given a build request and requirements, return properties common to dependency
-# build request and target build properties.
+# build request and target requirements.
+#
+# TODO: Document exactly what 'common properties' are, whether they should
+# include default property values, whether they should contain any conditional
+# properties or should those be already processed, etc. See whether there are
+# any differences between use cases with empty and non-empty build-request as
+# well as with requirements containing and those not containing any non-free
+# features.
#
rule common-properties ( build-request requirements )
{
# For optimization, we add free requirements directly, without using a
- # complex algorithm. This gives the complex algorithm better chance of
+ # complex algorithm. This gives the complex algorithm a better chance of
# caching results.
local free = [ $(requirements).free ] ;
- local non-free = [ property-set.create
- [ $(requirements).base ] [ $(requirements).incidental ] ] ;
+ local non-free = [ property-set.create [ $(requirements).base ]
+ [ $(requirements).incidental ] ] ;
local key = .rp.$(build-request)-$(non-free) ;
if ! $($(key))
@@ -900,7 +907,7 @@
}
-# Given 'context' -- a set of already present properties, and 'requirements',
+# Given a 'context' -- a set of already present properties, and 'requirements',
# decide which extra properties should be applied to 'context'. For conditional
# requirements, this means evaluating condition. For indirect conditional
# requirements, this means calling a rule. Ordinary requirements are always
@@ -915,13 +922,13 @@
#
rule evaluate-requirements ( requirements : context : what )
{
- # Apply non-conditional requirements. It's possible that further conditional
- # requirement change a value set by non-conditional requirements. For
- # example:
+ # Apply non-conditional requirements. It is possible that further
+ # conditional requirement change a value set by non-conditional
+ # requirements. For example:
#
# exe a : a.cpp : <threading>single <toolset>foo:<threading>multi ;
#
- # I'm not sure if this should be an error, or not, especially given that
+ # I am not sure if this should be an error, or not, especially given that
#
# <threading>single
#
@@ -932,15 +939,15 @@
local raw = [ $(context).raw ] ;
raw = [ property.refine $(raw) : $(unconditional) ] ;
- # We've collected properties that surely must be present in common
+ # We have collected properties that surely must be present in common
# properties. We now try to figure out what other properties should be added
# in order to satisfy rules (4)-(6) from the docs.
local conditionals = [ $(requirements).conditional ] ;
# The 'count' variable has one element for each conditional feature and for
- # each occurence of '<indirect-conditional>' feature. It's used as a loop
+ # each occurence of '<indirect-conditional>' feature. It is used as a loop
# counter: for each iteration of the loop before we remove one element and
- # the property set should stabilize before we're done. It's assumed that
+ # the property set should stabilize before we are done. It is assumed that
# #conditionals iterations should be enough for properties to propagate
# along conditions in any direction.
local count = $(conditionals)
@@ -951,9 +958,9 @@
local current = $(raw) ;
- # It's assumed that ordinary conditional requirements can't add
- # <indirect-conditional> properties, and that rules referred by
- # <indirect-conditional> properties can't add new <indirect-conditional>
+ # It is assumed that ordinary conditional requirements can not add
+ # <indirect-conditional> properties, and that rules referred to by
+ # <indirect-conditional> properties can not add new <indirect-conditional>
# properties. So the list of indirect conditionals does not change.
local indirect = [ $(requirements).get <conditional> ] ;
indirect = [ MATCH @(.*) : $(indirect) ] ;
@@ -979,9 +986,9 @@
}
else
{
- # Oops, results of evaluation of conditionals has changed. Also
- # 'current' contains leftover from previous evaluation. Recompute
- # 'current' using initial properties and conditional requirements.
+ # Oops, conditional evaluation results have changed. Also 'current'
+ # contains leftovers from a previous evaluation. Recompute 'current'
+ # using initial properties and conditional requirements.
added-requirements = $(e) ;
current = [ property.refine $(raw) : [ feature.expand $(e) ] ] ;
}
@@ -989,7 +996,7 @@
}
if ! $(ok)
{
- errors.error "Can't evaluate conditional properties " $(conditionals) ;
+ errors.error "Can not evaluate conditional properties " $(conditionals) ;
}
if $(what) = added
@@ -1011,18 +1018,18 @@
{
# This guarantees that default properties are present in the result, unless
# they are overriden by some requirement. FIXME: There is possibility that
- # we've added <foo>bar, which is composite and expands to <foo2>bar2, but
- # default value of <foo2> is not bar2, in which case it's not clear what to
+ # we have added <foo>bar, which is composite and expands to <foo2>bar2, but
+ # default value of <foo2> is not bar2, in which case it is not clear what to
# do.
#
build-request = [ $(build-request).add-defaults ] ;
# Features added by 'add-default' can be composite and expand to features
# without default values -- so they are not added yet. It could be clearer/
- # /faster to expand only newly added properties but that's not critical.
+ # /faster to expand only newly added properties but that is not critical.
build-request = [ $(build-request).expand ] ;
- return [ evaluate-requirements $(requirements)
- : $(build-request) : refined ] ;
+ return [ evaluate-requirements $(requirements) : $(build-request) :
+ refined ] ;
}
@@ -1177,7 +1184,7 @@
if ! $(self.generated.$(property-set))
{
- # Apply free features form the command line. If user said
+ # Apply free features from the command line. If user said
# define=FOO
# he most likely wants this define to be set for all compiles.
property-set = [ $(property-set).refine
@@ -1188,7 +1195,7 @@
if [ modules.peek : .debug-building ]
{
ECHO ;
- ECHO [ targets.indent ] "Common properties:" [ $(rproperties).raw ] ;
+ ECHO [ targets.indent ] "Common properties: " [ $(rproperties).raw ] ;
}
if $(rproperties[1]) != "@error" && [ $(rproperties).get <build> ] != no
@@ -1206,8 +1213,8 @@
if [ modules.peek : .debug-building ]
{
ECHO ;
- ECHO [ targets.indent ]
- "Usage requirements for $(self.name) are " $(usage-requirements) ;
+ ECHO [ targets.indent ] "Usage requirements for"
+ $(self.name)": " $(usage-requirements) ;
}
rproperties = [ property-set.create $(properties)
@@ -1216,8 +1223,8 @@
if [ modules.peek : .debug-building ]
{
- ECHO [ targets.indent ]
- "Build properties: " [ $(rproperties).raw ] ;
+ ECHO [ targets.indent ] "Build properties: "
+ [ $(rproperties).raw ] ;
}
local extra = [ $(rproperties).get <source> ] ;
@@ -1245,9 +1252,8 @@
$(s).set-usage-requirements $(ur) ;
if [ modules.peek : .debug-building ]
{
- ECHO [ targets.indent ]
- "Usage requirements from $(self.name) are"
- [ $(ur).raw ] ;
+ ECHO [ targets.indent ] "Usage requirements from"
+ $(self.name)": " [ $(ur).raw ] ;
}
self.generated.$(property-set) = $(ur) $(result) ;
@@ -1262,27 +1268,28 @@
}
else if [ $(rproperties).get <build> ] = no
{
- ECHO [ targets.indent ]
- "Skipping build of: " [ full-name ] " <build>no in common properties" ;
+ ECHO [ targets.indent ] "Skipping build of: " [ full-name ]
+ " <build>no in common properties" ;
}
else
{
- ECHO [ targets.indent ] "Skipping build of: " [ full-name ] " unknown reason" ;
+ ECHO [ targets.indent ] "Skipping build of: " [ full-name ]
+ " unknown reason" ;
}
- # We are here either because there's been an error computing
- # properties, or there's <build>no in properties. In the latter
- # case we don't want any diagnostic. In the former case, we need
- # diagnostics. FIXME
-
- # If this target fails to build, add <build>no to properties
- # to cause any parent target to fail to build. Except that it
+ # We are here either because there has been an error computing
+ # properties or there is <build>no in properties. In the latter
+ # case we do not want any diagnostic. In the former case, we
+ # need diagnostics. FIXME
+
+ # If this target fails to build, add <build>no to properties to
+ # cause any parent target to fail to build. Except that it
# - does not work now, since we check for <build>no only in
# common properties, but not in properties that came from
# dependencies
- # - it's not clear if that's a good idea anyway. The alias
- # target, for example, should not fail to build if a dependency
- # fails.
+ # - it is not clear if that is a good idea anyway. The alias
+ # target, for example, should not fail to build if a
+ # dependency fails.
self.generated.$(property-set) = [ property-set.create <build>no ] ;
}
}
@@ -1293,7 +1300,10 @@
ECHO [ targets.indent ] "Already built" ;
local ur = $(self.generated.$(property-set)) ;
ur = $(ur[0]) ;
- ECHO [ targets.indent ] " Usage requirements " [ $(ur).raw ] ;
+ targets.increase-indent ;
+ ECHO [ targets.indent ] "Usage requirements from"
+ $(self.name)": " [ $(ur).raw ] ;
+ targets.decrease-indent ;
}
}
@@ -1319,7 +1329,7 @@
local result = [ property-set.create
[ $(xusage-requirements).non-dependency ] $(extra) ] ;
- # Propagate usage requirements we've got from sources, except for the
+ # Propagate usage requirements we got from sources, except for the
# <pch-header> and <pch-file> features.
#
# That feature specifies which pch file to use, and should apply only to
Modified: branches/proto/v4/tools/build/v2/build/toolset.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/toolset.jam (original)
+++ branches/proto/v4/tools/build/v2/build/toolset.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -484,7 +484,7 @@
}
-local rule __test__ ( )
+rule __test__ ( )
{
import assert ;
local p = <b>0 <c>1 <d>2 <e>3 <f>4 ;
Modified: branches/proto/v4/tools/build/v2/build/type.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/type.jam (original)
+++ branches/proto/v4/tools/build/v2/build/type.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -18,8 +18,8 @@
# project -> project-root -> builtin -> type -> targets -> project
# import targets ;
-# The feature is optional so it would never get added implicitly. It's used only
-# for internal purposes and in all cases we want to use it explicitly.
+# The feature is optional so it would never get added implicitly. It is used
+# only for internal purposes and in all cases we want to use it explicitly.
feature.feature target-type : : composite optional ;
feature.feature main-target-type : : optional incidental ;
@@ -30,6 +30,7 @@
# of 'suffixes' here is a shortcut for separately calling the register-suffixes
# rule with the given suffixes and the set-generated-target-suffix rule with the
# first given suffix.
+#
rule register ( type : suffixes * : base-type ? )
{
# Type names cannot contain hyphens, because when used as feature-values
@@ -81,6 +82,7 @@
# Given a type, returns the name of the main target rule which creates targets
# of that type.
+#
rule type-to-rule-name ( type )
{
# Lowercase everything. Convert underscores to dashes.
@@ -91,6 +93,7 @@
# Given a main target rule name, returns the type for which it creates targets.
+#
rule type-from-rule-name ( rule-name )
{
return $(.main-target-type.$(rule-name)) ;
@@ -100,6 +103,7 @@
# Specifies that files with suffix from 'suffixes' be recognized as targets of
# type 'type'. Issues an error if a different type is already specified for any
# of the suffixes.
+#
rule register-suffixes ( suffixes + : type )
{
for local s in $(suffixes)
@@ -118,6 +122,7 @@
# Returns true iff type has been registered.
+#
rule registered ( type )
{
if $(type) in $(.types)
@@ -128,6 +133,7 @@
# Issues an error if 'type' is unknown.
+#
rule validate ( type )
{
if ! $(type) in $(.types)
@@ -138,6 +144,7 @@
# Sets a scanner class that will be used for this 'type'.
+#
rule set-scanner ( type : scanner )
{
if ! $(type) in $(.types)
@@ -149,6 +156,7 @@
# Returns a scanner instance appropriate to 'type' and 'properties'.
+#
rule get-scanner ( type : property-set )
{
if $(.scanner.$(type))
@@ -160,6 +168,7 @@
# Returns the given type and all of its base types in order of their distance
# from type.
+#
rule all-bases ( type )
{
local result = $(type) ;
@@ -184,6 +193,7 @@
# Returns true if 'type' has 'base' as its direct or indirect base.
+#
rule is-derived ( type base )
{
if $(base) in [ all-bases $(type) ]
@@ -194,6 +204,7 @@
# Returns true if 'type' is either derived from or is equal to 'base'.
+#
rule is-subtype ( type base )
{
if $(type) = $(base)
@@ -233,6 +244,7 @@
# Change the suffix previously registered for this type/properties combination.
# If suffix is not yet specified, sets it.
+#
rule change-generated-target-suffix ( type : properties * : suffix )
{
change-generated-target-ps suffix : $(type) : $(properties) : $(suffix) ;
@@ -241,6 +253,7 @@
# Returns the suffix used when generating a file of 'type' with the given
# properties.
+#
rule generated-target-suffix ( type : property-set )
{
return [ generated-target-ps suffix : $(type) : $(property-set) ] ;
@@ -255,6 +268,7 @@
# should be used.
#
# Usage example: library names use the "lib" prefix on unix.
+#
rule set-generated-target-prefix ( type : properties * : prefix )
{
set-generated-target-ps prefix : $(type) : $(properties) : $(prefix) ;
@@ -263,6 +277,7 @@
# Change the prefix previously registered for this type/properties combination.
# If prefix is not yet specified, sets it.
+#
rule change-generated-target-prefix ( type : properties * : prefix )
{
change-generated-target-ps prefix : $(type) : $(properties) : $(prefix) ;
@@ -299,6 +314,7 @@
# when generating a target of 'type' with the specified properties. Parameter
# 'ps' can be either "prefix" or "suffix". If no prefix/suffix is specified for
# 'type', returns prefix/suffix for base type, if any.
+#
local rule generated-target-ps-real ( ps : type : properties * )
{
local result ;
@@ -348,6 +364,7 @@
# Returns file type given it's name. If there are several dots in filename,
# tries each suffix. E.g. for name of "file.so.1.2" suffixes "2", "1", and "so"
# will be tried.
+#
rule type ( filename )
{
local type ;
@@ -365,6 +382,7 @@
# into the global namespace under different alias names and exactly what type of
# target it is supposed to construct is read from the name of the alias rule
# actually used to invoke it.
+#
rule main-target-rule ( name : sources * : requirements * : default-build *
: usage-requirements * )
{
Modified: branches/proto/v4/tools/build/v2/build/version.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/version.jam (original)
+++ branches/proto/v4/tools/build/v2/build/version.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -90,7 +90,7 @@
errors.error Invalid version specifier: : $(version:E="(undefined)") ;
}
- if ! $(.jam-version-check.$(version-tag))-is-defined
+ if ! $(.jam-version-check.$(version-tag))-is-not-empty
{
local jam-version = [ modules.peek : JAM_VERSION ] ;
if ! $(jam-version)
Modified: branches/proto/v4/tools/build/v2/build/virtual-target.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/build/virtual-target.jam (original)
+++ branches/proto/v4/tools/build/v2/build/virtual-target.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -1216,7 +1216,7 @@
rule implicit-includes ( feature : target-type ? )
{
local key = ii$(feature)-$(target-type:E="") ;
- if ! $($(key))-is-nonempty
+ if ! $($(key))-is-not-empty
{
local target-paths = [ all-target-directories $(target-type) ] ;
target-paths = [ sequence.unique $(target-paths) ] ;
Modified: branches/proto/v4/tools/build/v2/doc/src/tutorial.xml
==============================================================================
--- branches/proto/v4/tools/build/v2/doc/src/tutorial.xml (original)
+++ branches/proto/v4/tools/build/v2/doc/src/tutorial.xml 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -16,74 +16,70 @@
sections.
-->
- <para>This section will guide you though the most basic features of
- Boost.Build V2. We will start with the “Hello, world” example,
- learn how to use libraries, and finish with testing and installing features.
+ <para>
+ This section will guide you though the most basic features of Boost.Build
+ V2. We will start with the “Hello, world” example, learn how
+ to use libraries, and finish with testing and installing features.
</para>
<section id="bbv2.tutorial.hello">
<title>Hello, world</title>
- <para>The simplest project that Boost.Build can construct is
- stored in <filename>example/hello/</filename> directory. The
- project is described by a file
- called <filename>Jamroot</filename> that contains:
+ <para>
+ The simplest project that Boost.Build can construct is stored in
+ <filename>example/hello/</filename> directory. The project is described by
+ a file called <filename>Jamroot</filename> that contains:
<programlisting>
exe hello : hello.cpp ;
</programlisting>
- Even with this simple setup, you can do some interesting
- things. First of all, just invoking <command>bjam</command> will
- build the <filename>hello</filename>
- executable by compiling and
- linking <filename>hello.cpp</filename>. By default, debug variant
- is built. Now, to build the
- release variant of <filename>hello</filename>, invoke
+ Even with this simple setup, you can do some interesting things. First of
+ all, just invoking <command>bjam</command> will build the <filename>hello
+ </filename> executable by compiling and linking <filename>hello.cpp
+ </filename>. By default, debug variant is built. Now, to build the release
+ variant of <filename>hello</filename>, invoke
<screen>
bjam release
</screen>
- Note that debug and release variants are created in different
- directories, so you can switch between variants or even build
- multiple variants at once, without any unnecessary
- recompilation. Let's extend the example by adding another line
- to our project's <filename>Jamroot</filename>:
+ Note that debug and release variants are created in different directories,
+ so you can switch between variants or even build multiple variants at
+ once, without any unnecessary recompilation. Let us extend the example by
+ adding another line to our project's <filename>Jamroot</filename>:
<programlisting>
exe hello2 : hello.cpp ;
</programlisting>
- Now let us build both the debug and release variants of our project
- again:
+ Now let us build both the debug and release variants of our project again:
<screen>
bjam debug release
</screen>
- Note that two variants of <filename>hello2</filename> are linked.
- Since we have already built both variants
- of <filename>hello</filename>, hello.cpp won't be recompiled;
- instead the existing object files will just be linked into the
- corresponding variants of <filename>hello2</filename>. Now
- let's remove all the built products:
+ Note that two variants of <filename>hello2</filename> are linked. Since we
+ have already built both variants of <filename>hello</filename>, hello.cpp
+ will not be recompiled; instead the existing object files will just be
+ linked into the corresponding variants of <filename>hello2</filename>. Now
+ let us remove all the built products:
<screen>
bjam --clean debug release
</screen>
- It's also possible to build or clean specific targets. The
- following two commands, respectively, build or clean only the
- debug version of <filename>hello2</filename>.
+ It is also possible to build or clean specific targets. The following two
+ commands, respectively, build or clean only the debug version of
+ <filename>hello2</filename>.
<screen>
bjam hello2
bjam --clean hello2
</screen>
</para>
-
</section>
+
<section id="bbv2.tutorial.properties">
<title>Properties</title>
@@ -97,46 +93,49 @@
value) pair. When a user initiates a build, Boost.Build
automatically translates the requested properties into appropriate
command-line flags for invoking toolset components like compilers
- and linkers.</para>
+ and linkers.
+ </para>
- <para>There are many built-in features that can be combined to
+ <para>
+ There are many built-in features that can be combined to
produce arbitrary build configurations. The following command
builds the project's <code>release</code> variant with inlining
disabled and debug symbols enabled:
-
<screen>
bjam release inlining=off debug-symbols=on
</screen>
-</para>
+ </para>
- <para>Properties on the command-line are specified with the syntax:
+ <para>
+ Properties on the command-line are specified with the syntax:
<screen>
<replaceable>feature-name</replaceable>=<replaceable>feature-value</replaceable>
</screen>
-</para>
+ </para>
- <para>The <option>release</option> and <option>debug</option> that we've seen
- in <command>bjam</command> invocations are just a shorthand way to
- specify values of the <varname>variant</varname> feature. For example, the command
- above could also have been written this way:
+ <para>
+ The <option>release</option> and <option>debug</option> that we have seen
+ in <command>bjam</command> invocations are just a shorthand way to specify
+ values of the <varname>variant</varname> feature. For example, the
+ command above could also have been written this way:
<screen>
bjam variant=release inlining=off debug-symbols=on
</screen>
</para>
- <para> <varname>variant</varname> is so commonly-used that it has
- been given special status as an <firstterm>implicit</firstterm>
- feature—Boost.Build will deduce the its identity just
- from the name of one of its values.
+ <para>
+ <varname>variant</varname> is so commonly-used that it has been given
+ special status as an <firstterm>implicit</firstterm> feature—
+ Boost.Build will deduce the its identity just from the name of one of its
+ values.
</para>
<para>
A complete description of features can be found in <xref linkend="bbv2.reference.features"/>.
</para>
-
<section id="bbv2.tutorial.properties.requirements">
<title>Build Requests and Target Requirements</title>
@@ -145,19 +144,19 @@
a <firstterm>build request</firstterm>—a description of
the desired properties for building the requested targets (or,
if no targets were explicitly requested, the project in the
- current directory). The <emphasis>actual</emphasis>
+ current directory). The <emphasis>actual</emphasis>
properties used for building targets are typically a
combination of the build request and properties derived from
the project's <filename>Jamroot</filename> (and its other
Jamfiles, as described in <xref
- linkend="bbv2.tutorial.hierarchy"/>). For example, the
+ linkend="bbv2.tutorial.hierarchy"/>). For example, the
locations of <code>#include</code>d header files are normally
not specified on the command-line, but described in
Jamfiles as <firstterm>target
requirements</firstterm> and automatically combined with the
- build request for those targets. Multithread-enabled
+ build request for those targets. Multithread-enabled
compilation is another example of a typical target
- requirement. The Jamfile fragment below
+ requirement. The Jamfile fragment below
illustrates how these requirements might be specified.
</para>
@@ -169,41 +168,39 @@
</programlisting>
<para>
- When <filename>hello</filename> is built, the two
- requirements specified above will always be present.
- If the build request given on the <command>bjam</command>
- command-line explictly contradicts a target's requirements,
- the target requirements usually override (or, in the case of
- “free”” features like
+ When <filename>hello</filename> is built, the two requirements specified
+ above will always be present. If the build request given on the
+ <command>bjam</command> command-line explictly contradicts a target's
+ requirements, the target requirements usually override (or, in the case
+ of “free”” features like
<varname><include></varname>,
<footnote>
-<para>
-See <xref linkend="bbv2.reference.features.attributes"/>
-</para></footnote>
+ <para>
+ See <xref linkend="bbv2.reference.features.attributes"/>
+ </para>
+ </footnote>
augments) the build request.
-
</para>
<tip>
- <para>The value of the <varname><include></varname> feature is
- relative to the location of <filename>Jamroot</filename> where it's
+ <para>
+ The value of the <varname><include></varname> feature is
+ relative to the location of <filename>Jamroot</filename> where it is
used.
</para>
</tip>
-
</section>
+
<section id="bbv2.tutorial.properties.project_attributes">
<title>Project Attributes</title>
<para>
- If we want the same requirements for our other
- target, <filename>hello2</filename>, we could simply duplicate
- them. However, as projects grow, that approach leads to a great
- deal of repeated boilerplate in Jamfiles.
-
- Fortunately, there's a better way. Each project can specify a
- set of <firstterm>attributes</firstterm>, including
- requirements:
+ If we want the same requirements for our other target, <filename>hello2
+ </filename>, we could simply duplicate them. However, as projects grow,
+ that approach leads to a great deal of repeated boilerplate in Jamfiles.
+
+ Fortunately, there's a better way. Each project can specify a set of
+ <firstterm>attributes</firstterm>, including requirements:
<programlisting>
project
@@ -211,11 +208,10 @@
;
exe hello : hello.cpp ;
-exe hello2 : hello.cpp ;
-</programlisting>
+exe hello2 : hello.cpp ;</programlisting>
- The effect would be as if we specified the same requirement for
- both <filename>hello</filename> and <filename>hello2</filename>.
+ The effect would be as if we specified the same requirement for both
+ <filename>hello</filename> and <filename>hello2</filename>.
</para>
</section>
</section>
@@ -223,17 +219,16 @@
<section id="bbv2.tutorial.hierarchy">
<title>Project Hierarchies</title>
- <para>So far we've only considered examples with one project
- —a. with one user-written Boost.Jam file,
- <filename>Jamroot</filename>). A typical large codebase would be
- composed of many projects organized into a tree. The top of the
- tree is called the <firstterm>project root</firstterm>. Every
- subproject is defined by a file called
- <filename>Jamfile</filename> in a descendant directory of the
- project root. The parent project of a subproject is defined by
- the nearest <filename>Jamfile</filename> or
- <filename>Jamroot</filename> file in an ancestor directory. For
- example, in the following directory layout:
+ <para>
+ So far we have only considered examples with one project —a. with
+ one user-written Boost.Jam file, <filename>Jamroot</filename>). A typical
+ large codebase would be composed of many projects organized into a tree.
+ The top of the tree is called the <firstterm>project root</firstterm>.
+ Every subproject is defined by a file called <filename>Jamfile</filename>
+ in a descendant directory of the project root. The parent project of a
+ subproject is defined by the nearest <filename>Jamfile</filename> or
+ <filename>Jamroot</filename> file in an ancestor directory. For example,
+ in the following directory layout:
<screen>
top/
@@ -253,10 +248,9 @@
. `-- bar.cpp
</screen>
- the project root is <filename>top/</filename>. The projects in
- <filename>top/app/</filename> and
- <filename>top/util/foo/</filename> are immediate children of the
- root project.
+ the project root is <filename>top/</filename>. The projects in
+ <filename>top/app/</filename> and <filename>top/util/foo/</filename> are
+ immediate children of the root project.
<note>
<para>
@@ -409,7 +403,7 @@
<para>
Second, we modify <filename>app/Jamfile</filename> to use the project id:
<programlisting>
-exe app : app.cpp /library-example/foo//bar ;<programlisting>
+exe app : app.cpp /library-example/foo//bar ;</programlisting>
The <filename>/library-example/foo//bar</filename> syntax is used to refer
to the target <filename>bar</filename> in the project with id <filename>
@@ -458,7 +452,7 @@
<literal>shared</literal>, and to build a static library, the value should
be <literal>static</literal>. You can request a static build either on the
command line:
- <programlisting>bjam link=static<programlisting>
+ <programlisting>bjam link=static</programlisting>
or in the library's requirements:
<programlisting>lib l : l.cpp : <link>static ;</programlisting>
</para>
@@ -551,7 +545,6 @@
<!-- Need ref here to 'testing facilities' -->
</para>
</note>
-
</section>
<section id="bbv2.tutorial.conditions">
Modified: branches/proto/v4/tools/build/v2/kernel/class.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/kernel/class.jam (original)
+++ branches/proto/v4/tools/build/v2/kernel/class.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -1,16 +1,16 @@
-# Copyright 2001, 2002, 2003 Dave Abrahams
-# Copyright 2002, 2005 Rene Rivera
-# Copyright 2002, 2003 Vladimir Prus
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+# Copyright 2001, 2002, 2003 Dave Abrahams
+# Copyright 2002, 2005 Rene Rivera
+# Copyright 2002, 2003 Vladimir Prus
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
# Polymorphic class system built on top of core Jam facilities.
#
# Classes are defined by 'class' keywords::
#
-# class myclass ( arg1 )
+# class myclass
# {
-# rule __init__ ( ) # constructor
+# rule __init__ ( arg1 ) # constructor
# {
# self.attribute = $(arg1) ;
# }
@@ -35,7 +35,7 @@
#
# Derived class are created by mentioning base classes in the declaration::
#
-# class derived : myclass
+# class derived : myclass
# {
# rule __init__ ( arg )
# {
@@ -62,13 +62,8 @@
# base-name.method-name. By convention, attribute names are prefixed with
# "self.".
-import numbers ;
-import errors : * ;
-import set ;
import modules ;
-import assert ;
-
-classes = ;
+import numbers ;
rule xinit ( instance : class )
@@ -77,7 +72,7 @@
{
__class__ = $(2) ;
__name__ = $(1) ;
- }
+ }
}
@@ -85,16 +80,16 @@
{
.next-instance ?= 1 ;
local id = object($(class))@$(.next-instance) ;
-
+
xinit $(id) : $(class) ;
-
+
INSTANCE $(id) : class@$(class) ;
- IMPORT_MODULE $(id) : ;
+ IMPORT_MODULE $(id) ;
$(id).__init__ $(args) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ;
-
- # bump the next unique object name
+
+ # Bump the next unique object name.
.next-instance = [ numbers.increment $(.next-instance) ] ;
-
+
# Return the name of the new instance.
return $(id) ;
}
@@ -102,11 +97,6 @@
rule bases ( class )
{
- #if ! ( $(class) in $(classes) )
- #{
- # error class $(class) not defined ;
- #}
-
module class@$(class)
{
return $(__bases__) ;
@@ -116,15 +106,9 @@
rule is-derived ( class : bases + )
{
- #local all = $(class) $(bases) ;
- #if ! ( $(all) in $(classes) )
- #{
- # error class(es) [ set.difference $(class) $(bases) : $(classes) ] not defined ;
- #}
-
local stack = $(class) ;
local visited found ;
- while ( ! $(found) ) && $(stack)
+ while ! $(found) && $(stack)
{
local top = $(stack[1]) ;
stack = $(stack[2-]) ;
@@ -132,7 +116,7 @@
{
visited += $(top) ;
stack += [ bases $(top) ] ;
-
+
if $(bases) in $(visited)
{
found = true ;
@@ -147,16 +131,16 @@
#
rule is-instance ( value )
{
- return [ MATCH "^(object\\()[^@]+\\)@.*" : $(value) ] ;
+ return [ MATCH "^(object\\()[^@]+\\)@.*" : $(value) ] ;
}
# Check if the given value is of the given type.
#
rule is-a (
- instance # The value to check.
- : type # The type to test for.
- )
+ instance # The value to check.
+ : type # The type to test for.
+)
{
if [ is-instance $(instance) ]
{
@@ -175,25 +159,25 @@
}
-local rule __test__ ( )
+rule __test__ ( )
{
- import "class" : * ;
import assert ;
- import errors : * ;
+ import "class" : new ;
# This will be the construction function for a class called 'myclass'.
- class myclass
+ #
+ class myclass
{
- import assert : nonempty-variable ;
-
+ import assert ;
+
rule __init__ ( x_ * : y_ * )
- {
- # set some instance variables
+ {
+ # Set some instance variables.
x = $(x_) ;
y = $(y_) ;
foo += 10 ;
}
-
+
rule set-x ( newx * )
{
x = $(newx) ;
@@ -239,33 +223,34 @@
{
return $(__class__) ;
}
-
+
rule get-instance ( )
{
return $(__name__) ;
}
-
+
rule invariant ( )
{
assert.equal 1 : 1 ;
- }
-
+ }
+
rule get-foo ( )
{
return $(foo) ;
- }
+ }
}
# class myclass ;
class derived1 : myclass
- {
+ {
rule __init__ ( z_ )
{
myclass.__init__ $(z_) : X ;
- z = $(z_) ;
+ z = $(z_) ;
}
-
- # override g
+
+ # Override g.
+ #
rule g ( args * )
{
return derived1.g ;
@@ -282,47 +267,52 @@
}
# Check that 'assert.equal' visible in base class is visible here.
+ #
rule invariant2 ( )
{
assert.equal 2 : 2 ;
- }
-
- # Check that 'nonempty-variable' visible in base class is visible here.
+ }
+
+ # Check that 'assert.variable-not-empty' visible in base class is
+ # visible here.
+ #
rule invariant3 ( )
{
local v = 10 ;
- nonempty-variable v ;
- }
+ assert.variable-not-empty v ;
+ }
}
# class derived1 : myclass ;
- class derived2 : myclass
+ class derived2 : myclass
{
rule __init__ ( )
- {
+ {
myclass.__init__ 1 : 2 ;
}
-
- # override g
+
+ # Override g.
+ #
rule g ( args * )
{
return derived2.g ;
}
- rule get-x ( )
- {
- # Test the ability to call base class functions with qualification.
- return [ myclass.get-x ] ;
- }
+ # Test the ability to call base class functions with qualification.
+ #
+ rule get-x ( )
+ {
+ return [ myclass.get-x ] ;
+ }
}
# class derived2 : myclass ;
class derived2a : derived2
{
- rule __init__
+ rule __init__
{
derived2.__init__ ;
- }
+ }
}
# class derived2a : derived2 ;
@@ -339,9 +329,9 @@
expect_derived2 $(e) ;
# Argument checking is set up to call exit(1) directly on failure, and we
- # can't hijack that with try, so we'd better not do this test by default.
- # We could fix this by having errors look up and invoke the EXIT rule
- # instead; EXIT can be hijacked (;-)
+ # can not hijack that with try, so we should better not do this test by
+ # default. We could fix this by having errors look up and invoke the EXIT
+ # rule instead; EXIT can be hijacked (;-)
if --fail-typecheck in [ modules.peek : ARGV ]
{
try ;
@@ -349,11 +339,10 @@
expect_derived2 $(a) ;
}
catch
- "Expected an instance of derived2 but got" instead
- ;
+ "Expected an instance of derived2 but got" instead
+ ;
}
-
#try ;
#{
# new bad_subclass ;
@@ -379,13 +368,13 @@
assert.result derived1.g : $(b).f ;
assert.result derived2.g : $(c).f ;
assert.result derived2.g : $(d).f ;
-
+
assert.result 10 : $(b).get-foo ;
-
+
$(a).invariant ;
$(b).invariant2 ;
$(b).invariant3 ;
-
+
# Check that the __class__ attribute is getting properly set.
assert.result myclass : $(a).get-class ;
assert.result derived1 : $(b).get-class ;
@@ -400,13 +389,12 @@
assert.result c.x : $(c).get-x ;
assert.result d.x : $(d).get-x ;
- class derived3 : derived1 derived2
+ class derived3 : derived1 derived2
{
rule __init__ ( )
{
}
}
-
assert.result : bases myclass ;
assert.result myclass : bases derived1 ;
Modified: branches/proto/v4/tools/build/v2/kernel/errors.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/kernel/errors.jam (original)
+++ branches/proto/v4/tools/build/v2/kernel/errors.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -6,6 +6,7 @@
# Print a stack backtrace leading to this rule's caller. Each argument
# represents a line of output to be printed after the first line of the
# backtrace.
+#
rule backtrace ( skip-frames prefix messages * : * )
{
local frame-skips = 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 ;
@@ -71,6 +72,7 @@
# message matched expectations.
# Begin looking for error messages.
+#
rule try ( )
{
.disabled += true ;
@@ -80,13 +82,14 @@
# Stop looking for error messages; generate an error if an argument of messages
# is not found in the corresponding argument in the error call.
+#
rule catch ( messages * : * )
{
.disabled = $(.disabled[2-]) ; # Pop the stack.
import sequence ;
- if ! $(.last-error-$(.args))-is-nonempty
+ if ! $(.last-error-$(.args))-is-not-empty
{
error-skip-frames 3 expected an error, but none occurred ;
}
@@ -102,7 +105,7 @@
.last-error-$(.args) = ;
error-skip-frames 3 expected \"$(v)\" in argument $(n) of error
- : got \"$(joined)\" instead ;
+ : got \"$(joined)\" instead ;
}
}
}
@@ -134,6 +137,7 @@
# Print an error message with a stack backtrace and exit.
+#
rule error ( messages * : * )
{
if $(.no-error-backtrace)
@@ -164,6 +168,7 @@
# Same as 'error', but the generated backtrace will include only user files.
+#
rule user-error ( messages * : * )
{
.user-modules-only = 1 ;
@@ -172,6 +177,7 @@
# Print a warning message with a stack backtrace and exit.
+#
rule warning
{
backtrace 2 warning: $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ;
@@ -182,6 +188,7 @@
# elements representing the same information. This is mostly useful for
# formatting descriptions of arguments with which a rule was called when
# reporting an error.
+#
rule lol->list ( * )
{
local result ;
@@ -203,6 +210,7 @@
# Return the file:line for the nearest entry in backtrace which correspond to a
# user module.
+#
rule nearest-user-location ( )
{
local bt = [ BACKTRACE ] ;
Modified: branches/proto/v4/tools/build/v2/kernel/modules.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/kernel/modules.jam (original)
+++ branches/proto/v4/tools/build/v2/kernel/modules.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -10,22 +10,49 @@
# dependencies.
.loading ?= ;
-# A list of modules needing to be tested via __test__ rule.
+# A list of modules needing to be tested using their __test__ rule.
.untested ?= ;
-# A list of modules which have been tested via __test__.
+# A list of modules which have been tested using their __test__ rule.
.tested ?= ;
-# Meant to be invoked from import when no __test__ rule is defined in the given
-# module.
+# Runs internal Boost Build unit tests for the specified module. The module's
+# __test__ rule is executed in its own module to eliminate any inadvertent
+# effects of testing module dependencies (such as assert) on the module itself.
#
-local rule no-test-defined
+local rule run-module-test ( m )
{
- import modules ;
- if ! ( --quiet in [ modules.peek : ARGV ] )
+ local tested-modules = [ modules.peek modules : .tested ] ;
+
+ if ( ! $(m) in $(tested-modules) ) # Avoid recursive test invocations.
+ && ( ( --debug in $(argv) ) || ( --debug-module=$(m) in $(argv) ) )
{
- ECHO warning: no __test__ rule defined in module $(__module__) ;
+ modules.poke modules : .tested : $(tested-modules) $(m) ;
+
+ if ! ( __test__ in [ RULENAMES $(m) ] )
+ {
+ local argv = [ peek : ARGV ] ;
+ if ! ( --quiet in $(argv) ) && ( --debug-tests in $(argv) )
+ {
+ ECHO warning: no __test__ rule defined in module $(m) ;
+ }
+ }
+ else
+ {
+ if ! ( --quiet in $(argv) )
+ {
+ ECHO testing module $(m)... ;
+ }
+
+ local test-module = __test-$(m)__ ;
+ IMPORT $(m) : [ RULENAMES $(m) ] : $(test-module) : [ RULENAMES $(m) ] ;
+ IMPORT $(m) : __test__ : $(test-module) : __test__ : LOCALIZE ;
+ module $(test-module)
+ {
+ __test__ ;
+ }
+ }
}
}
@@ -67,7 +94,7 @@
# Call the given rule locally in the given module. Use this for rules accepting
# rule names as arguments, so that the passed rule may be invoked in the context
# of the rule's caller (for example, if the rule accesses module globals or is a
-# local rule). Note that rules called this way may accept at most 8 parmeters.
+# local rule). Note that rules called this way may accept at most 8 parameters.
#
rule call-in ( module-name ? : rule-name args * : * )
{
@@ -81,7 +108,7 @@
# Given a possibly qualified rule name and arguments, remove any initial module
# qualification from the rule and invoke it in that module. If there is no
# module qualification, the rule is invoked in the global module. Note that
-# rules called this way may accept at most 8 parmeters.
+# rules called this way may accept at most 8 parameters.
#
rule call-locally ( qualified-rule-name args * : * )
{
@@ -111,7 +138,7 @@
{
filename ?= $(module-name).jam ;
- # Mark the module loaded so we don't try to load it recursively.
+ # Mark the module loaded so we do not try to load it recursively.
.loaded += $(module-name) ;
# Suppress tests if any module loads are already in progress.
@@ -120,7 +147,7 @@
# Push this module on the loading stack.
.loading += $(module-name) ;
- # Remember that it's untested.
+ # Remember that it is untested.
.untested += $(module-name) ;
# Insert the new module's __name__ and __file__ globals.
@@ -129,9 +156,6 @@
module $(module-name)
{
- # Prepare default behavior, in case no __test__ is defined.
- IMPORT modules : no-test-defined : $(__name__) : __test__ ;
-
# Add some grist so that the module will have a unique target name.
local module-target = $(__file__:G=module@) ;
@@ -150,11 +174,11 @@
if $(module-name) != modules && ! [ binding $(module-name) ]
{
import errors ;
- errors.error "Couldn't find module" $(module-name) in $(search) ;
+ errors.error "Could not find module" $(module-name) in $(search) ;
}
- # Pop the loading stack. Must happen before testing or we'll run into a
- # circular loading dependency.
+ # Pop the loading stack. Must happen before testing or we will run into
+ # a circular loading dependency.
.loading = $(.loading[1--2]) ;
# Run any pending tests if this is an outer load.
@@ -163,31 +187,7 @@
local argv = [ peek : ARGV ] ;
for local m in $(.untested)
{
- if ( ! $(m) in $(.tested) ) # Avoid recursive test invocations.
- && ( ( --debug in $(argv) ) || ( --debug-module=$(m) in $(argv) ) )
- {
- .tested += $(m) ;
- if ! ( --quiet in $(argv) )
- {
- ECHO testing module $(m)... ;
- }
-
- # Import m's rules into __test-$(m)__ for easy access.
- IMPORT $(m) : [ RULENAMES $(m) ] : __test-$(m)__ : [ RULENAMES $(m) ] ;
-
- # Execute the module's __test__ rule in its own module to
- # eliminate the inadvertent effects of testing module
- # dependencies (such as assert) on the module itself.
- IMPORT $(m) : __test__ : __test-$(m)__ : __test__ : LOCALIZE ;
-
- module __test-$(m)__
- {
- # Set up the name of the module we're testing so that
- # no-test-defined can find it.
- __module__ = $(1) ;
- __test__ ;
- }
- }
+ run-module-test $(m) ;
}
.untested = ;
}
@@ -213,8 +213,8 @@
# Transform each path in the list, with all backslashes converted to forward
# slashes and all detectable redundancy removed. Something like this is probably
-# needed in path.jam, but I'm not sure of that, I don't understand it, and I'm
-# not ready to move all of path.jam into the kernel.
+# needed in path.jam, but I am not sure of that, I do not understand it, and I
+# am not ready to move all of path.jam into the kernel.
#
local rule normalize-raw-paths ( paths * )
{
@@ -324,7 +324,7 @@
IMPORT modules : $(globalize) : : modules.$(globalize) ;
-local rule __test__ ( )
+rule __test__ ( )
{
import assert ;
import modules : normalize-raw-paths ;
Modified: branches/proto/v4/tools/build/v2/tools/msvc.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/msvc.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/msvc.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -393,9 +393,9 @@
setup-$(c) = [ feature.get-values <setup-$(c)> : $(options) ] ;
- if ! $(setup-$(c))-is-defined
+ if ! $(setup-$(c))-is-not-empty
{
- if $(global-setup)-is-defined
+ if $(global-setup)-is-not-empty
{
setup-$(c) = $(global-setup) ;
@@ -404,7 +404,7 @@
# global setup command for which target platform:
# setup-options = [ feature.get-values <setup-options-$(c)> : $(options) ] ;
- setup-options ?= default-global-setup-options-$(c) ;
+ setup-options ?= $(default-global-setup-options-$(c)) ;
}
else
{
Modified: branches/proto/v4/tools/build/v2/tools/stage.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/tools/stage.jam (original)
+++ branches/proto/v4/tools/build/v2/tools/stage.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -56,7 +56,6 @@
if ! $(loc)
{
loc = [ path.root $(self.name) [ $(self.project).get location ] ] ;
-
property-set = [ $(property-set).add-raw $(loc:G=<location>) ] ;
}
@@ -76,7 +75,7 @@
ps-raw = [ $(ps).raw ] ;
# Unless <hardcode-dll-paths>true is in properties, which can happen
- # only if the user has explicitly requested it, nuke all.
+ # only if the user has explicitly requested it, nuke all
# <dll-path> properties
if [ $(property-set).get <hardcode-dll-paths> ] != true
{
@@ -158,7 +157,7 @@
{
if $(ename)
{
- errors.error "In 'install': <name> property specified with target that requires relinking" ;
+ errors.error "In 'install': <name> property specified with target that requires relinking." ;
}
else
{
@@ -200,7 +199,7 @@
source-targets = [ collect-targets $(source-targets) ] ;
}
- # Filter the target types, if needed
+ # Filter the target types, if needed.
local included-types = [ $(property-set).get <install-type> ] ;
for local r in $(source-targets)
{
@@ -234,7 +233,7 @@
return $(result) ;
}
- # CONSIDER: figure out why we can't use virtual-target.traverse here.
+ # CONSIDER: figure out why we can not use virtual-target.traverse here.
#
rule collect-targets ( targets * )
{
Modified: branches/proto/v4/tools/build/v2/util/assert.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/assert.jam (original)
+++ branches/proto/v4/tools/build/v2/util/assert.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -1,119 +1,205 @@
-# Copyright 2001, 2002, 2003 Dave Abrahams
-# Copyright 2006 Rene Rivera
-# Copyright 2002, 2003 Vladimir Prus
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+# Copyright 2001, 2002, 2003 Dave Abrahams
+# Copyright 2006 Rene Rivera
+# Copyright 2002, 2003 Vladimir Prus
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-import errors : error-skip-frames lol->list ;
+import errors ;
import modules ;
-# Assert the equality of A and B.
+################################################################################
+#
+# Private implementation details.
+#
+################################################################################
+
+# Rule added as a replacement for the regular Jam = operator but which does not
+# ignore trailing empty string elements.
+#
+local rule exact-equal-test ( lhs * : rhs * )
+{
+ local lhs_extended = $(lhs) xxx ;
+ local rhs_extended = $(rhs) xxx ;
+ if $(lhs_extended) = $(rhs_extended)
+ {
+ return true ;
+ }
+}
+
+
+# Two lists are considered set-equal if they contain the same elements, ignoring
+# duplicates and ordering.
+#
+local rule set-equal-test ( set1 * : set2 * )
+{
+ if ( $(set1) in $(set2) ) && ( $(set2) in $(set1) )
+ {
+ return true ;
+ }
+}
+
+
+################################################################################
+#
+# Public interface.
+#
+################################################################################
+
+# Assert the equality of A and B, ignoring trailing empty string elements.
#
rule equal ( a * : b * )
{
if $(a) != $(b)
{
- error-skip-frames 3 assertion failure: \"$(a)\" "!=" \"$(b)\" ;
+ errors.error-skip-frames 3 assertion failure: \"$(a)\" "==" \"$(b)\"
+ (ignoring trailing empty strings) ;
}
}
-# Assert that EXPECTED is the result of calling RULE-NAME with the given
-# arguments.
+# Assert that the result of calling RULE-NAME on the given arguments has a false
+# logical value (is either an empty list or all empty strings).
#
-rule result ( expected * : rule-name args * : * )
+rule false ( rule-name args * : * )
{
local result ;
module [ CALLER_MODULE ]
{
- modules.poke assert : result
- : [ $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ] ;
+ modules.poke assert : result : [ $(1) : $(2) : $(3) : $(4) : $(5) : $(6)
+ : $(7) : $(8) : $(9) ] ;
}
- if $(result) != $(expected)
+ if $(result)
{
- error-skip-frames 3 assertion failure: "[" $(rule-name)
- [ lol->list $(args) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ]
- "]"
- : expected: \"$(expected)\"
- : got: \"$(result)\" ;
+ errors.error-skip-frames 3 assertion failure: Expected false result from
+ "[" $(rule-name) [ errors.lol->list $(args) : $(2) : $(3) : $(4) :
+ $(5) : $(6) : $(7) : $(8) : $(9) ] "]" : Got: "[" \"$(result)\" "]" ;
}
}
-rule .set.equal ( set1 * : set2 * )
+# Assert that ELEMENT is present in LIST.
+#
+rule "in" ( element : list * )
{
- if ( $(set1) in $(set2) ) && ( $(set2) in $(set1) )
+ if ! $(element) in $(list)
{
- return true ;
+ errors.error-skip-frames 3 assertion failure: Expected \"$(element)\" in
+ "[" \"$(list)\" "]" ;
}
}
-# Assert that EXPECTED is equal to the result of calling RULE-NAME with the
-# given arguments.
+# Assert the inequality of A and B, ignoring trailing empty string elements.
#
-rule result-equal ( expected * : rule-name args * : * )
+rule not-equal ( a * : b * )
{
- local result ;
- module [ CALLER_MODULE ]
+ if $(a) = $(b)
{
- modules.poke assert : result
- : [ $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ] ;
+ errors.error-skip-frames 3 assertion failure: \"$(a)\" "!=" \"$(b)\"
+ (ignoring trailing empty strings) ;
}
+}
+
- if ! [ .set.equal $(result) : $(expected) ]
+# Assert that ELEMENT is not present in LIST.
+#
+rule not-in ( element : list * )
+{
+ if $(element) in $(list)
{
- error-skip-frames 3 assertion failure: "[" $(rule-name)
- [ lol->list $(args) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ]
- "]"
- : expected: \"$(expected)\"
- : got: \"$(result)\" ;
+ errors.error-skip-frames 3 assertion failure: Did not expect
+ \"$(element)\" in "[" \"$(list)\" "]" ;
}
}
-# Assert that the given variable is nonempty.
+# Assert the inequality of A and B as sets.
#
-rule nonempty-variable ( name )
+rule not-set-equal ( a * : b * )
{
- local value = [ modules.peek [ CALLER_MODULE ] : $(name) ] ;
+ if [ set-equal-test $(a) : $(b) ]
+ {
+ errors.error-skip-frames 3 assertion failure: Expected "[" \"$(a)\" "]"
+ and "[" \"$(b)\" "]" to not be equal as sets ;
+ }
+}
+
- if ! $(value)-is-nonempty
+# Assert that A and B are not exactly equal, not ignoring trailing empty string
+# elements.
+#
+rule not-exact-equal ( a * : b * )
+{
+ if [ exact-equal-test $(a) : $(b) ]
{
- error-skip-frames 3 assertion failure: expecting non-empty variable $(variable) ;
+ errors.error-skip-frames 3 assertion failure: \"$(a)\" "!=" \"$(b)\" ;
}
}
-# Assert that the result of calling RULE-NAME on the given arguments has a true
-# logical value (is neither an empty list nor all empty strings).
+# Assert that EXPECTED is the result of calling RULE-NAME with the given
+# arguments.
#
-rule true ( rule-name args * : * )
+rule result ( expected * : rule-name args * : * )
{
local result ;
module [ CALLER_MODULE ]
{
- modules.poke assert : result
- : [ $(1) : $(2) : $(3) : $(4)
- : $(5) : $(6) : $(7) : $(8) : $(9) ] ;
+ modules.poke assert : result : [ $(2) : $(3) : $(4) : $(5) : $(6) : $(7)
+ : $(8) : $(9) ] ;
}
- if ! $(result)
+ if ! [ exact-equal-test $(result) : $(expected) ]
{
- error-skip-frames 3 assertion failure: expecting true result from
- "[" $(rule-name)
- [ lol->list $(args) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ]
- "]" ;
+ errors.error-skip-frames 3 assertion failure: "[" $(rule-name) [
+ errors.lol->list $(args) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) :
+ $(9) ] "]" : Expected: "[" \"$(expected)\" "]" : Got: "["
+ \"$(result)\" "]" ;
}
}
-# Assert that the result of calling RULE-NAME on the given arguments has a false
-# logical value (is either an empty list or all empty strings).
+# Assert that EXPECTED is set-equal (i.e. duplicates and ordering are ignored)
+# to the result of calling RULE-NAME with the given arguments. Note that rules
+# called this way may accept at most 8 parameters.
#
-rule false ( rule-name args * : * )
+rule result-set-equal ( expected * : rule-name args * : * )
+{
+ local result ;
+ module [ CALLER_MODULE ]
+ {
+ modules.poke assert : result : [ $(2) : $(3) : $(4) : $(5) : $(6) : $(7)
+ : $(8) : $(9) ] ;
+ }
+
+ if ! [ set-equal-test $(result) : $(expected) ]
+ {
+ errors.error-skip-frames 3 assertion failure: "[" $(rule-name) [
+ errors.lol->list $(args) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) :
+ $(9) ] "]" : Expected: "[" \"$(expected)\" "]" : Got: "["
+ \"$(result)\" "]" ;
+ }
+}
+
+
+# Assert the equality of A and B as sets.
+#
+rule set-equal ( a * : b * )
+{
+ if ! [ set-equal-test $(a) : $(b) ]
+ {
+ errors.error-skip-frames 3 assertion failure: Expected "[" \"$(a)\" "]"
+ and "[" \"$(b)\" "]" to be equal as sets ;
+ }
+}
+
+
+# Assert that the result of calling RULE-NAME on the given arguments has a true
+# logical value (is neither an empty list nor all empty strings).
+#
+rule true ( rule-name args * : * )
{
local result ;
module [ CALLER_MODULE ]
@@ -122,35 +208,129 @@
: $(7) : $(8) : $(9) ] ;
}
- if $(result)
+ if ! $(result)
{
- error-skip-frames 3 assertion failure: expecting false result from
- "[" $(rule-name) [ lol->list $(args) : $(2) : $(3) : $(4) : $(5) :
- $(6) : $(7) : $(8) : $(9) ] "]" : got [ lol->list $(result) ]
- instead ;
+ errors.error-skip-frames 3 assertion failure: Expected true result from
+ "[" $(rule-name) [ errors.lol->list $(args) : $(2) : $(3) : $(4) :
+ $(5) : $(6) : $(7) : $(8) : $(9) ] "]" ;
}
}
-# Assert that 'element' is present in 'list'.
+# Assert the exact equality of A and B, not ignoring trailing empty string
+# elements.
#
-rule "in" ( element : list * )
+rule exact-equal ( a * : b * )
{
- if ! $(element) in $(list)
+ if ! [ exact-equal-test $(a) : $(b) ]
{
- error-skip-frames 3 assertion failure: expecting $(element) in
- "[" $(list) "]" ;
+ errors.error-skip-frames 3 assertion failure: \"$(a)\" "==" \"$(b)\" ;
}
}
-# Assert that 'element' is not present in 'list'.
+# Assert that the given variable is not an empty list.
#
-rule not-in ( element : list * )
+rule variable-not-empty ( name )
{
- if $(element) in $(list)
+ local value = [ modules.peek [ CALLER_MODULE ] : $(name) ] ;
+ if ! $(value)-is-not-empty
{
- error-skip-frames 3 assertion failure: did not expect $(element) in
- "[" $(list) "]" ;
+ errors.error-skip-frames 3 assertion failure: Expected variable
+ \"$(name)\" not to be an empty list ;
}
}
+
+
+rule __test__ ( )
+{
+ # Helper rule used to avoid test duplication related to different list
+ # equality test rules.
+ #
+ local rule run-equality-test ( equality-assert : ignore-trailing-empty-strings ? )
+ {
+ local not-equality-assert = not-$(equality-assert) ;
+
+ # When the given equality test is expected to ignore trailing empty
+ # strings some of the test results should be inverted.
+ local not-equality-assert-i = not-$(equality-assert) ;
+ if $(ignore-trailing-empty-strings)
+ {
+ not-equality-assert-i = $(equality-assert) ;
+ }
+
+ $(equality-assert) : ;
+ $(equality-assert) "" "" : "" "" ;
+ $(not-equality-assert-i) : "" "" ;
+ $(equality-assert) x : x ;
+ $(not-equality-assert) : x ;
+ $(not-equality-assert) "" : x ;
+ $(not-equality-assert) "" "" : x ;
+ $(not-equality-assert-i) x : x "" ;
+ $(equality-assert) x "" : x "" ;
+ $(not-equality-assert) x : "" x ;
+ $(equality-assert) "" x : "" x ;
+
+ $(equality-assert) 1 2 3 : 1 2 3 ;
+ $(not-equality-assert) 1 2 3 : 3 2 1 ;
+ $(not-equality-assert) 1 2 3 : 1 5 3 ;
+ $(not-equality-assert) 1 2 3 : 1 "" 3 ;
+ $(not-equality-assert) 1 2 3 : 1 1 2 3 ;
+ $(not-equality-assert) 1 2 3 : 1 2 2 3 ;
+ $(not-equality-assert) 1 2 3 : 5 6 7 ;
+
+ # Extra variables used here just to make sure Boost Jam or Boost Build
+ # do not handle lists with empty strings differently depending on
+ # whether they are literals or stored in variables.
+
+ local empty = ;
+ local empty-strings = "" "" ;
+ local x-empty-strings = x "" "" ;
+ local empty-strings-x = "" "" x ;
+
+ $(equality-assert) : $(empty) ;
+ $(not-equality-assert-i) "" : $(empty) ;
+ $(not-equality-assert-i) "" "" : $(empty) ;
+ $(not-equality-assert-i) : $(empty-strings) ;
+ $(not-equality-assert-i) "" : $(empty-strings) ;
+ $(equality-assert) "" "" : $(empty-strings) ;
+ $(equality-assert) $(empty) : $(empty) ;
+ $(equality-assert) $(empty-strings) : $(empty-strings) ;
+ $(not-equality-assert-i) $(empty) : $(empty-strings) ;
+ $(equality-assert) $(x-empty-strings) : $(x-empty-strings) ;
+ $(equality-assert) $(empty-strings-x) : $(empty-strings-x) ;
+ $(not-equality-assert) $(empty-strings-x) : $(x-empty-strings) ;
+ $(not-equality-assert-i) x : $(x-empty-strings) ;
+ $(not-equality-assert) x : $(empty-strings-x) ;
+ $(not-equality-assert-i) x : $(x-empty-strings) ;
+ $(not-equality-assert-i) x "" : $(x-empty-strings) ;
+ $(equality-assert) x "" "" : $(x-empty-strings) ;
+ $(not-equality-assert) x : $(empty-strings-x) ;
+ $(not-equality-assert) "" x : $(empty-strings-x) ;
+ $(equality-assert) "" "" x : $(empty-strings-x) ;
+ }
+
+
+ # ---------------
+ # Equality tests.
+ # ---------------
+
+ run-equality-test equal : ignore-trailing-empty-strings ;
+ run-equality-test exact-equal ;
+
+
+ # -------------------------
+ # assert.set-equal() tests.
+ # -------------------------
+
+ set-equal : ;
+ not-set-equal "" "" : ;
+ set-equal "" "" : "" ;
+ set-equal "" "" : "" "" ;
+ set-equal a b c : a b c ;
+ set-equal a b c : b c a ;
+ set-equal a b c a : a b c ;
+ set-equal a b c : a b c a ;
+ not-set-equal a b c : a b c d ;
+ not-set-equal a b c d : a b c ;
+}
Modified: branches/proto/v4/tools/build/v2/util/container.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/container.jam (original)
+++ branches/proto/v4/tools/build/v2/util/container.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -1,33 +1,31 @@
-# Copyright 2003 Dave Abrahams
-# Copyright 2002, 2003 Rene Rivera
-# Copyright 2002, 2003, 2004 Vladimir Prus
-# Distributed under the Boost Software License, Version 1.0.
-# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+# Copyright 2003 Dave Abrahams
+# Copyright 2002, 2003 Rene Rivera
+# Copyright 2002, 2003, 2004 Vladimir Prus
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
# Various container classes.
-import "class" : * ;
-
-# Base for container objects. This lets us construct recursive structures.
-# That is containers with containers in them, specifically so we can tell
-# literal values from node values.
+# Base for container objects. This lets us construct recursive structures. That
+# is containers with containers in them, specifically so we can tell literal
+# values from node values.
#
-class node
+class node
{
rule __init__ (
- value ? # Optional value to set node to initially.
+ value ? # Optional value to set node to initially.
)
{
self.value = $(value) ;
}
-
+
# Set the value of this node, passing nothing will clear it.
#
rule set ( value * )
{
self.value = $(value) ;
}
-
+
# Get the value of this node.
#
rule get ( )
@@ -37,49 +35,49 @@
}
-# A simple vector. Interface mimics the C++ std::vector and std::list,
-# with the exception that indices are one (1) based to follow Jam standard.
+# A simple vector. Interface mimics the C++ std::vector and std::list, with the
+# exception that indices are one (1) based to follow Jam standard.
#
# TODO: Possibly add assertion checks.
#
-class vector : node
+class vector : node
{
- import numbers : range ;
+ import numbers ;
import utility ;
import sequence ;
-
+
rule __init__ (
- values * # Initial contents of vector.
+ values * # Initial contents of vector.
)
{
node.__init__ ;
self.value = $(values) ;
- }
-
+ }
+
# Get the value of the first element.
#
rule front ( )
{
return $(self.value[1]) ;
}
-
+
# Get the value of the last element.
#
rule back ( )
{
return $(self.value[-1]) ;
}
-
- # Get the value of the element at the given index, one based.
- # Access to elements of recursive structures is supported directly.
- # Specifying additional index values recursively accesses the elements as
- # containers. For example: [ $(v).at 1 : 2 ] would retrieve the second element
- # of our first element. This assuming the first element is a container.
+
+ # Get the value of the element at the given index, one based. Access to
+ # elements of recursive structures is supported directly. Specifying
+ # additional index values recursively accesses the elements as containers.
+ # For example: [ $(v).at 1 : 2 ] would retrieve the second element of our
+ # first element, assuming the first element is a container.
#
rule at (
- index # The element index, one based.
- : * # Additional indices to access recursively.
- )
+ index # The element index, one based.
+ : * # Additional indices to access recursively.
+ )
{
local r = $(self.value[$(index)]) ;
if $(2)
@@ -88,15 +86,15 @@
}
return $(r) ;
}
-
+
# Get the value contained in the given element. This has the same
- # functionality and interface as "at" but in addition gets the value
- # of the referenced element, assuming it's a "node".
+ # functionality and interface as "at" but in addition gets the value of the
+ # referenced element, assuming it is a "node".
#
rule get-at (
- index # The element index, one based.
- : * # Additional indices to access recursively.
- )
+ index # The element index, one based.
+ : * # Additional indices to access recursively.
+ )
{
local r = $(self.value[$(index)]) ;
if $(2)
@@ -105,64 +103,68 @@
}
return [ $(r).get ] ;
}
-
- # Insert the given value into the front of the vector pushing the
- # rest of the elements back.
+
+ # Insert the given value into the front of the vector pushing the rest of
+ # the elements back.
#
rule push-front (
- value # Value to become first element.
- )
+ value # Value to become first element.
+ )
{
self.value = $(value) $(self.value) ;
}
-
- # Remove the front element from the vector. Does not return the value.
- # No effect if vector is empty.
+
+ # Remove the front element from the vector. Does not return the value. No
+ # effect if vector is empty.
#
rule pop-front ( )
{
self.value = $(self.value[2-]) ;
}
-
+
# Add the given value at the end of the vector.
#
rule push-back (
- value # Value to become back element.
- )
+ value # Value to become back element.
+ )
{
self.value += $(value) ;
}
-
- # Remove the back element from the vector. Does not return the value.
- # No effect if vector is empty.
+
+ # Remove the back element from the vector. Does not return the value. No
+ # effect if vector is empty.
#
rule pop-back ( )
{
self.value = $(self.value[1--2]) ;
}
-
- # Insert the given value at the given index, one based. The values
- # at and to the right of the of the index are push back to make room
- # for the new value.
+
+ # Insert the given value at the given index, one based. The values at and to
+ # the right of the index are pushed back to make room for the new value.
+ # If the index is passed the end of the vector the element is added to the
+ # end.
#
rule insert (
- index # The index to insert at, one based.
- : value # The value to insert.
- )
+ index # The index to insert at, one based.
+ : value # The value to insert.
+ )
{
local left = $(self.value[1-$(index)]) ;
- left = $(left[1--2]) ;
local right = $(self.value[$(index)-]) ;
+ if $(right)-is-not-empty
+ {
+ left = $(left[1--2]) ;
+ }
self.value = $(left) $(value) $(right) ;
}
-
- # Remove one or more elements from the vector. The range is inclusive,
- # and not specifying an end is equivalent to the [start,start] range.
+
+ # Remove one or more elements from the vector. The range is inclusive, and
+ # not specifying an end is equivalent to the [start, start] range.
#
rule erase (
- start # Index of first element ro remove.
- end ? # Optional, index of last element to remove.
- )
+ start # Index of first element to remove.
+ end ? # Optional, index of last element to remove.
+ )
{
end ?= $(start) ;
local left = $(self.value[1-$(start)]) ;
@@ -171,144 +173,167 @@
right = $(right[2-]) ;
self.value = $(left) $(right) ;
}
-
+
# Remove all elements from the vector.
#
rule clear ( )
{
self.value = ;
}
-
+
# The number of elements in the vector.
#
rule size ( )
{
return [ sequence.length $(self.value) ] ;
}
-
- # Returns "true" if there are NO elements in the vector, empty
- # otherwise.
+
+ # Returns "true" if there are NO elements in the vector, empty otherwise.
#
rule empty ( )
{
- if ! $(self.value)
+ if ! $(self.value)-is-not-empty
{
return true ;
}
}
- # Returns the list of all valid indices for this vector.
- rule indices ( )
- {
- if ! [ empty ]
- {
- local size = [ size ] ;
- return [ range 1 : $(size) ] $(size) ;
- }
- }
-
# Returns the textual representation of content.
+ #
rule str ( )
{
return "[" [ sequence.transform utility.str : $(self.value) ] "]" ;
}
- # Sorts the vector inplace, calling 'utility.less' for
- # comparisons.
- # NOTE: this rule is unused at the moment.
+ # Sorts the vector inplace, calling 'utility.less' for comparisons.
+ #
rule sort ( )
{
- self.value =
- [ sequence.insertion-sort $(self.value) : utility.less ] ;
+ self.value = [ sequence.insertion-sort $(self.value) : utility.less ] ;
}
- # Returns true if content is equal to the content of other vector.
- # Uses 'utility.equal' for comparison.
+ # Returns true if content is equal to the content of other vector. Uses
+ # 'utility.equal' for comparison.
+ #
rule equal ( another )
- {
+ {
local mismatch ;
- if [ size ] = [ $(another).size ]
+ local size = [ size ] ;
+ if $(size) = [ $(another).size ]
{
- for local i in [ indices ]
+ for local i in [ numbers.range 1 $(size) ]
{
if ! [ utility.equal [ at $(i) ] [ $(another).at $(i) ] ]
{
mismatch = true ;
}
}
- }
+ }
else
{
mismatch = true ;
}
-
- if ! $(mismatch)
+
+ if ! $(mismatch)
{
return true ;
}
}
}
-local rule __test__ ( )
+
+rule __test__ ( )
{
import assert ;
import "class" : new ;
-
- local l = [ new vector ] ;
- assert.result 0 : $(l).size ;
- assert.result : $(l).indices ;
- assert.result "[" "]" : $(l).str ;
- $(l).push-back b ;
- $(l).push-front a ;
- assert.result 1 2 : $(l).indices ;
- assert.result "[" a b "]" : $(l).str ;
- assert.result a : $(l).front ;
- assert.result b : $(l).back ;
- $(l).insert 2 : d ;
- $(l).insert 2 : c ;
- $(l).insert 4 : f ;
- $(l).insert 4 : e ;
- $(l).pop-back ;
- assert.result 5 : $(l).size ;
- assert.result d : $(l).at 3 ;
- $(l).pop-front ;
- assert.result c : $(l).front ;
- assert.false $(l).empty ;
- $(l).erase 3 4 ;
- assert.result 2 : $(l).size ;
-
- local l2 = [ new vector q w e r t y ] ;
- assert.result 6 : $(l2).size ;
- $(l).push-back $(l2) ;
- assert.result 3 : $(l).size ;
- local l2-alias = [ $(l).back ] ;
- assert.result e : $(l2-alias).at 3 ;
- $(l).clear ;
- assert.true $(l).empty ;
- assert.false $(l2-alias).empty ;
- $(l2).pop-back ;
- assert.result t : $(l2-alias).back ;
-
- local l3 = [ new vector ] ;
- $(l3).push-back [ new vector 1 2 3 4 5 ] ;
- $(l3).push-back [ new vector a b c ] ;
- assert.result "[" "[" 1 2 3 4 5 "]" "[" a b c "]" "]" : $(l3).str ;
- $(l3).push-back [ new vector [ new vector x y z ] [ new vector 7 8 9 ] ] ;
- assert.result 1 : $(l3).at 1 : 1 ;
- assert.result b : $(l3).at 2 : 2 ;
- assert.result a b c : $(l3).get-at 2 ;
- assert.result 7 8 9 : $(l3).get-at 3 : 2 ;
-
- local l4 = [ new vector 4 3 6 ] ;
- $(l4).sort ;
- assert.result 3 4 6 : $(l4).get ;
-
- assert.false $(l4).equal $(l3) ;
- local l5 = [ new vector 3 4 6 ] ;
- assert.true $(l4).equal $(l5) ;
- # Check that vectors of different sizes are considered non-equal
- $(l5).pop-back ;
- assert.false $(l4).equal $(l5) ;
- local l6 = [ new vector [ new vector 1 2 3 ] ] ;
- assert.true $(l6).equal [ new vector [ new vector 1 2 3 ] ] ;
+
+ local v1 = [ new vector ] ;
+ assert.true $(v1).equal $(v1) ;
+ assert.true $(v1).empty ;
+ assert.result 0 : $(v1).size ;
+ assert.result "[" "]" : $(v1).str ;
+ $(v1).push-back b ;
+ $(v1).push-front a ;
+ assert.result "[" a b "]" : $(v1).str ;
+ assert.result a : $(v1).front ;
+ assert.result b : $(v1).back ;
+ $(v1).insert 2 : d ;
+ $(v1).insert 2 : c ;
+ $(v1).insert 4 : f ;
+ $(v1).insert 4 : e ;
+ $(v1).pop-back ;
+ assert.result 5 : $(v1).size ;
+ assert.result d : $(v1).at 3 ;
+ $(v1).pop-front ;
+ assert.result c : $(v1).front ;
+ assert.false $(v1).empty ;
+ $(v1).erase 3 4 ;
+ assert.result 2 : $(v1).size ;
+
+ local v2 = [ new vector q w e r t y ] ;
+ assert.result 6 : $(v2).size ;
+ $(v1).push-back $(v2) ;
+ assert.result 3 : $(v1).size ;
+ local v2-alias = [ $(v1).back ] ;
+ assert.result e : $(v2-alias).at 3 ;
+ $(v1).clear ;
+ assert.true $(v1).empty ;
+ assert.false $(v2-alias).empty ;
+ $(v2).pop-back ;
+ assert.result t : $(v2-alias).back ;
+
+ local v3 = [ new vector ] ;
+ $(v3).push-back [ new vector 1 2 3 4 5 ] ;
+ $(v3).push-back [ new vector a b c ] ;
+ assert.result "[" "[" 1 2 3 4 5 "]" "[" a b c "]" "]" : $(v3).str ;
+ $(v3).push-back [ new vector [ new vector x y z ] [ new vector 7 8 9 ] ] ;
+ assert.result 1 : $(v3).at 1 : 1 ;
+ assert.result b : $(v3).at 2 : 2 ;
+ assert.result a b c : $(v3).get-at 2 ;
+ assert.result 7 8 9 : $(v3).get-at 3 : 2 ;
+
+ local v4 = [ new vector 4 3 6 ] ;
+ $(v4).sort ;
+ assert.result 3 4 6 : $(v4).get ;
+ assert.false $(v4).equal $(v3) ;
+
+ local v5 = [ new vector 3 4 6 ] ;
+ assert.true $(v4).equal $(v5) ;
+ # Check that vectors of different sizes are considered non-equal.
+ $(v5).pop-back ;
+ assert.false $(v4).equal $(v5) ;
+
+ local v6 = [ new vector [ new vector 1 2 3 ] ] ;
+ assert.true $(v6).equal [ new vector [ new vector 1 2 3 ] ] ;
+
+ local v7 = [ new vector 111 222 333 ] ;
+ assert.true $(v7).equal $(v7) ;
+ $(v7).insert 4 : 444 ;
+ assert.result 111 222 333 444 : $(v7).get ;
+ $(v7).insert 999 : xxx ;
+ assert.result 111 222 333 444 xxx : $(v7).get ;
+
+ local v8 = [ new vector "" "" "" ] ;
+ assert.true $(v8).equal $(v8) ;
+ assert.false $(v8).empty ;
+ assert.result 3 : $(v8).size ;
+ assert.result "" : $(v8).at 1 ;
+ assert.result "" : $(v8).at 2 ;
+ assert.result "" : $(v8).at 3 ;
+ assert.result : $(v8).at 4 ;
+ $(v8).insert 2 : 222 ;
+ assert.result 4 : $(v8).size ;
+ assert.result "" 222 "" "" : $(v8).get ;
+ $(v8).insert 999 : "" ;
+ assert.result 5 : $(v8).size ;
+ assert.result "" 222 "" "" "" : $(v8).get ;
+ $(v8).insert 999 : xxx ;
+ assert.result 6 : $(v8).size ;
+ assert.result "" 222 "" "" "" xxx : $(v8).get ;
+
+ # Regression test for a bug causing vector.equal to compare only the first
+ # and the last element in the given vectors.
+ local v9 = [ new vector 111 xxx 222 ] ;
+ local v10 = [ new vector 111 yyy 222 ] ;
+ assert.false $(v9).equal $(v10) ;
}
Modified: branches/proto/v4/tools/build/v2/util/doc.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/doc.jam (original)
+++ branches/proto/v4/tools/build/v2/util/doc.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -17,6 +17,7 @@
import sequence ;
import path ;
+
# The type of output to generate.
# "console" is formated text echoed to the console (the default);
# "text" is formated text appended to the output file;
@@ -24,9 +25,10 @@
#
help-output = console ;
-# The file to output documentation to when generating "text" or "html"
-# help. This is without extension as the extension is determined by the
-# type of output.
+
+# The file to output documentation to when generating "text" or "html" help.
+# This is without extension as the extension is determined by the type of
+# output.
#
help-output-file = help ;
@@ -39,45 +41,43 @@
#
.option.detailed ?= ;
-# Generate debug output as the help is generated and modules
-# are parsed.
+# Generate debug output as the help is generated and modules are parsed.
#
.option.debug ?= ;
# Enable or disable a documentation option.
#
local rule set-option (
- option # The option name.
- : value ? # Enabled (non-empty), or disabled (empty)
- )
+ option # The option name.
+ : value ? # Enabled (non-empty), or disabled (empty)
+)
{
.option.$(option) = $(value) ;
}
+
# Set the type of output.
#
-local rule set-output (
- type
- )
+local rule set-output ( type )
{
help-output = $(type) ;
}
+
# Set the output to a file.
#
-local rule set-output-file (
- file
- )
+local rule set-output-file ( file )
{
help-output-file = $(file) ;
}
-# Extracts the brief comment from a complete comment. The brief
-# comment is the first sentence.
+
+# Extracts the brief comment from a complete comment. The brief comment is the
+# first sentence.
#
local rule brief-comment (
- docs * # The comment documentation.
- )
+ docs * # The comment documentation.
+)
{
local d = $(docs:J=" ") ;
local p = [ MATCH ".*([.])$" : $(d) ] ;
@@ -93,12 +93,13 @@
return $(brief:J="") ;
}
+
# Specifies the documentation for the current module.
#
local rule set-module-doc (
- module-name ? # The name of the module to document.
- : docs * # The documentation for the module.
- )
+ module-name ? # The name of the module to document.
+ : docs * # The documentation for the module.
+)
{
module-name ?= * ;
@@ -111,12 +112,13 @@
}
}
+
# Specifies the documentation for the current module.
#
local rule set-module-copyright (
- module-name ? # The name of the module to document.
- : copyright * # The copyright for the module.
- )
+ module-name ? # The name of the module to document.
+ : copyright * # The copyright for the module.
+)
{
module-name ?= * ;
@@ -129,15 +131,16 @@
}
}
-# Specifies the documentation for a rule in the current module.
-# If called in the global module, this documents a global rule.
+
+# Specifies the documentation for a rule in the current module. If called in the
+# global module, this documents a global rule.
#
local rule set-rule-doc (
- name # The name of the rule.
- module-name ? # The name of the module to document.
- is-local ? # Whether the rule is local to the module.
- : docs * # The documentation for the rule.
- )
+ name # The name of the rule.
+ module-name ? # The name of the module to document.
+ is-local ? # Whether the rule is local to the module.
+ : docs * # The documentation for the rule.
+)
{
module-name ?= * ;
@@ -151,13 +154,14 @@
}
}
+
# Specify a class, will turn a rule into a class.
#
local rule set-class-doc (
- name # The name of the class.
- module-name ? # The name of the module to document.
- : super-name ? # The super class name.
- )
+ name # The name of the class.
+ module-name ? # The name of the module to document.
+ : super-name ? # The super class name.
+)
{
module-name ?= * ;
@@ -174,28 +178,30 @@
$(name) $($(module-name).$(name).class-rules) ] ;
}
+
# Set the argument call signature of a rule.
#
local rule set-rule-arguments-signature (
- name # The name of the rule.
- module-name ? # The name of the module to document.
- : signature * # The arguments signature.
- )
+ name # The name of the rule.
+ module-name ? # The name of the module to document.
+ : signature * # The arguments signature.
+)
{
module-name ?= * ;
$(module-name).$(name).signature = $(signature) ;
}
+
# Specifies the documentation for an argument of a rule.
#
local rule set-argument-doc (
- name # The name of the argument.
- qualifier # Argument syntax qualifier, "*", "+", etc.
- rule-name # The name of the rule.
- module-name ? # THe optional name of the module.
- : docs * # The documentation.
- )
+ name # The name of the argument.
+ qualifier # Argument syntax qualifier, "*", "+", etc.
+ rule-name # The name of the rule.
+ module-name ? # THe optional name of the module.
+ : docs * # The documentation.
+)
{
module-name ?= * ;
@@ -208,16 +214,17 @@
}
}
-# Specifies the documentation for a variable in the current module.
-# If called in the global module, the global variable is documented.
+
+# Specifies the documentation for a variable in the current module. If called in
+# the global module, the global variable is documented.
#
local rule set-variable-doc (
- name # The name of the variable.
- default # The default value.
- initial # The initial value.
- module-name ? # The name of the module to document.
- : docs * # The documentation for the variable.
- )
+ name # The name of the variable.
+ default # The default value.
+ initial # The initial value.
+ module-name ? # The name of the module to document.
+ : docs * # The documentation for the variable.
+)
{
module-name ?= * ;
@@ -232,6 +239,7 @@
}
}
+
# Generates a general description of the documentation and help system.
#
local rule print-help-top ( )
@@ -268,6 +276,7 @@
print.list-end ;
}
+
# Generate Jam/Boost.Jam command usage information.
#
local rule print-help-usage ( )
@@ -344,13 +353,14 @@
print.list-end ;
}
-# Generates description of options controlling the help system.
-# This automatically reads the options as all variables in the doc
-# module of the form ".option.*".
+
+# Generates description of options controlling the help system. This
+# automatically reads the options as all variables in the doc module of the form
+# ".option.*".
#
local rule print-help-options (
- module-name # The doc module.
- )
+ module-name # The doc module.
+)
{
print.section "Help Options"
These are all the options available for enabling or disabling to control
@@ -376,15 +386,16 @@
}
}
-# Generate brief documentation for all the known items in the section
-# for a module. Possible sections are: "rules", and "variables".
+
+# Generate brief documentation for all the known items in the section for a
+# module. Possible sections are: "rules", and "variables".
#
local rule print-help-module-section (
- module # The module name.
- section # rules or variables.
- : section-head # The title of the section.
- section-description * # The detailed description of the section.
- )
+ module # The module name.
+ section # rules or variables.
+ : section-head # The title of the section.
+ section-description * # The detailed description of the section.
+)
{
if $($(module).$(section))
{
@@ -410,12 +421,13 @@
}
}
+
# Generate documentation for all possible modules. We attempt to list all known
# modules together with a brief description of each.
#
local rule print-help-all (
ignored # Usually the module name, but is ignored here.
- )
+)
{
print.section "Modules"
"These are all the known modules. Use --help <module> to get more"
@@ -442,12 +454,13 @@
}
}
-# Generate documentation for a module. Basic information about
-# the module is generated.
+
+# Generate documentation for a module. Basic information about the module is
+# generated.
#
local rule print-help-module (
- module-name # The module to generate docs for.
- )
+ module-name # The module to generate docs for.
+)
{
# Print the docs.
print.section "Module '$(module-name)'" $($(module-name).docs) ;
@@ -473,12 +486,13 @@
}
}
+
# Generate documentation for a set of rules in a module.
#
local rule print-help-rules (
- module-name # Module of the rules.
- : name * # Optional list of rules to describe.
- )
+ module-name # Module of the rules.
+ : name * # Optional list of rules to describe.
+)
{
name ?= $($(module-name).rules) ;
if [ set.intersection $(name) : $($(module-name).rules) $($(module-name).class-rules) ]
@@ -506,12 +520,13 @@
}
}
+
# Generate documentation for a set of classes in a module.
#
local rule print-help-classes (
- module-name # Module of the classes.
- : name * # Optional list of classes to describe.
- )
+ module-name # Module of the classes.
+ : name * # Optional list of classes to describe.
+)
{
name ?= $($(module-name).classes) ;
if [ set.intersection $(name) : $($(module-name).classes) ]
@@ -550,12 +565,13 @@
}
}
+
# Generate documentation for a set of variables in a module.
#
local rule print-help-variables (
- module-name ? # Module of the variables.
- : name * # Optional list of variables to describe.
- )
+ module-name ? # Module of the variables.
+ : name * # Optional list of variables to describe.
+)
{
name ?= $($(module-name).variables) ;
if [ set.intersection $(name) : $($(module-name).variables) ]
@@ -582,12 +598,13 @@
}
}
+
# Generate documentation for a project.
#
local rule print-help-project (
unused ?
- : jamfile * # The project Jamfile.
- )
+ : jamfile * # The project Jamfile.
+)
{
if $(jamfile<$(jamfile)>.docs[1])
{
@@ -599,13 +616,14 @@
}
}
+
# Generate documentation for a config file.
#
local rule print-help-config (
unused ?
- : type # The type of configuration file user or site.
- config-file # The configuration Jamfile.
- )
+ : type # The type of configuration file user or site.
+ config-file # The configuration Jamfile.
+)
{
if $(jamfile<$(config-file)>.docs[1])
{
@@ -617,17 +635,14 @@
}
}
-local rule __test__
-{
-}
ws = " " ;
# Extract the text from a block of comments.
#
local rule extract-comment (
- var # The name of the variable to extract from.
- )
+ var # The name of the variable to extract from.
+)
{
local comment = ;
local line = $($(var)[1]) ;
@@ -643,11 +658,12 @@
return $(comment) ;
}
+
# Extract s single line of Jam syntax, ignoring any comments.
#
local rule extract-syntax (
- var # The name of the variable to extract from.
- )
+ var # The name of the variable to extract from.
+)
{
local syntax = ;
local line = $($(var)[1]) ;
@@ -664,12 +680,13 @@
return $(syntax) ;
}
-# Extract the next token, this is either a single Jam construct
-# or a comment as a single token.
+
+# Extract the next token, this is either a single Jam construct or a comment as
+# a single token.
#
local rule extract-token (
- var # The name of the variable to extract from.
- )
+ var # The name of the variable to extract from.
+)
{
local parts = ;
while ! $(parts)
@@ -694,18 +711,19 @@
return $(token) ;
}
+
# Scan for a rule declaration as the next item in the variable.
#
local rule scan-rule (
- syntax ? # The first part of the text which contains the rule declaration.
- : var # The name of the variable to extract from.
- )
+ syntax ? # The first part of the text which contains the rule declaration.
+ : var # The name of the variable to extract from.
+)
{
local rule-parts =
[ MATCH "^[$(ws)]*(rule|local[$(ws)]*rule)[$(ws)]+([^$(ws)]+)[$(ws)]*(.*)" : $(syntax:J=" ") ] ;
if $(rule-parts[1])
{
- # mark as doc for rule.
+ # Mark as doc for rule.
local rule-name = $(rule-parts[2]) ;
if $(scope-name)
{
@@ -716,10 +734,10 @@
{
set-rule-doc $(rule-name) $(module-name) $(is-local) : $(comment-block) ;
}
- # parse args of rule.
+ # Parse args of rule.
$(var) = $(rule-parts[3-]) $($(var)) ;
set-rule-arguments-signature $(rule-name) $(module-name) : [ scan-rule-arguments $(var) ] ;
- # scan within this rules scope.
+ # Scan within this rules scope.
local scope-level = [ extract-token $(var) ] ;
local scope-name = $(rule-name) ;
while $(scope-level)
@@ -743,11 +761,12 @@
}
}
+
# Scan the arguments of a rule.
#
local rule scan-rule-arguments (
- var # The name of the variable to extract from.
- )
+ var # The name of the variable to extract from.
+)
{
local arg-syntax = ;
local token = [ extract-token $(var) ] ;
@@ -801,11 +820,13 @@
return $(arg-signature) ;
}
+
# Scan for a variable declaration.
+#
local rule scan-variable (
- syntax ? # The first part of the text which contains the variable declaration.
- : var # The name of the variable to extract from.
- )
+ syntax ? # The first part of the text which contains the variable declaration.
+ : var # The name of the variable to extract from.
+)
{
# [1] = name, [2] = value(s)
local var-parts =
@@ -833,10 +854,12 @@
}
}
+
# Scan a class declaration.
+#
local rule scan-class (
- syntax ? # The syntax text for the class declaration.
- )
+ syntax ? # The syntax text for the class declaration.
+)
{
# [1] = class?, [2] = name, [3] = superclass
local class-parts =
@@ -847,24 +870,25 @@
}
}
+
# Scan a module file for documentation comments. This also invokes any actions
# assigned to the module. The actions are the rules that do the actual output of
# the documentation. This rule is invoked as the header scan rule for the module
# file.
#
rule scan-module (
- target # The module file.
- : text * # The text in the file, one item per line.
- : action * # Rule to call to output docs for the module.
- )
+ target # The module file.
+ : text * # The text in the file, one item per line.
+ : action * # Rule to call to output docs for the module.
+)
{
if $(.option.debug) { ECHO "HELP:" scanning module target '$(target)' ; }
local module-name = $(target:B) ;
local module-documented = ;
local comment-block = ;
local syntax-block = ;
- # This is a hack because we can't get the line of a file if it
- # happens to not have a new-line termination.
+ # This is a hack because we can not get the line of a file if it happens to
+ # not have a new-line termination.
text += "}" ;
while $(text)
{
@@ -902,16 +926,19 @@
}
}
-# Import scan-module to global scope, so that it's available during
-# header scanning phase.
+
+# Import scan-module to global scope, so that it is available during header
+# scanning phase.
+#
IMPORT $(__name__) : scan-module : : doc.scan-module ;
-# Read in a file using the SHELL builtin and return the
-# individual lines as would be done for header scanning.
+
+# Read in a file using the SHELL builtin and return the individual lines as
+# would be done for header scanning.
#
local rule read-file (
- file # The file to read in.
- )
+ file # The file to read in.
+)
{
file = [ path.native [ path.root [ path.make $(file) ] [ path.pwd ] ] ] ;
if ! $(.file<$(file)>.lines)
@@ -940,15 +967,15 @@
return $(.file<$(file)>.lines) ;
}
-# Add a scan action to perform to generate the help documentation.
-# The action rule is passed the name of the module as the first argument.
-# The second argument(s) are optional and passed directly as specified
-# here.
+
+# Add a scan action to perform to generate the help documentation. The action
+# rule is passed the name of the module as the first argument. The second
+# argument(s) are optional and passed directly as specified here.
#
local rule do-scan (
- modules + # The modules to scan and perform the action on.
- : action * # The action rule, plus the secondary arguments to pass to the action rule.
- )
+ modules + # The modules to scan and perform the action on.
+ : action * # The action rule, plus the secondary arguments to pass to the action rule.
+)
{
if $(help-output) = text
{
Modified: branches/proto/v4/tools/build/v2/util/indirect.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/indirect.jam (original)
+++ branches/proto/v4/tools/build/v2/util/indirect.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -27,6 +27,7 @@
# expected to be the module in which to invoke the rule by the 'call' rule
# below. Otherwise, the rule will be invoked in the module of this rule's
# caller.
+#
rule make ( rulename bound-args * : context ? )
{
context ?= [ CALLER_MODULE ] ;
@@ -40,6 +41,7 @@
# supplied, the result will be invoked (by 'call', below) in the module of the
# caller. Otherwise, frames > 1 specifies additional call frames to back up in
# order to find the module context.
+#
rule make-qualified ( rulename bound-args * : frames ? )
{
if [ MATCH $(.pattern) : $(rulename) ]
@@ -59,6 +61,7 @@
# Returns the module name in which the given indirect rule will be invoked.
+#
rule get-module ( [indirect-rule] x )
{
local m = [ MATCH $(.pattern) : $(x) ] ;
@@ -71,6 +74,7 @@
# Returns the rulename that will be called when x is invoked.
+#
rule get-rule ( [indirect-rule] x )
{
local m = [ MATCH $(.pattern) : $(x) ] ;
@@ -79,6 +83,7 @@
# Invoke the given indirect-rule.
+#
rule call ( [indirect-rule] r args * : * )
{
return [ modules.call-in [ get-module $(r) ] : [ get-rule $(r) ] $(args)
Modified: branches/proto/v4/tools/build/v2/util/path.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/path.jam (original)
+++ branches/proto/v4/tools/build/v2/util/path.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -510,7 +510,7 @@
rule make-UNIX ( native )
{
# VP: I have no idea now 'native' can be empty here! But it can!
- if $(native) = ""
+ if ! $(native)
{
errors.error "Empty path passed to 'make-UNIX'" ;
}
@@ -815,17 +815,17 @@
# Test processing 'invalid' rooted paths with too many '..' path elements
# that would place them before the root.
- assert.result "" : make "/.." ;
- assert.result "" : make "/../" ;
- assert.result "" : make "/../." ;
- assert.result "" : make "/.././" ;
- assert.result "" : make "/foo/../bar/giz/.././././../../." ;
- assert.result "" : make "/foo/../bar/giz/.././././../.././" ;
- assert.result "" : make "//foo/../bar/giz/.././././../../." ;
- assert.result "" : make "//foo/../bar/giz/.././././../.././" ;
- assert.result "" : make "\\\\foo/../bar/giz/.././././../../." ;
- assert.result "" : make "\\\\foo/../bar/giz/.././././../.././" ;
- assert.result "" : make "/..///.//..///.//..////foo///" ;
+ assert.result : make "/.." ;
+ assert.result : make "/../" ;
+ assert.result : make "/../." ;
+ assert.result : make "/.././" ;
+ assert.result : make "/foo/../bar/giz/.././././../../." ;
+ assert.result : make "/foo/../bar/giz/.././././../.././" ;
+ assert.result : make "//foo/../bar/giz/.././././../../." ;
+ assert.result : make "//foo/../bar/giz/.././././../.././" ;
+ assert.result : make "\\\\foo/../bar/giz/.././././../../." ;
+ assert.result : make "\\\\foo/../bar/giz/.././././../.././" ;
+ assert.result : make "/..///.//..///.//..////foo///" ;
assert.result "foo\\bar\\giz" : native "foo/bar/giz" ;
assert.result "foo" : native "foo" ;
Modified: branches/proto/v4/tools/build/v2/util/print.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/print.jam (original)
+++ branches/proto/v4/tools/build/v2/util/print.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -16,22 +16,22 @@
# The current output target. Defaults to console.
output-target = console ;
-# The current output type. Defaults to plain.
+# The current output type. Defaults to plain. Other possible values are "html".
output-type = plain ;
# Whitespace.
.whitespace = [ string.whitespace ] ;
-# Set the target and type of output to generate. This sets both
-# the destination output and the type of docs to generate to that
-# output. The target can be either a file or "console" for echoing
-# to the console. If the type of output is not specified it defaults
-# to plain text.
+
+# Set the target and type of output to generate. This sets both the destination
+# output and the type of docs to generate to that output. The target can be
+# either a file or "console" for echoing to the console. If the type of output
+# is not specified it defaults to plain text.
#
rule output (
- target # The target file or device; file or "console".
- type ? # The type of output; "plain", or "html".
- )
+ target # The target file or device; file or "console".
+ type ? # The type of output; "plain" or "html".
+)
{
type ?= plain ;
if $(output-target) != $(target)
@@ -57,15 +57,14 @@
}
}
-# Generate a section with a description. The type of output can be
-# controlled by the value of the 'output-type' variable. If not set
-# it defaults to 'console' indicating immediate display to the console.
-# Other possible values are: 'html-file'.
+
+# Generate a section with a description. The type of output can be controlled by
+# the value of the 'output-type' variable.
#
rule section (
- name # The name of the section.
- description * # A number of description lines.
- )
+ name # The name of the section.
+ description * # A number of description lines.
+)
{
if $(output-type) = plain
{
@@ -165,10 +164,9 @@
}
}
-# Generate the start of a list of items. The type of output can be
-# controlled by the value of the 'output-type' variable. If not set
-# it defaults to 'console' indicating immediate display to the console.
-# Other possible values are: 'html-file'.
+
+# Generate the start of a list of items. The type of output can be controlled by
+# the value of the 'output-type' variable.
#
rule list-start ( )
{
@@ -181,14 +179,13 @@
}
}
-# Generate an item in a list. The type of output can be
-# controlled by the value of the 'output-type' variable. If not set
-# it defaults to 'console' indicating immediate display to the console.
-# Other possible values are: 'html-file'.
+
+# Generate an item in a list. The type of output can be controlled by the value
+# of the 'output-type' variable.
#
rule list-item (
- item + # The item to list.
- )
+ item + # The item to list.
+)
{
if $(output-type) = plain
{
@@ -200,10 +197,9 @@
}
}
-# Generate the end of a list of items. The type of output can be
-# controlled by the value of the 'output-type' variable. If not set
-# it defaults to 'console' indicating immediate display to the console.
-# Other possible values are: 'html-file'.
+
+# Generate the end of a list of items. The type of output can be controlled by
+# the value of the 'output-type' variable.
#
rule list-end ( )
{
@@ -217,13 +213,14 @@
}
}
-# Split the given text into separate lines, word-wrapping to a margin.
-# The default margin is 78 characters.
+
+# Split the given text into separate lines, word-wrapping to a margin. The
+# default margin is 78 characters.
#
rule split-at-words (
- text + # The text to split.
- : margin ? # An optional margin, default is 78.
- )
+ text + # The text to split.
+ : margin ? # An optional margin, default is 78.
+)
{
local lines = ;
text = [ string.words $(text:J=" ") ] ;
@@ -264,15 +261,16 @@
return $(lines) ;
}
-# Generate a set of fixed lines. Each single item passed in is
-# output on a separate line. For console this just echos each line,
-# but for html this will split them with <br>.
+
+# Generate a set of fixed lines. Each single item passed in is output on a
+# separate line. For console this just echos each line, but for html this will
+# split them with <br>.
#
rule lines (
- text * # The lines of text.
- : indent ? # Optional indentation prepended to each line after the first one.
- outdent ? # Optional indentation to prepend to the first line.
- )
+ text * # The lines of text.
+ : indent ? # Optional indentation prepended to each line after the first one.
+ outdent ? # Optional indentation to prepend to the first line.
+)
{
text ?= "" ;
indent ?= "" ;
@@ -296,19 +294,20 @@
}
}
-# Output text directly to the current target. When doing output
-# to a file, one can indicate if the text should be output to
-# "prefix" it, as the "body" (default), or "suffix" of the file. This is
-# independant of the actual execution order of the text rule. This rule
-# invokes a singular action, one action only once, which does the
-# build of the file. Therefore actions on the target outside of this
-# rule will happen entirely before and/or after all output using this rule.
+
+# Output text directly to the current target. When doing output to a file, one
+# can indicate if the text should be output to "prefix" it, as the "body"
+# (default), or "suffix" of the file. This is independant of the actual
+# execution order of the text rule. This rule invokes a singular action, one
+# action only once, which does the build of the file. Therefore actions on the
+# target outside of this rule will happen entirely before and/or after all
+# output using this rule.
#
rule text (
- strings * # The strings of text to output.
- : overwrite ? # true to overwrite the output (if it is a file)
- : prefix-body-suffix ? # Indication to output prefix, body, or suffix (for a file).
- )
+ strings * # The strings of text to output.
+ : overwrite ? # true to overwrite the output (if it is a file)
+ : prefix-body-suffix ? # Indication to output prefix, body, or suffix (for a file).
+)
{
prefix-body-suffix ?= body ;
if $(output-target) = console
@@ -350,21 +349,24 @@
$($(output-target).text-suffix) ;
}
+
# Outputs the text to the current targets, after word-wrapping it.
+#
rule wrapped-text ( text + )
{
local lines = [ split-at-words $(text) ] ;
text $(lines) ;
}
-# Escapes text into html/xml printable equivalents.
-# Does not know about tags and therefore tags fed into
-# this will also be escaped. Currently escapes space, "<", ">", and "&".
+
+# Escapes text into html/xml printable equivalents. Does not know about tags and
+# therefore tags fed into this will also be escaped. Currently escapes space,
+# "<", ">", and "&".
#
rule escape-html (
- text + # The text to escape.
- : space ? # What to replace spaces with, defaults to " ".
- )
+ text + # The text to escape.
+ : space ? # What to replace spaces with, defaults to " ".
+)
{
local html-text = ;
while $(text)
@@ -383,24 +385,26 @@
return $(html-text) ;
}
-# Outputs the text strings collected by the text rule to the output
-# file.
+
+# Outputs the text strings collected by the text rule to the output file.
#
actions quietly text-action
{
@($(STDOUT):E=$(text-content:J=$(nl))) $(text-redirect) "$(<)"
}
-local rule __test__ ( )
+
+rule __test__ ( )
{
import assert ;
- assert.result one two three : split-at-words one two three : 5 ;
+ assert.result one two three : split-at-words one two three : 5 ;
assert.result "one two" three : split-at-words one two three : 8 ;
assert.result "one two" three : split-at-words one two three : 9 ;
assert.result "one two three" : split-at-words one two three ;
- # VP, 2004-12-03 The following test fails for some reason,
- # so commenting it out.
+
+ # VP, 2004-12-03 The following test fails for some reason, so commenting it
+ # out.
#assert.result "one two three" "&<>" :
# escape-html "one two three" "&<>" ;
}
Modified: branches/proto/v4/tools/build/v2/util/sequence.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/sequence.jam (original)
+++ branches/proto/v4/tools/build/v2/util/sequence.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -247,7 +247,7 @@
NATIVE_RULE sequence : select-highest-ranked ;
-local rule __test__ ( )
+rule __test__ ( )
{
# Use a unique module so we can test the use of local rules.
module sequence.__test__
Modified: branches/proto/v4/tools/build/v2/util/utility.jam
==============================================================================
--- branches/proto/v4/tools/build/v2/util/utility.jam (original)
+++ branches/proto/v4/tools/build/v2/util/utility.jam 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -108,7 +108,7 @@
-local rule __test__ ( )
+rule __test__ ( )
{
import assert ;
import "class" : new ;
Modified: branches/proto/v4/tools/inspect/ascii_check.cpp
==============================================================================
--- branches/proto/v4/tools/inspect/ascii_check.cpp (original)
+++ branches/proto/v4/tools/inspect/ascii_check.cpp 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -6,6 +6,7 @@
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
+// â -- this is a test.
#include "ascii_check.hpp"
#include <functional>
@@ -30,7 +31,8 @@
if ( c >= 'a' && c <= 'z' ) return false;
if ( c >= 'A' && c <= 'Z' ) return false;
if ( c >= '0' && c <= '9' ) return false;
- if ( c == '\t' || c == '\n' || c == '\r' || c == '\v' ) return false;
+ // Horizontal/Vertical tab, newline, and form feed
+ if ( c == '\t' || c == '\n' || c == '\r' || c == '\v' || c == '\f' ) return false;
return gPunct.find ( c ) == string::npos;
}
};
Modified: branches/proto/v4/tools/inspect/build/Jamfile.v2
==============================================================================
--- branches/proto/v4/tools/inspect/build/Jamfile.v2 (original)
+++ branches/proto/v4/tools/inspect/build/Jamfile.v2 2008-06-10 14:52:49 EDT (Tue, 10 Jun 2008)
@@ -14,7 +14,7 @@
exe inspect
:
- inspect.cpp license_check.cpp link_check.cpp long_name_check.cpp tab_check.cpp ascii_check.cpp crlf_check.cpp unnamed_namespace_check.cpp
+ inspect.cpp license_check.cpp link_check.cpp long_name_check.cpp tab_check.cpp crlf_check.cpp unnamed_namespace_check.cpp ascii_check.cpp
copyright_check.cpp minmax_check.cpp
/boost//filesystem/<link>static
/boost//regex/<link>static
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk