aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbugaevskiy <bugaevskiy@yandex-team.com>2022-09-11 17:51:40 +0300
committerbugaevskiy <bugaevskiy@yandex-team.com>2022-09-11 17:51:40 +0300
commit1547a3cfd895eb286459585b239089c4deaf4288 (patch)
tree88424d386057392bb412e451d89ee3a24b71254a
parentd8a7d202e3306ff3a4c14144abf3fae7aadad3a3 (diff)
downloadydb-1547a3cfd895eb286459585b239089c4deaf4288.tar.gz
Reimport boost/units as a separate project
-rw-r--r--contrib/restricted/boost/CMakeLists.txt2
-rw-r--r--contrib/restricted/boost/boost/fiber/algo/algorithm.hpp135
-rw-r--r--contrib/restricted/boost/boost/fiber/algo/numa/work_stealing.hpp93
-rw-r--r--contrib/restricted/boost/boost/fiber/algo/round_robin.hpp69
-rw-r--r--contrib/restricted/boost/boost/fiber/algo/shared_work.hpp86
-rw-r--r--contrib/restricted/boost/boost/fiber/algo/work_stealing.hpp88
-rw-r--r--contrib/restricted/boost/boost/fiber/all.hpp41
-rw-r--r--contrib/restricted/boost/boost/fiber/barrier.hpp48
-rw-r--r--contrib/restricted/boost/boost/fiber/buffered_channel.hpp609
-rw-r--r--contrib/restricted/boost/boost/fiber/channel_op_status.hpp34
-rw-r--r--contrib/restricted/boost/boost/fiber/condition_variable.hpp256
-rw-r--r--contrib/restricted/boost/boost/fiber/context.hpp513
-rw-r--r--contrib/restricted/boost/boost/fiber/cuda/waitfor.hpp139
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/config.hpp66
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/context_spinlock_queue.hpp118
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/context_spmc_queue.hpp197
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/convert.hpp43
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/cpu_relax.hpp82
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/data.hpp54
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/decay_copy.hpp36
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/disable_overload.hpp34
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/fss.hpp59
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/futex.hpp61
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/is_all_same.hpp44
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/rtm.hpp94
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/spinlock.hpp84
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/spinlock_rtm.hpp126
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/spinlock_status.hpp21
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/spinlock_ttas.hpp116
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive.hpp124
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp136
-rw-r--r--contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_futex.hpp127
-rw-r--r--contrib/restricted/boost/boost/fiber/exceptions.hpp148
-rw-r--r--contrib/restricted/boost/boost/fiber/fiber.hpp181
-rw-r--r--contrib/restricted/boost/boost/fiber/fixedsize_stack.hpp33
-rw-r--r--contrib/restricted/boost/boost/fiber/fss.hpp107
-rw-r--r--contrib/restricted/boost/boost/fiber/future.hpp10
-rw-r--r--contrib/restricted/boost/boost/fiber/future/async.hpp112
-rw-r--r--contrib/restricted/boost/boost/fiber/future/detail/shared_state.hpp313
-rw-r--r--contrib/restricted/boost/boost/fiber/future/detail/shared_state_object.hpp59
-rw-r--r--contrib/restricted/boost/boost/fiber/future/detail/task_base.hpp41
-rw-r--r--contrib/restricted/boost/boost/fiber/future/detail/task_object.hpp179
-rw-r--r--contrib/restricted/boost/boost/fiber/future/future.hpp474
-rw-r--r--contrib/restricted/boost/boost/fiber/future/future_status.hpp27
-rw-r--r--contrib/restricted/boost/boost/fiber/future/packaged_task.hpp142
-rw-r--r--contrib/restricted/boost/boost/fiber/future/promise.hpp222
-rw-r--r--contrib/restricted/boost/boost/fiber/hip/waitfor.hpp139
-rw-r--r--contrib/restricted/boost/boost/fiber/mutex.hpp70
-rw-r--r--contrib/restricted/boost/boost/fiber/numa/pin_thread.hpp37
-rw-r--r--contrib/restricted/boost/boost/fiber/numa/topology.hpp46
-rw-r--r--contrib/restricted/boost/boost/fiber/operations.hpp92
-rw-r--r--contrib/restricted/boost/boost/fiber/policy.hpp46
-rw-r--r--contrib/restricted/boost/boost/fiber/pooled_fixedsize_stack.hpp30
-rw-r--r--contrib/restricted/boost/boost/fiber/properties.hpp79
-rw-r--r--contrib/restricted/boost/boost/fiber/protected_fixedsize_stack.hpp30
-rw-r--r--contrib/restricted/boost/boost/fiber/recursive_mutex.hpp76
-rw-r--r--contrib/restricted/boost/boost/fiber/recursive_timed_mutex.hpp91
-rw-r--r--contrib/restricted/boost/boost/fiber/scheduler.hpp163
-rw-r--r--contrib/restricted/boost/boost/fiber/segmented_stack.hpp35
-rw-r--r--contrib/restricted/boost/boost/fiber/timed_mutex.hpp85
-rw-r--r--contrib/restricted/boost/boost/fiber/type.hpp106
-rw-r--r--contrib/restricted/boost/boost/fiber/unbuffered_channel.hpp620
-rw-r--r--contrib/restricted/boost/boost/units/absolute.hpp153
-rw-r--r--contrib/restricted/boost/boost/units/base_dimension.hpp107
-rw-r--r--contrib/restricted/boost/boost/units/base_unit.hpp128
-rw-r--r--contrib/restricted/boost/boost/units/base_units/angle/arcminute.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/base_units/angle/arcsecond.hpp37
-rw-r--r--contrib/restricted/boost/boost/units/base_units/angle/degree.hpp27
-rw-r--r--contrib/restricted/boost/boost/units/base_units/angle/gradian.hpp27
-rw-r--r--contrib/restricted/boost/boost/units/base_units/angle/radian.hpp48
-rw-r--r--contrib/restricted/boost/boost/units/base_units/angle/revolution.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/base_units/angle/steradian.hpp48
-rw-r--r--contrib/restricted/boost/boost/units/base_units/astronomical/astronomical_unit.hpp27
-rw-r--r--contrib/restricted/boost/boost/units/base_units/astronomical/light_day.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/astronomical/light_hour.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/astronomical/light_minute.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/astronomical/light_second.hpp27
-rw-r--r--contrib/restricted/boost/boost/units/base_units/astronomical/light_year.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/astronomical/parsec.hpp27
-rw-r--r--contrib/restricted/boost/boost/units/base_units/cgs/biot.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/base_units/cgs/centimeter.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/base_units/cgs/gram.hpp49
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/conversions.hpp46
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/drachm.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/fluid_ounce.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/foot.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/furlong.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/gallon.hpp40
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/gill.hpp40
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/grain.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/hundredweight.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/inch.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/league.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/mile.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/ounce.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/pint.hpp29
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/pound.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/quart.hpp40
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/quarter.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/stone.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/thou.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/ton.hpp40
-rw-r--r--contrib/restricted/boost/boost/units/base_units/imperial/yard.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/base_units/information/bit.hpp41
-rw-r--r--contrib/restricted/boost/boost/units/base_units/information/byte.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/base_units/information/hartley.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/base_units/information/nat.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/base_units/information/shannon.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/angstrom.hpp37
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/are.hpp19
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/atmosphere.hpp19
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/bar.hpp19
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/barn.hpp19
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/day.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/fermi.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/hectare.hpp19
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/hour.hpp37
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/knot.hpp19
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/liter.hpp19
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/micron.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/minute.hpp37
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/mmHg.hpp19
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/nautical_mile.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/ton.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/torr.hpp19
-rw-r--r--contrib/restricted/boost/boost/units/base_units/metric/year.hpp38
-rw-r--r--contrib/restricted/boost/boost/units/base_units/si/ampere.hpp48
-rw-r--r--contrib/restricted/boost/boost/units/base_units/si/candela.hpp48
-rw-r--r--contrib/restricted/boost/boost/units/base_units/si/kelvin.hpp48
-rw-r--r--contrib/restricted/boost/boost/units/base_units/si/kilogram.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/base_units/si/meter.hpp50
-rw-r--r--contrib/restricted/boost/boost/units/base_units/si/mole.hpp48
-rw-r--r--contrib/restricted/boost/boost/units/base_units/si/second.hpp48
-rw-r--r--contrib/restricted/boost/boost/units/base_units/temperature/celsius.hpp48
-rw-r--r--contrib/restricted/boost/boost/units/base_units/temperature/conversions.hpp42
-rw-r--r--contrib/restricted/boost/boost/units/base_units/temperature/fahrenheit.hpp48
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/cup.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/dram.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/fluid_dram.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/fluid_ounce.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/foot.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/gallon.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/gill.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/grain.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/hundredweight.hpp40
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/inch.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/mil.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/mile.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/minim.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/ounce.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/pint.hpp28
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/pound.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/pound_force.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/quart.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/tablespoon.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/teaspoon.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/ton.hpp39
-rw-r--r--contrib/restricted/boost/boost/units/base_units/us/yard.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/cmath.hpp729
-rw-r--r--contrib/restricted/boost/boost/units/config.hpp98
-rw-r--r--contrib/restricted/boost/boost/units/conversion.hpp186
-rw-r--r--contrib/restricted/boost/boost/units/derived_dimension.hpp208
-rw-r--r--contrib/restricted/boost/boost/units/detail/absolute_impl.hpp104
-rw-r--r--contrib/restricted/boost/boost/units/detail/cmath_impl.hpp154
-rw-r--r--contrib/restricted/boost/boost/units/detail/conversion_impl.hpp452
-rw-r--r--contrib/restricted/boost/boost/units/detail/dim_impl.hpp90
-rw-r--r--contrib/restricted/boost/boost/units/detail/dimension_impl.hpp347
-rw-r--r--contrib/restricted/boost/boost/units/detail/dimension_list.hpp133
-rw-r--r--contrib/restricted/boost/boost/units/detail/dimensionless_unit.hpp88
-rw-r--r--contrib/restricted/boost/boost/units/detail/heterogeneous_conversion.hpp309
-rw-r--r--contrib/restricted/boost/boost/units/detail/linear_algebra.hpp1060
-rw-r--r--contrib/restricted/boost/boost/units/detail/one.hpp117
-rw-r--r--contrib/restricted/boost/boost/units/detail/ordinal.hpp49
-rw-r--r--contrib/restricted/boost/boost/units/detail/prevent_redefinition.hpp56
-rw-r--r--contrib/restricted/boost/boost/units/detail/push_front_if.hpp48
-rw-r--r--contrib/restricted/boost/boost/units/detail/push_front_or_add.hpp84
-rw-r--r--contrib/restricted/boost/boost/units/detail/sort.hpp109
-rw-r--r--contrib/restricted/boost/boost/units/detail/static_rational_power.hpp201
-rw-r--r--contrib/restricted/boost/boost/units/detail/unscale.hpp249
-rw-r--r--contrib/restricted/boost/boost/units/detail/utility.hpp57
-rw-r--r--contrib/restricted/boost/boost/units/dim.hpp167
-rw-r--r--contrib/restricted/boost/boost/units/dimension.hpp150
-rw-r--r--contrib/restricted/boost/boost/units/dimensionless_quantity.hpp37
-rw-r--r--contrib/restricted/boost/boost/units/dimensionless_type.hpp55
-rw-r--r--contrib/restricted/boost/boost/units/dimensionless_unit.hpp37
-rw-r--r--contrib/restricted/boost/boost/units/get_dimension.hpp54
-rw-r--r--contrib/restricted/boost/boost/units/get_system.hpp51
-rw-r--r--contrib/restricted/boost/boost/units/heterogeneous_system.hpp428
-rw-r--r--contrib/restricted/boost/boost/units/homogeneous_system.hpp105
-rw-r--r--contrib/restricted/boost/boost/units/io.hpp1080
-rw-r--r--contrib/restricted/boost/boost/units/is_dim.hpp42
-rw-r--r--contrib/restricted/boost/boost/units/is_dimension_list.hpp47
-rw-r--r--contrib/restricted/boost/boost/units/is_dimensionless.hpp47
-rw-r--r--contrib/restricted/boost/boost/units/is_dimensionless_quantity.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/is_dimensionless_unit.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/is_quantity.hpp42
-rw-r--r--contrib/restricted/boost/boost/units/is_quantity_of_dimension.hpp42
-rw-r--r--contrib/restricted/boost/boost/units/is_quantity_of_system.hpp42
-rw-r--r--contrib/restricted/boost/boost/units/is_unit.hpp41
-rw-r--r--contrib/restricted/boost/boost/units/is_unit_of_dimension.hpp46
-rw-r--r--contrib/restricted/boost/boost/units/is_unit_of_system.hpp46
-rw-r--r--contrib/restricted/boost/boost/units/lambda.hpp593
-rw-r--r--contrib/restricted/boost/boost/units/limits.hpp76
-rw-r--r--contrib/restricted/boost/boost/units/make_scaled_unit.hpp60
-rw-r--r--contrib/restricted/boost/boost/units/make_system.hpp145
-rw-r--r--contrib/restricted/boost/boost/units/operators.hpp164
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions.hpp90
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/absorbed_dose.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/acceleration.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/action.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/activity.hpp28
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/amount.hpp49
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/angular_acceleration.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/angular_momentum.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/angular_velocity.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/area.hpp28
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/capacitance.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/conductance.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/conductivity.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/current.hpp49
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/dose_equivalent.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/dynamic_viscosity.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/electric_charge.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/electric_potential.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/energy.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/energy_density.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/force.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/frequency.hpp28
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/heat_capacity.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/illuminance.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/impedance.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/inductance.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/information.hpp44
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/kinematic_viscosity.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/length.hpp49
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/luminance.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/luminous_flux.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/luminous_intensity.hpp49
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/magnetic_field_intensity.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux_density.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/mass.hpp49
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/mass_density.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/molar_energy.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/molar_heat_capacity.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/moment_of_inertia.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/momentum.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/permeability.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/permittivity.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/plane_angle.hpp49
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/power.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/pressure.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/reluctance.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/resistance.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/resistivity.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/solid_angle.hpp49
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/specific_energy.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/specific_heat_capacity.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/specific_volume.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/stress.hpp32
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/surface_density.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/surface_tension.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/temperature.hpp49
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/thermal_conductivity.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/time.hpp49
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/torque.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/velocity.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/volume.hpp28
-rw-r--r--contrib/restricted/boost/boost/units/physical_dimensions/wavenumber.hpp28
-rw-r--r--contrib/restricted/boost/boost/units/pow.hpp115
-rw-r--r--contrib/restricted/boost/boost/units/quantity.hpp1280
-rw-r--r--contrib/restricted/boost/boost/units/reduce_unit.hpp41
-rw-r--r--contrib/restricted/boost/boost/units/scale.hpp145
-rw-r--r--contrib/restricted/boost/boost/units/scaled_base_unit.hpp144
-rw-r--r--contrib/restricted/boost/boost/units/static_constant.hpp62
-rw-r--r--contrib/restricted/boost/boost/units/static_rational.hpp349
-rw-r--r--contrib/restricted/boost/boost/units/systems/abstract.hpp139
-rw-r--r--contrib/restricted/boost/boost/units/systems/angle/degrees.hpp42
-rw-r--r--contrib/restricted/boost/boost/units/systems/angle/gradians.hpp42
-rw-r--r--contrib/restricted/boost/boost/units/systems/angle/revolutions.hpp42
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs.hpp44
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/acceleration.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/area.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/base.hpp46
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/current.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/dimensionless.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/dynamic_viscosity.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/energy.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/force.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/frequency.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/io.hpp50
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/kinematic_viscosity.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/length.hpp35
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/mass.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/mass_density.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/momentum.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/power.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/pressure.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/time.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/velocity.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/volume.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/systems/cgs/wavenumber.hpp38
-rw-r--r--contrib/restricted/boost/boost/units/systems/detail/constants.hpp278
-rw-r--r--contrib/restricted/boost/boost/units/systems/information.hpp20
-rw-r--r--contrib/restricted/boost/boost/units/systems/information/bit.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/information/byte.hpp45
-rw-r--r--contrib/restricted/boost/boost/units/systems/information/hartley.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/information/nat.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/information/prefixes.hpp45
-rw-r--r--contrib/restricted/boost/boost/units/systems/information/shannon.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/si.hpp77
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/absorbed_dose.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/acceleration.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/action.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/activity.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/amount.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/angular_acceleration.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/angular_momentum.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/angular_velocity.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/area.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/base.hpp56
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/capacitance.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/catalytic_activity.hpp37
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/alpha_constants.hpp66
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/atomic-nuclear_constants.hpp56
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/deuteron_constants.hpp82
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/electromagnetic_constants.hpp75
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/electron_constants.hpp106
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/helion_constants.hpp78
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/muon_constants.hpp84
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/neutron_constants.hpp84
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/physico-chemical_constants.hpp79
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/proton_constants.hpp98
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/tau_constants.hpp72
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/triton_constants.hpp80
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/typedefs.hpp79
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata/universal_constants.hpp81
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/codata_constants.hpp19
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/conductance.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/conductivity.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/current.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/dimensionless.hpp30
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/dose_equivalent.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/dynamic_viscosity.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/electric_charge.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/electric_potential.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/energy.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/force.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/frequency.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/illuminance.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/impedance.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/inductance.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/io.hpp88
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/kinematic_viscosity.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/length.hpp35
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/luminous_flux.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/luminous_intensity.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/magnetic_field_intensity.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/magnetic_flux.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/magnetic_flux_density.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/mass.hpp35
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/mass_density.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/moment_of_inertia.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/momentum.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/permeability.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/permittivity.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/plane_angle.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/power.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/prefixes.hpp77
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/pressure.hpp49
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/reluctance.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/resistance.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/resistivity.hpp31
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/solid_angle.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/surface_density.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/surface_tension.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/temperature.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/time.hpp33
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/torque.hpp34
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/velocity.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/volume.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/systems/si/wavenumber.hpp36
-rw-r--r--contrib/restricted/boost/boost/units/systems/temperature/celsius.hpp40
-rw-r--r--contrib/restricted/boost/boost/units/systems/temperature/fahrenheit.hpp40
-rw-r--r--contrib/restricted/boost/boost/units/unit.hpp448
-rw-r--r--contrib/restricted/boost/boost/units/units_fwd.hpp73
-rw-r--r--contrib/restricted/boost/units/CMakeLists.txt30
-rw-r--r--contrib/restricted/boost/units/README.md38
388 files changed, 70 insertions, 29635 deletions
diff --git a/contrib/restricted/boost/CMakeLists.txt b/contrib/restricted/boost/CMakeLists.txt
index fa88ab7fb7..b839b1cb64 100644
--- a/contrib/restricted/boost/CMakeLists.txt
+++ b/contrib/restricted/boost/CMakeLists.txt
@@ -83,6 +83,7 @@ add_subdirectory(type_index)
add_subdirectory(type_traits)
add_subdirectory(typeof)
add_subdirectory(ublas)
+add_subdirectory(units)
add_subdirectory(unordered)
add_subdirectory(utility)
add_subdirectory(variant)
@@ -151,6 +152,7 @@ target_link_libraries(contrib-restricted-boost INTERFACE
restricted-boost-type_traits
restricted-boost-typeof
restricted-boost-ublas
+ restricted-boost-units
restricted-boost-unordered
restricted-boost-utility
restricted-boost-variant
diff --git a/contrib/restricted/boost/boost/fiber/algo/algorithm.hpp b/contrib/restricted/boost/boost/fiber/algo/algorithm.hpp
deleted file mode 100644
index b22a5923d6..0000000000
--- a/contrib/restricted/boost/boost/fiber/algo/algorithm.hpp
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_ALGO_ALGORITHM_H
-#define BOOST_FIBERS_ALGO_ALGORITHM_H
-
-#include <atomic>
-#include <chrono>
-#include <cstddef>
-
-#include <boost/assert.hpp>
-#include <boost/config.hpp>
-#include <boost/intrusive_ptr.hpp>
-
-#include <boost/fiber/properties.hpp>
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-class context;
-
-namespace algo {
-
-class BOOST_FIBERS_DECL algorithm {
-private:
- std::atomic< std::size_t > use_count_{ 0 };
-
-public:
- typedef intrusive_ptr< algorithm > ptr_t;
-
- virtual ~algorithm() {}
-
- virtual void awakened( context *) noexcept = 0;
-
- virtual context * pick_next() noexcept = 0;
-
- virtual bool has_ready_fibers() const noexcept = 0;
-
- virtual void suspend_until( std::chrono::steady_clock::time_point const&) noexcept = 0;
-
- virtual void notify() noexcept = 0;
-
- friend void intrusive_ptr_add_ref( algorithm * algo) noexcept {
- BOOST_ASSERT( nullptr != algo);
- algo->use_count_.fetch_add( 1, std::memory_order_relaxed);
- }
-
- friend void intrusive_ptr_release( algorithm * algo) noexcept {
- BOOST_ASSERT( nullptr != algo);
- if ( 1 == algo->use_count_.fetch_sub( 1, std::memory_order_release) ) {
- std::atomic_thread_fence( std::memory_order_acquire);
- delete algo;
- }
- }
-};
-
-class BOOST_FIBERS_DECL algorithm_with_properties_base : public algorithm {
-public:
- // called by fiber_properties::notify() -- don't directly call
- virtual void property_change_( context * ctx, fiber_properties * props) noexcept = 0;
-
-protected:
- static fiber_properties* get_properties( context * ctx) noexcept;
- static void set_properties( context * ctx, fiber_properties * p) noexcept;
-};
-
-template< typename PROPS >
-struct algorithm_with_properties : public algorithm_with_properties_base {
- typedef algorithm_with_properties_base super;
-
- // Mark this override 'final': algorithm_with_properties subclasses
- // must override awakened() with properties parameter instead. Otherwise
- // you'd have to remember to start every subclass awakened() override
- // with: algorithm_with_properties<PROPS>::awakened(fb);
- virtual void awakened( context * ctx) noexcept override final {
- fiber_properties * props = super::get_properties( ctx);
- if ( BOOST_LIKELY( nullptr == props) ) {
- // TODO: would be great if PROPS could be allocated on the new
- // fiber's stack somehow
- props = new_properties( ctx);
- // It is not good for new_properties() to return 0.
- BOOST_ASSERT_MSG( props, "new_properties() must return non-NULL");
- // new_properties() must return instance of (a subclass of) PROPS
- BOOST_ASSERT_MSG( dynamic_cast< PROPS * >( props),
- "new_properties() must return properties class");
- super::set_properties( ctx, props);
- }
- // Set algo_ again every time this fiber becomes READY. That
- // handles the case of a fiber migrating to a new thread with a new
- // algorithm subclass instance.
- props->set_algorithm( this);
-
- // Okay, now forward the call to subclass override.
- awakened( ctx, properties( ctx) );
- }
-
- // subclasses override this method instead of the original awakened()
- virtual void awakened( context *, PROPS &) noexcept = 0;
-
- // used for all internal calls
- PROPS & properties( context * ctx) noexcept {
- return static_cast< PROPS & >( * super::get_properties( ctx) );
- }
-
- // override this to be notified by PROPS::notify()
- virtual void property_change( context * ctx, PROPS & props) noexcept {
- }
-
- // implementation for algorithm_with_properties_base method
- void property_change_( context * ctx, fiber_properties * props) noexcept override final {
- property_change( ctx, * static_cast< PROPS * >( props) );
- }
-
- // Override this to customize instantiation of PROPS, e.g. use a different
- // allocator. Each PROPS instance is associated with a particular
- // context.
- virtual fiber_properties * new_properties( context * ctx) {
- return new PROPS( ctx);
- }
-};
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_ALGO_ALGORITHM_H
diff --git a/contrib/restricted/boost/boost/fiber/algo/numa/work_stealing.hpp b/contrib/restricted/boost/boost/fiber/algo/numa/work_stealing.hpp
deleted file mode 100644
index 26032ab35e..0000000000
--- a/contrib/restricted/boost/boost/fiber/algo/numa/work_stealing.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-
-// Copyright Oliver Kowalke 2017.
-// 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)
-//
-
-#ifndef BOOST_FIBERS_ALGO_NUMA_WORK_STEALING_H
-#define BOOST_FIBERS_ALGO_NUMA_WORK_STEALING_H
-
-#include <condition_variable>
-#include <chrono>
-#include <cstddef>
-#include <cstdint>
-#include <mutex>
-#include <vector>
-
-#include <boost/config.hpp>
-#include <boost/intrusive_ptr.hpp>
-
-#include <boost/fiber/algo/algorithm.hpp>
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/context_spinlock_queue.hpp>
-#include <boost/fiber/detail/context_spmc_queue.hpp>
-#include <boost/fiber/numa/pin_thread.hpp>
-#include <boost/fiber/numa/topology.hpp>
-#include <boost/fiber/scheduler.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace algo {
-namespace numa {
-
-class work_stealing : public algorithm {
-private:
- static std::vector< intrusive_ptr< work_stealing > > schedulers_;
-
- std::uint32_t cpu_id_;
- std::vector< std::uint32_t > local_cpus_;
- std::vector< std::uint32_t > remote_cpus_;
-#ifdef BOOST_FIBERS_USE_SPMC_QUEUE
- detail::context_spmc_queue rqueue_{};
-#else
- detail::context_spinlock_queue rqueue_{};
-#endif
- std::mutex mtx_{};
- std::condition_variable cnd_{};
- bool flag_{ false };
- bool suspend_;
-
- static void init_( std::vector< boost::fibers::numa::node > const&,
- std::vector< intrusive_ptr< work_stealing > > &);
-
-public:
- work_stealing( std::uint32_t, std::uint32_t,
- std::vector< boost::fibers::numa::node > const&,
- bool = false);
-
- work_stealing( work_stealing const&) = delete;
- work_stealing( work_stealing &&) = delete;
-
- work_stealing & operator=( work_stealing const&) = delete;
- work_stealing & operator=( work_stealing &&) = delete;
-
- virtual void awakened( context *) noexcept;
-
- virtual context * pick_next() noexcept;
-
- virtual context * steal() noexcept {
- return rqueue_.steal();
- }
-
- virtual bool has_ready_fibers() const noexcept {
- return ! rqueue_.empty();
- }
-
- virtual void suspend_until( std::chrono::steady_clock::time_point const&) noexcept;
-
- virtual void notify() noexcept;
-};
-
-}}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_ALGO_NUMA_WORK_STEALING_H
diff --git a/contrib/restricted/boost/boost/fiber/algo/round_robin.hpp b/contrib/restricted/boost/boost/fiber/algo/round_robin.hpp
deleted file mode 100644
index e384982567..0000000000
--- a/contrib/restricted/boost/boost/fiber/algo/round_robin.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_ALGO_ROUND_ROBIN_H
-#define BOOST_FIBERS_ALGO_ROUND_ROBIN_H
-
-#include <condition_variable>
-#include <chrono>
-#include <mutex>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/algo/algorithm.hpp>
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/scheduler.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4251)
-#endif
-
-namespace boost {
-namespace fibers {
-namespace algo {
-
-class BOOST_FIBERS_DECL round_robin : public algorithm {
-private:
- typedef scheduler::ready_queue_type rqueue_type;
-
- rqueue_type rqueue_{};
- std::mutex mtx_{};
- std::condition_variable cnd_{};
- bool flag_{ false };
-
-public:
- round_robin() = default;
-
- round_robin( round_robin const&) = delete;
- round_robin & operator=( round_robin const&) = delete;
-
- virtual void awakened( context *) noexcept;
-
- virtual context * pick_next() noexcept;
-
- virtual bool has_ready_fibers() const noexcept;
-
- virtual void suspend_until( std::chrono::steady_clock::time_point const&) noexcept;
-
- virtual void notify() noexcept;
-};
-
-}}}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_ALGO_ROUND_ROBIN_H
diff --git a/contrib/restricted/boost/boost/fiber/algo/shared_work.hpp b/contrib/restricted/boost/boost/fiber/algo/shared_work.hpp
deleted file mode 100644
index 23bc926e55..0000000000
--- a/contrib/restricted/boost/boost/fiber/algo/shared_work.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-
-// Copyright Nat Goodspeed + Oliver Kowalke 2015.
-// 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)
-
-#ifndef BOOST_FIBERS_ALGO_SHARED_WORK_H
-#define BOOST_FIBERS_ALGO_SHARED_WORK_H
-
-#include <condition_variable>
-#include <chrono>
-#include <deque>
-#include <mutex>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/algo/algorithm.hpp>
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/scheduler.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4251)
-#endif
-
-namespace boost {
-namespace fibers {
-namespace algo {
-
-class BOOST_FIBERS_DECL shared_work : public algorithm {
-private:
- typedef std::deque< context * > rqueue_type;
- typedef scheduler::ready_queue_type lqueue_type;
-
- static rqueue_type rqueue_;
- static std::mutex rqueue_mtx_;
-
- lqueue_type lqueue_{};
- std::mutex mtx_{};
- std::condition_variable cnd_{};
- bool flag_{ false };
- bool suspend_{ false };
-
-public:
- shared_work() = default;
-
- shared_work( bool suspend) :
- suspend_{ suspend } {
- }
-
- shared_work( shared_work const&) = delete;
- shared_work( shared_work &&) = delete;
-
- shared_work & operator=( shared_work const&) = delete;
- shared_work & operator=( shared_work &&) = delete;
-
- void awakened( context * ctx) noexcept;
-
- context * pick_next() noexcept;
-
- bool has_ready_fibers() const noexcept {
- std::unique_lock< std::mutex > lock{ rqueue_mtx_ };
- return ! rqueue_.empty() || ! lqueue_.empty();
- }
-
- void suspend_until( std::chrono::steady_clock::time_point const& time_point) noexcept;
-
- void notify() noexcept;
-};
-
-}}}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_ALGO_SHARED_WORK_H
diff --git a/contrib/restricted/boost/boost/fiber/algo/work_stealing.hpp b/contrib/restricted/boost/boost/fiber/algo/work_stealing.hpp
deleted file mode 100644
index 9771b6cb10..0000000000
--- a/contrib/restricted/boost/boost/fiber/algo/work_stealing.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-
-// Copyright Oliver Kowalke 2015.
-// 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)
-//
-
-#ifndef BOOST_FIBERS_ALGO_WORK_STEALING_H
-#define BOOST_FIBERS_ALGO_WORK_STEALING_H
-
-#include <atomic>
-#include <condition_variable>
-#include <chrono>
-#include <cstddef>
-#include <cstdint>
-#include <mutex>
-#include <vector>
-
-#include <boost/config.hpp>
-#include <boost/intrusive_ptr.hpp>
-
-#include <boost/fiber/algo/algorithm.hpp>
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/context_spinlock_queue.hpp>
-#include <boost/fiber/detail/context_spmc_queue.hpp>
-#include <boost/fiber/scheduler.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace algo {
-
-class BOOST_FIBERS_DECL work_stealing : public algorithm {
-private:
- static std::atomic< std::uint32_t > counter_;
- static std::vector< intrusive_ptr< work_stealing > > schedulers_;
-
- std::uint32_t id_;
- std::uint32_t thread_count_;
-#ifdef BOOST_FIBERS_USE_SPMC_QUEUE
- detail::context_spmc_queue rqueue_{};
-#else
- detail::context_spinlock_queue rqueue_{};
-#endif
- std::mutex mtx_{};
- std::condition_variable cnd_{};
- bool flag_{ false };
- bool suspend_;
-
- static void init_( std::uint32_t, std::vector< intrusive_ptr< work_stealing > > &);
-
-public:
- work_stealing( std::uint32_t, bool = false);
-
- work_stealing( work_stealing const&) = delete;
- work_stealing( work_stealing &&) = delete;
-
- work_stealing & operator=( work_stealing const&) = delete;
- work_stealing & operator=( work_stealing &&) = delete;
-
- virtual void awakened( context *) noexcept;
-
- virtual context * pick_next() noexcept;
-
- virtual context * steal() noexcept {
- return rqueue_.steal();
- }
-
- virtual bool has_ready_fibers() const noexcept {
- return ! rqueue_.empty();
- }
-
- virtual void suspend_until( std::chrono::steady_clock::time_point const&) noexcept;
-
- virtual void notify() noexcept;
-};
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_ALGO_WORK_STEALING_H
diff --git a/contrib/restricted/boost/boost/fiber/all.hpp b/contrib/restricted/boost/boost/fiber/all.hpp
deleted file mode 100644
index 17ceca45cc..0000000000
--- a/contrib/restricted/boost/boost/fiber/all.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_H
-#define BOOST_FIBERS_H
-
-#include <boost/fiber/algo/algorithm.hpp>
-#include <boost/fiber/algo/round_robin.hpp>
-#include <boost/fiber/algo/shared_work.hpp>
-#include <boost/fiber/algo/work_stealing.hpp>
-#include <boost/fiber/algo/numa/work_stealing.hpp>
-#include <boost/fiber/barrier.hpp>
-#include <boost/fiber/buffered_channel.hpp>
-#include <boost/fiber/channel_op_status.hpp>
-#include <boost/fiber/condition_variable.hpp>
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/exceptions.hpp>
-#include <boost/fiber/fiber.hpp>
-#include <boost/fiber/fixedsize_stack.hpp>
-#include <boost/fiber/fss.hpp>
-#include <boost/fiber/future.hpp>
-#include <boost/fiber/numa/pin_thread.hpp>
-#include <boost/fiber/numa/topology.hpp>
-#include <boost/fiber/mutex.hpp>
-#include <boost/fiber/operations.hpp>
-#include <boost/fiber/policy.hpp>
-#include <boost/fiber/pooled_fixedsize_stack.hpp>
-#include <boost/fiber/properties.hpp>
-#include <boost/fiber/protected_fixedsize_stack.hpp>
-#include <boost/fiber/recursive_mutex.hpp>
-#include <boost/fiber/recursive_timed_mutex.hpp>
-#include <boost/fiber/scheduler.hpp>
-#include <boost/fiber/segmented_stack.hpp>
-#include <boost/fiber/timed_mutex.hpp>
-#include <boost/fiber/type.hpp>
-#include <boost/fiber/unbuffered_channel.hpp>
-
-#endif // BOOST_FIBERS_H
diff --git a/contrib/restricted/boost/boost/fiber/barrier.hpp b/contrib/restricted/boost/boost/fiber/barrier.hpp
deleted file mode 100644
index 31a2cd617d..0000000000
--- a/contrib/restricted/boost/boost/fiber/barrier.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_BARRIER_H
-#define BOOST_FIBERS_BARRIER_H
-
-#include <cstddef>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/condition_variable.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/mutex.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-class BOOST_FIBERS_DECL barrier {
-private:
- std::size_t initial_;
- std::size_t current_;
- std::size_t cycle_{ 0 };
- mutex mtx_{};
- condition_variable cond_{};
-
-public:
- explicit barrier( std::size_t);
-
- barrier( barrier const&) = delete;
- barrier & operator=( barrier const&) = delete;
-
- bool wait();
-};
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_BARRIER_H
diff --git a/contrib/restricted/boost/boost/fiber/buffered_channel.hpp b/contrib/restricted/boost/boost/fiber/buffered_channel.hpp
deleted file mode 100644
index 592a6340d5..0000000000
--- a/contrib/restricted/boost/boost/fiber/buffered_channel.hpp
+++ /dev/null
@@ -1,609 +0,0 @@
-
-// Copyright Oliver Kowalke 2016.
-// 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)
-//
-
-#ifndef BOOST_FIBERS_BUFFERED_CHANNEL_H
-#define BOOST_FIBERS_BUFFERED_CHANNEL_H
-
-#include <atomic>
-#include <chrono>
-#include <cstddef>
-#include <cstdint>
-#include <memory>
-#include <type_traits>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/channel_op_status.hpp>
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/convert.hpp>
-#include <boost/fiber/detail/spinlock.hpp>
-#include <boost/fiber/exceptions.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-template< typename T >
-class buffered_channel {
-public:
- typedef typename std::remove_reference< T >::type value_type;
-
-private:
- typedef context::wait_queue_t wait_queue_type;
- typedef value_type slot_type;
-
- mutable detail::spinlock splk_{};
- wait_queue_type waiting_producers_{};
- wait_queue_type waiting_consumers_{};
- slot_type * slots_;
- std::size_t pidx_{ 0 };
- std::size_t cidx_{ 0 };
- std::size_t capacity_;
- bool closed_{ false };
-
- bool is_full_() const noexcept {
- return cidx_ == ((pidx_ + 1) % capacity_);
- }
-
- bool is_empty_() const noexcept {
- return cidx_ == pidx_;
- }
-
- bool is_closed_() const noexcept {
- return closed_;
- }
-
-public:
- explicit buffered_channel( std::size_t capacity) :
- capacity_{ capacity } {
- if ( BOOST_UNLIKELY( 2 > capacity_ || 0 != ( capacity_ & (capacity_ - 1) ) ) ) {
- throw fiber_error{ std::make_error_code( std::errc::invalid_argument),
- "boost fiber: buffer capacity is invalid" };
- }
- slots_ = new slot_type[capacity_];
- }
-
- ~buffered_channel() {
- close();
- delete [] slots_;
- }
-
- buffered_channel( buffered_channel const&) = delete;
- buffered_channel & operator=( buffered_channel const&) = delete;
-
- bool is_closed() const noexcept {
- detail::spinlock_lock lk{ splk_ };
- return is_closed_();
- }
-
- void close() noexcept {
- context * active_ctx = context::active();
- detail::spinlock_lock lk{ splk_ };
- closed_ = true;
- // notify all waiting producers
- while ( ! waiting_producers_.empty() ) {
- context * producer_ctx = & waiting_producers_.front();
- waiting_producers_.pop_front();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( producer_ctx);
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( producer_ctx);
- }
- }
- // notify all waiting consumers
- while ( ! waiting_consumers_.empty() ) {
- context * consumer_ctx = & waiting_consumers_.front();
- waiting_consumers_.pop_front();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( consumer_ctx);
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( consumer_ctx);
- }
- }
- }
-
- channel_op_status try_push( value_type const& value) {
- context * active_ctx = context::active();
- detail::spinlock_lock lk{ splk_ };
- if ( BOOST_UNLIKELY( is_closed_() ) ) {
- return channel_op_status::closed;
- } else if ( is_full_() ) {
- return channel_op_status::full;
- } else {
- slots_[pidx_] = value;
- pidx_ = (pidx_ + 1) % capacity_;
- // notify one waiting consumer
- while ( ! waiting_consumers_.empty() ) {
- context * consumer_ctx = & waiting_consumers_.front();
- waiting_consumers_.pop_front();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- }
- }
- return channel_op_status::success;
- }
- }
-
- channel_op_status try_push( value_type && value) {
- context * active_ctx = context::active();
- detail::spinlock_lock lk{ splk_ };
- if ( BOOST_UNLIKELY( is_closed_() ) ) {
- return channel_op_status::closed;
- } else if ( is_full_() ) {
- return channel_op_status::full;
- } else {
- slots_[pidx_] = std::move( value);
- pidx_ = (pidx_ + 1) % capacity_;
- // notify one waiting consumer
- while ( ! waiting_consumers_.empty() ) {
- context * consumer_ctx = & waiting_consumers_.front();
- waiting_consumers_.pop_front();
- lk.unlock();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- }
- }
- return channel_op_status::success;
- }
- }
-
- channel_op_status push( value_type const& value) {
- context * active_ctx = context::active();
- for (;;) {
- detail::spinlock_lock lk{ splk_ };
- if ( BOOST_UNLIKELY( is_closed_() ) ) {
- return channel_op_status::closed;
- } else if ( is_full_() ) {
- active_ctx->wait_link( waiting_producers_);
- active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release);
- // suspend this producer
- active_ctx->suspend( lk);
- } else {
- slots_[pidx_] = value;
- pidx_ = (pidx_ + 1) % capacity_;
- // notify one waiting consumer
- while ( ! waiting_consumers_.empty() ) {
- context * consumer_ctx = & waiting_consumers_.front();
- waiting_consumers_.pop_front();
- lk.unlock();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- }
- }
- return channel_op_status::success;
- }
- }
- }
-
- channel_op_status push( value_type && value) {
- context * active_ctx = context::active();
- for (;;) {
- detail::spinlock_lock lk{ splk_ };
- if ( BOOST_UNLIKELY( is_closed_() ) ) {
- return channel_op_status::closed;
- } else if ( is_full_() ) {
- active_ctx->wait_link( waiting_producers_);
- active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release);
- // suspend this producer
- active_ctx->suspend( lk);
- } else {
- slots_[pidx_] = std::move( value);
- pidx_ = (pidx_ + 1) % capacity_;
- // notify one waiting consumer
- while ( ! waiting_consumers_.empty() ) {
- context * consumer_ctx = & waiting_consumers_.front();
- waiting_consumers_.pop_front();
- lk.unlock();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- }
- }
- return channel_op_status::success;
- }
- }
- }
-
- template< typename Rep, typename Period >
- channel_op_status push_wait_for( value_type const& value,
- std::chrono::duration< Rep, Period > const& timeout_duration) {
- return push_wait_until( value,
- std::chrono::steady_clock::now() + timeout_duration);
- }
-
- template< typename Rep, typename Period >
- channel_op_status push_wait_for( value_type && value,
- std::chrono::duration< Rep, Period > const& timeout_duration) {
- return push_wait_until( std::forward< value_type >( value),
- std::chrono::steady_clock::now() + timeout_duration);
- }
-
- template< typename Clock, typename Duration >
- channel_op_status push_wait_until( value_type const& value,
- std::chrono::time_point< Clock, Duration > const& timeout_time_) {
- context * active_ctx = context::active();
- std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_);
- for (;;) {
- detail::spinlock_lock lk{ splk_ };
- if ( BOOST_UNLIKELY( is_closed_() ) ) {
- return channel_op_status::closed;
- } else if ( is_full_() ) {
- active_ctx->wait_link( waiting_producers_);
- active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release);
- // suspend this producer
- if ( ! active_ctx->wait_until( timeout_time, lk) ) {
- // relock local lk
- lk.lock();
- // remove from waiting-queue
- waiting_producers_.remove( * active_ctx);
- return channel_op_status::timeout;
- }
- } else {
- slots_[pidx_] = value;
- pidx_ = (pidx_ + 1) % capacity_;
- // notify one waiting consumer
- while ( ! waiting_consumers_.empty() ) {
- context * consumer_ctx = & waiting_consumers_.front();
- waiting_consumers_.pop_front();
- lk.unlock();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- }
- }
- return channel_op_status::success;
- }
- }
- }
-
- template< typename Clock, typename Duration >
- channel_op_status push_wait_until( value_type && value,
- std::chrono::time_point< Clock, Duration > const& timeout_time_) {
- context * active_ctx = context::active();
- std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_);
- for (;;) {
- detail::spinlock_lock lk{ splk_ };
- if ( BOOST_UNLIKELY( is_closed_() ) ) {
- return channel_op_status::closed;
- } else if ( is_full_() ) {
- active_ctx->wait_link( waiting_producers_);
- active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release);
- // suspend this producer
- if ( ! active_ctx->wait_until( timeout_time, lk) ) {
- // relock local lk
- lk.lock();
- // remove from waiting-queue
- waiting_producers_.remove( * active_ctx);
- return channel_op_status::timeout;
- }
- } else {
- slots_[pidx_] = std::move( value);
- pidx_ = (pidx_ + 1) % capacity_;
- // notify one waiting consumer
- while ( ! waiting_consumers_.empty() ) {
- context * consumer_ctx = & waiting_consumers_.front();
- waiting_consumers_.pop_front();
- lk.unlock();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- }
- }
- return channel_op_status::success;
- }
- }
- }
-
- channel_op_status try_pop( value_type & value) {
- context * active_ctx = context::active();
- detail::spinlock_lock lk{ splk_ };
- if ( is_empty_() ) {
- return is_closed_()
- ? channel_op_status::closed
- : channel_op_status::empty;
- } else {
- value = std::move( slots_[cidx_]);
- cidx_ = (cidx_ + 1) % capacity_;
- // notify one waiting producer
- while ( ! waiting_producers_.empty() ) {
- context * producer_ctx = & waiting_producers_.front();
- waiting_producers_.pop_front();
- lk.unlock();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- }
- }
- return channel_op_status::success;
- }
- }
-
- channel_op_status pop( value_type & value) {
- context * active_ctx = context::active();
- for (;;) {
- detail::spinlock_lock lk{ splk_ };
- if ( is_empty_() ) {
- if ( BOOST_UNLIKELY( is_closed_() ) ) {
- return channel_op_status::closed;
- } else {
- active_ctx->wait_link( waiting_consumers_);
- active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release);
- // suspend this consumer
- active_ctx->suspend( lk);
- }
- } else {
- value = std::move( slots_[cidx_]);
- cidx_ = (cidx_ + 1) % capacity_;
- // notify one waiting producer
- while ( ! waiting_producers_.empty() ) {
- context * producer_ctx = & waiting_producers_.front();
- waiting_producers_.pop_front();
- lk.unlock();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- }
- }
- return channel_op_status::success;
- }
- }
- }
-
- value_type value_pop() {
- context * active_ctx = context::active();
- for (;;) {
- detail::spinlock_lock lk{ splk_ };
- if ( is_empty_() ) {
- if ( BOOST_UNLIKELY( is_closed_() ) ) {
- throw fiber_error{
- std::make_error_code( std::errc::operation_not_permitted),
- "boost fiber: channel is closed" };
- } else {
- active_ctx->wait_link( waiting_consumers_);
- active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release);
- // suspend this consumer
- active_ctx->suspend( lk);
- }
- } else {
- value_type value = std::move( slots_[cidx_]);
- cidx_ = (cidx_ + 1) % capacity_;
- // notify one waiting producer
- while ( ! waiting_producers_.empty() ) {
- context * producer_ctx = & waiting_producers_.front();
- waiting_producers_.pop_front();
- lk.unlock();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- }
- }
- return std::move( value);
- }
- }
- }
-
- template< typename Rep, typename Period >
- channel_op_status pop_wait_for( value_type & value,
- std::chrono::duration< Rep, Period > const& timeout_duration) {
- return pop_wait_until( value,
- std::chrono::steady_clock::now() + timeout_duration);
- }
-
- template< typename Clock, typename Duration >
- channel_op_status pop_wait_until( value_type & value,
- std::chrono::time_point< Clock, Duration > const& timeout_time_) {
- context * active_ctx = context::active();
- std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_);
- for (;;) {
- detail::spinlock_lock lk{ splk_ };
- if ( is_empty_() ) {
- if ( BOOST_UNLIKELY( is_closed_() ) ) {
- return channel_op_status::closed;
- } else {
- active_ctx->wait_link( waiting_consumers_);
- active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release);
- // suspend this consumer
- if ( ! active_ctx->wait_until( timeout_time, lk) ) {
- // relock local lk
- lk.lock();
- // remove from waiting-queue
- waiting_consumers_.remove( * active_ctx);
- return channel_op_status::timeout;
- }
- }
- } else {
- value = std::move( slots_[cidx_]);
- cidx_ = (cidx_ + 1) % capacity_;
- // notify one waiting producer
- while ( ! waiting_producers_.empty() ) {
- context * producer_ctx = & waiting_producers_.front();
- waiting_producers_.pop_front();
- lk.unlock();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- }
- }
- return channel_op_status::success;
- }
- }
- }
-
- class iterator {
- private:
- typedef typename std::aligned_storage< sizeof( value_type), alignof( value_type) >::type storage_type;
-
- buffered_channel * chan_{ nullptr };
- storage_type storage_;
-
- void increment_() {
- BOOST_ASSERT( nullptr != chan_);
- try {
- ::new ( static_cast< void * >( std::addressof( storage_) ) ) value_type{ chan_->value_pop() };
- } catch ( fiber_error const&) {
- chan_ = nullptr;
- }
- }
-
- public:
- typedef std::input_iterator_tag iterator_category;
- typedef std::ptrdiff_t difference_type;
- typedef value_type * pointer;
- typedef value_type & reference;
-
- typedef pointer pointer_t;
- typedef reference reference_t;
-
- iterator() noexcept = default;
-
- explicit iterator( buffered_channel< T > * chan) noexcept :
- chan_{ chan } {
- increment_();
- }
-
- iterator( iterator const& other) noexcept :
- chan_{ other.chan_ } {
- }
-
- iterator & operator=( iterator const& other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- chan_ = other.chan_;
- }
- return * this;
- }
-
- bool operator==( iterator const& other) const noexcept {
- return other.chan_ == chan_;
- }
-
- bool operator!=( iterator const& other) const noexcept {
- return other.chan_ != chan_;
- }
-
- iterator & operator++() {
- increment_();
- return * this;
- }
-
- iterator operator++( int) = delete;
-
- reference_t operator*() noexcept {
- return * reinterpret_cast< value_type * >( std::addressof( storage_) );
- }
-
- pointer_t operator->() noexcept {
- return reinterpret_cast< value_type * >( std::addressof( storage_) );
- }
- };
-
- friend class iterator;
-};
-
-template< typename T >
-typename buffered_channel< T >::iterator
-begin( buffered_channel< T > & chan) {
- return typename buffered_channel< T >::iterator( & chan);
-}
-
-template< typename T >
-typename buffered_channel< T >::iterator
-end( buffered_channel< T > &) {
- return typename buffered_channel< T >::iterator();
-}
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_BUFFERED_CHANNEL_H
diff --git a/contrib/restricted/boost/boost/fiber/channel_op_status.hpp b/contrib/restricted/boost/boost/fiber/channel_op_status.hpp
deleted file mode 100644
index 785253ac43..0000000000
--- a/contrib/restricted/boost/boost/fiber/channel_op_status.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_CHANNEL_OP_STATUS_H
-#define BOOST_FIBERS_CHANNEL_OP_STATUS_H
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-enum class channel_op_status {
- success = 0,
- empty,
- full,
- closed,
- timeout
-};
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_CHANNEL_OP_STATUS_H
diff --git a/contrib/restricted/boost/boost/fiber/condition_variable.hpp b/contrib/restricted/boost/boost/fiber/condition_variable.hpp
deleted file mode 100644
index 53d6252fb1..0000000000
--- a/contrib/restricted/boost/boost/fiber/condition_variable.hpp
+++ /dev/null
@@ -1,256 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_CONDITION_VARIABLE_H
-#define BOOST_FIBERS_CONDITION_VARIABLE_H
-
-#include <algorithm>
-#include <atomic>
-#include <chrono>
-#include <functional>
-#include <mutex>
-
-#include <boost/assert.hpp>
-#include <boost/config.hpp>
-
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/convert.hpp>
-#include <boost/fiber/detail/spinlock.hpp>
-#include <boost/fiber/exceptions.hpp>
-#include <boost/fiber/mutex.hpp>
-#include <boost/fiber/operations.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-#ifdef _MSC_VER
-# pragma warning(push)
-//# pragma warning(disable:4251)
-#endif
-
-namespace boost {
-namespace fibers {
-
-enum class cv_status {
- no_timeout = 1,
- timeout
-};
-
-class BOOST_FIBERS_DECL condition_variable_any {
-private:
- typedef context::wait_queue_t wait_queue_t;
-
- detail::spinlock wait_queue_splk_{};
- wait_queue_t wait_queue_{};
-
-public:
- condition_variable_any() = default;
-
- ~condition_variable_any() {
- BOOST_ASSERT( wait_queue_.empty() );
- }
-
- condition_variable_any( condition_variable_any const&) = delete;
- condition_variable_any & operator=( condition_variable_any const&) = delete;
-
- void notify_one() noexcept;
-
- void notify_all() noexcept;
-
- template< typename LockType >
- void wait( LockType & lt) {
- context * active_ctx = context::active();
- // atomically call lt.unlock() and block on *this
- // store this fiber in waiting-queue
- detail::spinlock_lock lk{ wait_queue_splk_ };
- BOOST_ASSERT( ! active_ctx->wait_is_linked() );
- active_ctx->wait_link( wait_queue_);
- active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release);
- // unlock external lt
- lt.unlock();
- // suspend this fiber
- active_ctx->suspend( lk);
- // relock external again before returning
- try {
- lt.lock();
- } catch (...) {
- std::terminate();
- }
- // post-conditions
- BOOST_ASSERT( ! active_ctx->wait_is_linked() );
- }
-
- template< typename LockType, typename Pred >
- void wait( LockType & lt, Pred pred) {
- while ( ! pred() ) {
- wait( lt);
- }
- }
-
- template< typename LockType, typename Clock, typename Duration >
- cv_status wait_until( LockType & lt, std::chrono::time_point< Clock, Duration > const& timeout_time_) {
- context * active_ctx = context::active();
- cv_status status = cv_status::no_timeout;
- std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_);
- // atomically call lt.unlock() and block on *this
- // store this fiber in waiting-queue
- detail::spinlock_lock lk{ wait_queue_splk_ };
- BOOST_ASSERT( ! active_ctx->wait_is_linked() );
- active_ctx->wait_link( wait_queue_);
- active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release);
- // unlock external lt
- lt.unlock();
- // suspend this fiber
- if ( ! active_ctx->wait_until( timeout_time, lk) ) {
- status = cv_status::timeout;
- // relock local lk
- lk.lock();
- // remove from waiting-queue
- wait_queue_.remove( * active_ctx);
- // unlock local lk
- lk.unlock();
- }
- // relock external again before returning
- try {
- lt.lock();
- } catch (...) {
- std::terminate();
- }
- // post-conditions
- BOOST_ASSERT( ! active_ctx->wait_is_linked() );
- return status;
- }
-
- template< typename LockType, typename Clock, typename Duration, typename Pred >
- bool wait_until( LockType & lt,
- std::chrono::time_point< Clock, Duration > const& timeout_time, Pred pred) {
- while ( ! pred() ) {
- if ( cv_status::timeout == wait_until( lt, timeout_time) ) {
- return pred();
- }
- }
- return true;
- }
-
- template< typename LockType, typename Rep, typename Period >
- cv_status wait_for( LockType & lt, std::chrono::duration< Rep, Period > const& timeout_duration) {
- return wait_until( lt,
- std::chrono::steady_clock::now() + timeout_duration);
- }
-
- template< typename LockType, typename Rep, typename Period, typename Pred >
- bool wait_for( LockType & lt, std::chrono::duration< Rep, Period > const& timeout_duration, Pred pred) {
- return wait_until( lt,
- std::chrono::steady_clock::now() + timeout_duration,
- pred);
- }
-};
-
-class BOOST_FIBERS_DECL condition_variable {
-private:
- condition_variable_any cnd_;
-
-public:
- condition_variable() = default;
-
- condition_variable( condition_variable const&) = delete;
- condition_variable & operator=( condition_variable const&) = delete;
-
- void notify_one() noexcept {
- cnd_.notify_one();
- }
-
- void notify_all() noexcept {
- cnd_.notify_all();
- }
-
- void wait( std::unique_lock< mutex > & lt) {
- // pre-condition
- BOOST_ASSERT( lt.owns_lock() );
- BOOST_ASSERT( context::active() == lt.mutex()->owner_);
- cnd_.wait( lt);
- // post-condition
- BOOST_ASSERT( lt.owns_lock() );
- BOOST_ASSERT( context::active() == lt.mutex()->owner_);
- }
-
- template< typename Pred >
- void wait( std::unique_lock< mutex > & lt, Pred pred) {
- // pre-condition
- BOOST_ASSERT( lt.owns_lock() );
- BOOST_ASSERT( context::active() == lt.mutex()->owner_);
- cnd_.wait( lt, pred);
- // post-condition
- BOOST_ASSERT( lt.owns_lock() );
- BOOST_ASSERT( context::active() == lt.mutex()->owner_);
- }
-
- template< typename Clock, typename Duration >
- cv_status wait_until( std::unique_lock< mutex > & lt,
- std::chrono::time_point< Clock, Duration > const& timeout_time) {
- // pre-condition
- BOOST_ASSERT( lt.owns_lock() );
- BOOST_ASSERT( context::active() == lt.mutex()->owner_);
- cv_status result = cnd_.wait_until( lt, timeout_time);
- // post-condition
- BOOST_ASSERT( lt.owns_lock() );
- BOOST_ASSERT( context::active() == lt.mutex()->owner_);
- return result;
- }
-
- template< typename Clock, typename Duration, typename Pred >
- bool wait_until( std::unique_lock< mutex > & lt,
- std::chrono::time_point< Clock, Duration > const& timeout_time, Pred pred) {
- // pre-condition
- BOOST_ASSERT( lt.owns_lock() );
- BOOST_ASSERT( context::active() == lt.mutex()->owner_);
- bool result = cnd_.wait_until( lt, timeout_time, pred);
- // post-condition
- BOOST_ASSERT( lt.owns_lock() );
- BOOST_ASSERT( context::active() == lt.mutex()->owner_);
- return result;
- }
-
- template< typename Rep, typename Period >
- cv_status wait_for( std::unique_lock< mutex > & lt,
- std::chrono::duration< Rep, Period > const& timeout_duration) {
- // pre-condition
- BOOST_ASSERT( lt.owns_lock() );
- BOOST_ASSERT( context::active() == lt.mutex()->owner_);
- cv_status result = cnd_.wait_for( lt, timeout_duration);
- // post-condition
- BOOST_ASSERT( lt.owns_lock() );
- BOOST_ASSERT( context::active() == lt.mutex()->owner_);
- return result;
- }
-
- template< typename Rep, typename Period, typename Pred >
- bool wait_for( std::unique_lock< mutex > & lt,
- std::chrono::duration< Rep, Period > const& timeout_duration, Pred pred) {
- // pre-condition
- BOOST_ASSERT( lt.owns_lock() );
- BOOST_ASSERT( context::active() == lt.mutex()->owner_);
- bool result = cnd_.wait_for( lt, timeout_duration, pred);
- // post-condition
- BOOST_ASSERT( lt.owns_lock() );
- BOOST_ASSERT( context::active() == lt.mutex()->owner_);
- return result;
- }
-};
-
-}}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_CONDITION_VARIABLE_H
diff --git a/contrib/restricted/boost/boost/fiber/context.hpp b/contrib/restricted/boost/boost/fiber/context.hpp
deleted file mode 100644
index 494014377a..0000000000
--- a/contrib/restricted/boost/boost/fiber/context.hpp
+++ /dev/null
@@ -1,513 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_CONTEXT_H
-#define BOOST_FIBERS_CONTEXT_H
-
-#include <atomic>
-#include <chrono>
-#include <cstdint>
-#include <exception>
-#include <functional>
-#include <iostream>
-#include <map>
-#include <memory>
-#include <tuple>
-#include <type_traits>
-
-#include <boost/assert.hpp>
-#include <boost/config.hpp>
-#if defined(BOOST_NO_CXX17_STD_APPLY)
-#include <boost/context/detail/apply.hpp>
-#endif
-#include <boost/context/fiber.hpp>
-#include <boost/context/stack_context.hpp>
-#include <boost/intrusive/list.hpp>
-#include <boost/intrusive/parent_from_member.hpp>
-#include <boost/intrusive_ptr.hpp>
-#include <boost/intrusive/set.hpp>
-#include <boost/intrusive/slist.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/data.hpp>
-#include <boost/fiber/detail/decay_copy.hpp>
-#include <boost/fiber/detail/fss.hpp>
-#include <boost/fiber/detail/spinlock.hpp>
-#include <boost/fiber/exceptions.hpp>
-#include <boost/fiber/fixedsize_stack.hpp>
-#include <boost/fiber/policy.hpp>
-#include <boost/fiber/properties.hpp>
-#include <boost/fiber/segmented_stack.hpp>
-#include <boost/fiber/type.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4251)
-#endif
-
-namespace boost {
-namespace fibers {
-
-class context;
-class fiber;
-class scheduler;
-
-namespace detail {
-
-struct wait_tag;
-typedef intrusive::list_member_hook<
- intrusive::tag< wait_tag >,
- intrusive::link_mode<
- intrusive::auto_unlink
- >
-> wait_hook;
-// declaration of the functor that converts between
-// the context class and the wait-hook
-struct wait_functor {
- // required types
- typedef wait_hook hook_type;
- typedef hook_type * hook_ptr;
- typedef const hook_type * const_hook_ptr;
- typedef context value_type;
- typedef value_type * pointer;
- typedef const value_type * const_pointer;
-
- // required static functions
- static hook_ptr to_hook_ptr( value_type &value);
- static const_hook_ptr to_hook_ptr( value_type const& value);
- static pointer to_value_ptr( hook_ptr n);
- static const_pointer to_value_ptr( const_hook_ptr n);
-};
-
-struct ready_tag;
-typedef intrusive::list_member_hook<
- intrusive::tag< ready_tag >,
- intrusive::link_mode<
- intrusive::auto_unlink
- >
-> ready_hook;
-
-struct sleep_tag;
-typedef intrusive::set_member_hook<
- intrusive::tag< sleep_tag >,
- intrusive::link_mode<
- intrusive::auto_unlink
- >
-> sleep_hook;
-
-struct worker_tag;
-typedef intrusive::list_member_hook<
- intrusive::tag< worker_tag >,
- intrusive::link_mode<
- intrusive::auto_unlink
- >
-> worker_hook;
-
-struct terminated_tag;
-typedef intrusive::slist_member_hook<
- intrusive::tag< terminated_tag >,
- intrusive::link_mode<
- intrusive::safe_link
- >
-> terminated_hook;
-
-struct remote_ready_tag;
-typedef intrusive::slist_member_hook<
- intrusive::tag< remote_ready_tag >,
- intrusive::link_mode<
- intrusive::safe_link
- >
-> remote_ready_hook;
-
-}
-
-class BOOST_FIBERS_DECL context {
-public:
- typedef intrusive::list<
- context,
- intrusive::function_hook< detail::wait_functor >,
- intrusive::constant_time_size< false >
- > wait_queue_t;
-
-private:
- friend class dispatcher_context;
- friend class main_context;
- template< typename Fn, typename ... Arg > friend class worker_context;
- friend class scheduler;
-
- struct fss_data {
- void * vp{ nullptr };
- detail::fss_cleanup_function::ptr_t cleanup_function{};
-
- fss_data() noexcept {
- }
-
- fss_data( void * vp_,
- detail::fss_cleanup_function::ptr_t const& fn) noexcept :
- vp( vp_),
- cleanup_function( fn) {
- BOOST_ASSERT( cleanup_function);
- }
-
- void do_cleanup() {
- ( * cleanup_function)( vp);
- }
- };
-
- typedef std::map< uintptr_t, fss_data > fss_data_t;
-
-#if ! defined(BOOST_FIBERS_NO_ATOMICS)
- std::atomic< std::size_t > use_count_;
-#else
- std::size_t use_count_;
-#endif
-#if ! defined(BOOST_FIBERS_NO_ATOMICS)
- detail::remote_ready_hook remote_ready_hook_{};
-#endif
- detail::spinlock splk_{};
- bool terminated_{ false };
- wait_queue_t wait_queue_{};
-public:
- detail::wait_hook wait_hook_{};
-#if ! defined(BOOST_FIBERS_NO_ATOMICS)
- std::atomic< std::intptr_t > twstatus{ 0 };
-#endif
-private:
- scheduler * scheduler_{ nullptr };
- fss_data_t fss_data_{};
- detail::sleep_hook sleep_hook_{};
- detail::ready_hook ready_hook_{};
- detail::terminated_hook terminated_hook_{};
- detail::worker_hook worker_hook_{};
- fiber_properties * properties_{ nullptr };
- boost::context::fiber c_{};
- std::chrono::steady_clock::time_point tp_;
- type type_;
- launch policy_;
-
- context( std::size_t initial_count, type t, launch policy) noexcept :
- use_count_{ initial_count },
- tp_{ (std::chrono::steady_clock::time_point::max)() },
- type_{ t },
- policy_{ policy } {
- }
-
-public:
- class id {
- private:
- context * impl_{ nullptr };
-
- public:
- id() = default;
-
- explicit id( context * impl) noexcept :
- impl_{ impl } {
- }
-
- bool operator==( id const& other) const noexcept {
- return impl_ == other.impl_;
- }
-
- bool operator!=( id const& other) const noexcept {
- return impl_ != other.impl_;
- }
-
- bool operator<( id const& other) const noexcept {
- return impl_ < other.impl_;
- }
-
- bool operator>( id const& other) const noexcept {
- return other.impl_ < impl_;
- }
-
- bool operator<=( id const& other) const noexcept {
- return ! ( * this > other);
- }
-
- bool operator>=( id const& other) const noexcept {
- return ! ( * this < other);
- }
-
- template< typename charT, class traitsT >
- friend std::basic_ostream< charT, traitsT > &
- operator<<( std::basic_ostream< charT, traitsT > & os, id const& other) {
- if ( nullptr != other.impl_) {
- return os << other.impl_;
- } else {
- return os << "{not-valid}";
- }
- }
-
- explicit operator bool() const noexcept {
- return nullptr != impl_;
- }
-
- bool operator!() const noexcept {
- return nullptr == impl_;
- }
- };
-
- static context * active() noexcept;
-
- static void reset_active() noexcept;
-
- context( context const&) = delete;
- context( context &&) = delete;
- context & operator=( context const&) = delete;
- context & operator=( context &&) = delete;
-
- friend bool
- operator==( context const& lhs, context const& rhs) noexcept {
- return & lhs == & rhs;
- }
-
- virtual ~context();
-
- scheduler * get_scheduler() const noexcept {
- return scheduler_;
- }
-
- id get_id() const noexcept;
-
- bool is_resumable() const noexcept {
- if ( c_) return true;
- else return false;
- }
-
- void resume() noexcept;
- void resume( detail::spinlock_lock &) noexcept;
- void resume( context *) noexcept;
-
- void suspend() noexcept;
- void suspend( detail::spinlock_lock &) noexcept;
-
- boost::context::fiber suspend_with_cc() noexcept;
- boost::context::fiber terminate() noexcept;
-
- void join();
-
- void yield() noexcept;
-
- bool wait_until( std::chrono::steady_clock::time_point const&) noexcept;
- bool wait_until( std::chrono::steady_clock::time_point const&,
- detail::spinlock_lock &) noexcept;
-
- void schedule( context *) noexcept;
-
- bool is_context( type t) const noexcept {
- return type::none != ( type_ & t);
- }
-
- void * get_fss_data( void const * vp) const;
-
- void set_fss_data(
- void const * vp,
- detail::fss_cleanup_function::ptr_t const& cleanup_fn,
- void * data,
- bool cleanup_existing);
-
- void set_properties( fiber_properties * props) noexcept;
-
- fiber_properties * get_properties() const noexcept {
- return properties_;
- }
-
- launch get_policy() const noexcept {
- return policy_;
- }
-
- bool worker_is_linked() const noexcept;
-
- bool ready_is_linked() const noexcept;
-
- bool remote_ready_is_linked() const noexcept;
-
- bool sleep_is_linked() const noexcept;
-
- bool terminated_is_linked() const noexcept;
-
- bool wait_is_linked() const noexcept;
-
- template< typename List >
- void worker_link( List & lst) noexcept {
- static_assert( std::is_same< typename List::value_traits::hook_type, detail::worker_hook >::value, "not a worker-queue");
- BOOST_ASSERT( ! worker_is_linked() );
- lst.push_back( * this);
- }
-
- template< typename List >
- void ready_link( List & lst) noexcept {
- static_assert( std::is_same< typename List::value_traits::hook_type, detail::ready_hook >::value, "not a ready-queue");
- BOOST_ASSERT( ! ready_is_linked() );
- lst.push_back( * this);
- }
-
- template< typename List >
- void remote_ready_link( List & lst) noexcept {
- static_assert( std::is_same< typename List::value_traits::hook_type, detail::remote_ready_hook >::value, "not a remote-ready-queue");
- BOOST_ASSERT( ! remote_ready_is_linked() );
- lst.push_back( * this);
- }
-
- template< typename Set >
- void sleep_link( Set & set) noexcept {
- static_assert( std::is_same< typename Set::value_traits::hook_type,detail::sleep_hook >::value, "not a sleep-queue");
- BOOST_ASSERT( ! sleep_is_linked() );
- set.insert( * this);
- }
-
- template< typename List >
- void terminated_link( List & lst) noexcept {
- static_assert( std::is_same< typename List::value_traits::hook_type, detail::terminated_hook >::value, "not a terminated-queue");
- BOOST_ASSERT( ! terminated_is_linked() );
- lst.push_back( * this);
- }
-
- template< typename List >
- void wait_link( List & lst) noexcept {
- static_assert( std::is_same< typename List::value_traits::hook_type, detail::wait_hook >::value, "not a wait-queue");
- BOOST_ASSERT( ! wait_is_linked() );
- lst.push_back( * this);
- }
-
- void worker_unlink() noexcept;
-
- void ready_unlink() noexcept;
-
- void sleep_unlink() noexcept;
-
- void wait_unlink() noexcept;
-
- void detach() noexcept;
-
- void attach( context *) noexcept;
-
- friend void intrusive_ptr_add_ref( context * ctx) noexcept {
- BOOST_ASSERT( nullptr != ctx);
- ctx->use_count_.fetch_add( 1, std::memory_order_relaxed);
- }
-
- friend void intrusive_ptr_release( context * ctx) noexcept {
- BOOST_ASSERT( nullptr != ctx);
- if ( 1 == ctx->use_count_.fetch_sub( 1, std::memory_order_release) ) {
- std::atomic_thread_fence( std::memory_order_acquire);
- boost::context::fiber c = std::move( ctx->c_);
- // destruct context
- ctx->~context();
- // deallocated stack
- std::move( c).resume();
- }
- }
-};
-
-inline
-bool operator<( context const& l, context const& r) noexcept {
- return l.get_id() < r.get_id();
-}
-
-template< typename Fn, typename ... Arg >
-class worker_context final : public context {
-private:
- typename std::decay< Fn >::type fn_;
- std::tuple< Arg ... > arg_;
-
- boost::context::fiber
- run_( boost::context::fiber && c) {
- {
- // fn and tpl must be destroyed before calling terminate()
- auto fn = std::move( fn_);
- auto arg = std::move( arg_);
-#if (defined(BOOST_USE_UCONTEXT)||defined(BOOST_USE_WINFIB))
- std::move( c).resume();
-#endif
-#if defined(BOOST_NO_CXX17_STD_APPLY)
- boost::context::detail::apply( std::move( fn), std::move( arg) );
-#else
- std::apply( std::move( fn), std::move( arg) );
-#endif
- }
- // terminate context
- return terminate();
- }
-
-public:
- template< typename StackAlloc >
- worker_context( launch policy,
- boost::context::preallocated const& palloc, StackAlloc && salloc,
- Fn && fn, Arg ... arg) :
- context{ 1, type::worker_context, policy },
- fn_( std::forward< Fn >( fn) ),
- arg_( std::forward< Arg >( arg) ... ) {
- c_ = boost::context::fiber{ std::allocator_arg, palloc, std::forward< StackAlloc >( salloc),
- std::bind( & worker_context::run_, this, std::placeholders::_1) };
-#if (defined(BOOST_USE_UCONTEXT)||defined(BOOST_USE_WINFIB))
- c_ = std::move( c_).resume();
-#endif
- }
-};
-
-
-template< typename StackAlloc, typename Fn, typename ... Arg >
-static intrusive_ptr< context > make_worker_context( launch policy,
- StackAlloc && salloc,
- Fn && fn, Arg ... arg) {
- typedef worker_context< Fn, Arg ... > context_t;
-
- auto sctx = salloc.allocate();
- // reserve space for control structure
- void * storage = reinterpret_cast< void * >(
- ( reinterpret_cast< uintptr_t >( sctx.sp) - static_cast< uintptr_t >( sizeof( context_t) ) )
- & ~ static_cast< uintptr_t >( 0xff) );
- void * stack_bottom = reinterpret_cast< void * >(
- reinterpret_cast< uintptr_t >( sctx.sp) - static_cast< uintptr_t >( sctx.size) );
- const std::size_t size = reinterpret_cast< uintptr_t >( storage) - reinterpret_cast< uintptr_t >( stack_bottom);
- // placement new of context on top of fiber's stack
- return intrusive_ptr< context >{
- new ( storage) context_t{
- policy,
- boost::context::preallocated{ storage, size, sctx },
- std::forward< StackAlloc >( salloc),
- std::forward< Fn >( fn),
- std::forward< Arg >( arg) ... } };
-}
-
-namespace detail {
-
-inline
-wait_functor::hook_ptr wait_functor::to_hook_ptr( wait_functor::value_type & value) {
- return & value.wait_hook_;
-}
-
-inline
-wait_functor::const_hook_ptr wait_functor::to_hook_ptr( wait_functor::value_type const& value) {
- return & value.wait_hook_;
-}
-
-inline
-wait_functor::pointer wait_functor::to_value_ptr( wait_functor::hook_ptr n) {
- return intrusive::get_parent_from_member< context >( n, & context::wait_hook_);
-}
-
-inline
-wait_functor::const_pointer wait_functor::to_value_ptr( wait_functor::const_hook_ptr n) {
- return intrusive::get_parent_from_member< context >( n, & context::wait_hook_);
-}
-
-}}}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_CONTEXT_H
diff --git a/contrib/restricted/boost/boost/fiber/cuda/waitfor.hpp b/contrib/restricted/boost/boost/fiber/cuda/waitfor.hpp
deleted file mode 100644
index 262efd9a8c..0000000000
--- a/contrib/restricted/boost/boost/fiber/cuda/waitfor.hpp
+++ /dev/null
@@ -1,139 +0,0 @@
-
-// Copyright Oliver Kowalke 2017.
-// 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)
-
-#ifndef BOOST_FIBERS_CUDA_WAITFOR_H
-#define BOOST_FIBERS_CUDA_WAITFOR_H
-
-#include <initializer_list>
-#include <mutex>
-#include <iostream>
-#include <set>
-#include <tuple>
-#include <vector>
-
-#include <boost/assert.hpp>
-#include <boost/config.hpp>
-
-#include <cuda.h>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/is_all_same.hpp>
-#include <boost/fiber/condition_variable.hpp>
-#include <boost/fiber/mutex.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace cuda {
-namespace detail {
-
-template< typename Rendezvous >
-static void trampoline( cudaStream_t st, cudaError_t status, void * vp) {
- Rendezvous * data = static_cast< Rendezvous * >( vp);
- data->notify( st, status);
-}
-
-class single_stream_rendezvous {
-public:
- single_stream_rendezvous( cudaStream_t st) {
- unsigned int flags = 0;
- cudaError_t status = ::cudaStreamAddCallback( st, trampoline< single_stream_rendezvous >, this, flags);
- if ( cudaSuccess != status) {
- st_ = st;
- status_ = status;
- done_ = true;
- }
- }
-
- void notify( cudaStream_t st, cudaError_t status) noexcept {
- std::unique_lock< mutex > lk{ mtx_ };
- st_ = st;
- status_ = status;
- done_ = true;
- lk.unlock();
- cv_.notify_one();
- }
-
- std::tuple< cudaStream_t, cudaError_t > wait() {
- std::unique_lock< mutex > lk{ mtx_ };
- cv_.wait( lk, [this]{ return done_; });
- return std::make_tuple( st_, status_);
- }
-
-private:
- mutex mtx_{};
- condition_variable cv_{};
- cudaStream_t st_{};
- cudaError_t status_{ cudaErrorUnknown };
- bool done_{ false };
-};
-
-class many_streams_rendezvous {
-public:
- many_streams_rendezvous( std::initializer_list< cudaStream_t > l) :
- stx_{ l } {
- results_.reserve( stx_.size() );
- for ( cudaStream_t st : stx_) {
- unsigned int flags = 0;
- cudaError_t status = ::cudaStreamAddCallback( st, trampoline< many_streams_rendezvous >, this, flags);
- if ( cudaSuccess != status) {
- std::unique_lock< mutex > lk{ mtx_ };
- stx_.erase( st);
- results_.push_back( std::make_tuple( st, status) );
- }
- }
- }
-
- void notify( cudaStream_t st, cudaError_t status) noexcept {
- std::unique_lock< mutex > lk{ mtx_ };
- stx_.erase( st);
- results_.push_back( std::make_tuple( st, status) );
- if ( stx_.empty() ) {
- lk.unlock();
- cv_.notify_one();
- }
- }
-
- std::vector< std::tuple< cudaStream_t, cudaError_t > > wait() {
- std::unique_lock< mutex > lk{ mtx_ };
- cv_.wait( lk, [this]{ return stx_.empty(); });
- return results_;
- }
-
-private:
- mutex mtx_{};
- condition_variable cv_{};
- std::set< cudaStream_t > stx_;
- std::vector< std::tuple< cudaStream_t, cudaError_t > > results_;
-};
-
-}
-
-void waitfor_all();
-
-inline
-std::tuple< cudaStream_t, cudaError_t > waitfor_all( cudaStream_t st) {
- detail::single_stream_rendezvous rendezvous( st);
- return rendezvous.wait();
-}
-
-template< typename ... STP >
-std::vector< std::tuple< cudaStream_t, cudaError_t > > waitfor_all( cudaStream_t st0, STP ... stx) {
- static_assert( boost::fibers::detail::is_all_same< cudaStream_t, STP ...>::value, "all arguments must be of type `CUstream*`.");
- detail::many_streams_rendezvous rendezvous{ st0, stx ... };
- return rendezvous.wait();
-}
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_CUDA_WAITFOR_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/config.hpp b/contrib/restricted/boost/boost/fiber/detail/config.hpp
deleted file mode 100644
index 21dea693ac..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/config.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_DETAIL_CONFIG_H
-#define BOOST_FIBERS_DETAIL_CONFIG_H
-
-#include <cstddef>
-
-#include <boost/config.hpp>
-#include <boost/predef.h>
-#include <boost/detail/workaround.hpp>
-
-#ifdef BOOST_FIBERS_DECL
-# undef BOOST_FIBERS_DECL
-#endif
-
-#if (defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FIBERS_DYN_LINK) ) && ! defined(BOOST_FIBERS_STATIC_LINK)
-# if defined(BOOST_FIBERS_SOURCE)
-# define BOOST_FIBERS_DECL BOOST_SYMBOL_EXPORT
-# define BOOST_FIBERS_BUILD_DLL
-# else
-# define BOOST_FIBERS_DECL BOOST_SYMBOL_IMPORT
-# endif
-#endif
-
-#if ! defined(BOOST_FIBERS_DECL)
-# define BOOST_FIBERS_DECL
-#endif
-
-#if ! defined(BOOST_FIBERS_SOURCE) && ! defined(BOOST_ALL_NO_LIB) && ! defined(BOOST_FIBERS_NO_LIB)
-# define BOOST_LIB_NAME boost_fiber
-# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FIBERS_DYN_LINK)
-# define BOOST_DYN_LINK
-# endif
-# include <boost/config/auto_link.hpp>
-#endif
-
-#if BOOST_OS_LINUX || BOOST_OS_WINDOWS
-# define BOOST_FIBERS_HAS_FUTEX
-#endif
-
-#if (!defined(BOOST_FIBERS_HAS_FUTEX) && \
- (defined(BOOST_FIBERS_SPINLOCK_TTAS_FUTEX) || defined(BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_FUTEX)))
-# error "futex not supported on this platform"
-#endif
-
-#if !defined(BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD)
-# define BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD 16
-#endif
-
-#if !defined(BOOST_FIBERS_RETRY_THRESHOLD)
-# define BOOST_FIBERS_RETRY_THRESHOLD 64
-#endif
-
-#if !defined(BOOST_FIBERS_SPIN_BEFORE_SLEEP0)
-# define BOOST_FIBERS_SPIN_BEFORE_SLEEP0 32
-#endif
-
-#if !defined(BOOST_FIBERS_SPIN_BEFORE_YIELD)
-# define BOOST_FIBERS_SPIN_BEFORE_YIELD 64
-#endif
-
-#endif // BOOST_FIBERS_DETAIL_CONFIG_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/context_spinlock_queue.hpp b/contrib/restricted/boost/boost/fiber/detail/context_spinlock_queue.hpp
deleted file mode 100644
index f58fbd2296..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/context_spinlock_queue.hpp
+++ /dev/null
@@ -1,118 +0,0 @@
-
-// Copyright Oliver Kowalke 2015.
-// 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)
-//
-
-#ifndef BOOST_FIBERS_DETAIL_SPINLOCK_QUEUE_H
-#define BOOST_FIBERS_DETAIL_SPINLOCK_QUEUE_H
-
-#include <cstddef>
-#include <cstring>
-#include <mutex>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/spinlock.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-class context_spinlock_queue {
-private:
- typedef context * slot_type;
-
- mutable spinlock splk_{};
- std::size_t pidx_{ 0 };
- std::size_t cidx_{ 0 };
- std::size_t capacity_;
- slot_type * slots_;
-
- void resize_() {
- slot_type * old_slots = slots_;
- slots_ = new slot_type[2*capacity_];
- std::size_t offset = capacity_ - cidx_;
- std::memcpy( slots_, old_slots + cidx_, offset * sizeof( slot_type) );
- if ( 0 < cidx_) {
- std::memcpy( slots_ + offset, old_slots, pidx_ * sizeof( slot_type) );
- }
- cidx_ = 0;
- pidx_ = capacity_ - 1;
- capacity_ *= 2;
- delete [] old_slots;
- }
-
- bool is_full_() const noexcept {
- return cidx_ == ((pidx_ + 1) % capacity_);
- }
-
- bool is_empty_() const noexcept {
- return cidx_ == pidx_;
- }
-
-public:
- context_spinlock_queue( std::size_t capacity = 4096) :
- capacity_{ capacity } {
- slots_ = new slot_type[capacity_];
- }
-
- ~context_spinlock_queue() {
- delete [] slots_;
- }
-
- context_spinlock_queue( context_spinlock_queue const&) = delete;
- context_spinlock_queue & operator=( context_spinlock_queue const&) = delete;
-
- bool empty() const noexcept {
- spinlock_lock lk{ splk_ };
- return is_empty_();
- }
-
- void push( context * c) {
- spinlock_lock lk{ splk_ };
- if ( is_full_() ) {
- resize_();
- }
- slots_[pidx_] = c;
- pidx_ = (pidx_ + 1) % capacity_;
- }
-
- context * pop() {
- spinlock_lock lk{ splk_ };
- context * c = nullptr;
- if ( ! is_empty_() ) {
- c = slots_[cidx_];
- cidx_ = (cidx_ + 1) % capacity_;
- }
- return c;
- }
-
- context * steal() {
- spinlock_lock lk{ splk_ };
- context * c = nullptr;
- if ( ! is_empty_() ) {
- c = slots_[cidx_];
- if ( c->is_context( type::pinned_context) ) {
- return nullptr;
- }
- cidx_ = (cidx_ + 1) % capacity_;
- }
- return c;
- }
-};
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_DETAIL_SPINLOCK_QUEUE_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/context_spmc_queue.hpp b/contrib/restricted/boost/boost/fiber/detail/context_spmc_queue.hpp
deleted file mode 100644
index 89f93044f9..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/context_spmc_queue.hpp
+++ /dev/null
@@ -1,197 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_DETAIL_CONTEXT_SPMC_QUEUE_H
-#define BOOST_FIBERS_DETAIL_CONTEXT_SPMC_QUEUE_H
-
-#include <atomic>
-#include <cstddef>
-#include <cstdint>
-#include <memory>
-#include <type_traits>
-#include <utility>
-
-#include <boost/assert.hpp>
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/context.hpp>
-
-// David Chase and Yossi Lev. Dynamic circular work-stealing deque.
-// In SPAA ’05: Proceedings of the seventeenth annual ACM symposium
-// on Parallelism in algorithms and architectures, pages 21–28,
-// New York, NY, USA, 2005. ACM.
-//
-// Nhat Minh Lê, Antoniu Pop, Albert Cohen, and Francesco Zappa Nardelli. 2013.
-// Correct and efficient work-stealing for weak memory models.
-// In Proceedings of the 18th ACM SIGPLAN symposium on Principles and practice
-// of parallel programming (PPoPP '13). ACM, New York, NY, USA, 69-80.
-
-#if BOOST_COMP_CLANG
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunused-private-field"
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-class context_spmc_queue {
-private:
- class array {
- private:
- typedef std::atomic< context * > atomic_type;
- typedef atomic_type storage_type;
-
- std::size_t capacity_;
- storage_type * storage_;
-
- public:
- array( std::size_t capacity) :
- capacity_{ capacity },
- storage_{ new storage_type[capacity_] } {
- for ( std::size_t i = 0; i < capacity_; ++i) {
- ::new ( static_cast< void * >( std::addressof( storage_[i]) ) ) atomic_type{ nullptr };
- }
- }
-
- ~array() {
- for ( std::size_t i = 0; i < capacity_; ++i) {
- reinterpret_cast< atomic_type * >( std::addressof( storage_[i]) )->~atomic_type();
- }
- delete [] storage_;
- }
-
- std::size_t capacity() const noexcept {
- return capacity_;
- }
-
- void push( std::size_t bottom, context * ctx) noexcept {
- reinterpret_cast< atomic_type * >(
- std::addressof( storage_[bottom % capacity_]) )
- ->store( ctx, std::memory_order_relaxed);
- }
-
- context * pop( std::size_t top) noexcept {
- return reinterpret_cast< atomic_type * >(
- std::addressof( storage_[top % capacity_]) )
- ->load( std::memory_order_relaxed);
- }
-
- array * resize( std::size_t bottom, std::size_t top) {
- std::unique_ptr< array > tmp{ new array{ 2 * capacity_ } };
- for ( std::size_t i = top; i != bottom; ++i) {
- tmp->push( i, pop( i) );
- }
- return tmp.release();
- }
- };
-
- std::atomic< std::size_t > top_{ 0 };
- std::atomic< std::size_t > bottom_{ 0 };
- std::atomic< array * > array_;
- std::vector< array * > old_arrays_{};
- char padding_[cacheline_length];
-
-public:
- context_spmc_queue( std::size_t capacity = 4096) :
- array_{ new array{ capacity } } {
- old_arrays_.reserve( 32);
- }
-
- ~context_spmc_queue() {
- for ( array * a : old_arrays_) {
- delete a;
- }
- delete array_.load();
- }
-
- context_spmc_queue( context_spmc_queue const&) = delete;
- context_spmc_queue & operator=( context_spmc_queue const&) = delete;
-
- bool empty() const noexcept {
- std::size_t bottom = bottom_.load( std::memory_order_relaxed);
- std::size_t top = top_.load( std::memory_order_relaxed);
- return bottom <= top;
- }
-
- void push( context * ctx) {
- std::size_t bottom = bottom_.load( std::memory_order_relaxed);
- std::size_t top = top_.load( std::memory_order_acquire);
- array * a = array_.load( std::memory_order_relaxed);
- if ( (a->capacity() - 1) < (bottom - top) ) {
- // queue is full
- // resize
- array * tmp = a->resize( bottom, top);
- old_arrays_.push_back( a);
- std::swap( a, tmp);
- array_.store( a, std::memory_order_relaxed);
- }
- a->push( bottom, ctx);
- std::atomic_thread_fence( std::memory_order_release);
- bottom_.store( bottom + 1, std::memory_order_relaxed);
- }
-
- context * pop() {
- std::size_t bottom = bottom_.load( std::memory_order_relaxed) - 1;
- array * a = array_.load( std::memory_order_relaxed);
- bottom_.store( bottom, std::memory_order_relaxed);
- std::atomic_thread_fence( std::memory_order_seq_cst);
- std::size_t top = top_.load( std::memory_order_relaxed);
- context * ctx = nullptr;
- if ( top <= bottom) {
- // queue is not empty
- ctx = a->pop( bottom);
- BOOST_ASSERT( nullptr != ctx);
- if ( top == bottom) {
- // last element dequeued
- if ( ! top_.compare_exchange_strong( top, top + 1,
- std::memory_order_seq_cst,
- std::memory_order_relaxed) ) {
- // lose the race
- ctx = nullptr;
- }
- bottom_.store( bottom + 1, std::memory_order_relaxed);
- }
- } else {
- // queue is empty
- bottom_.store( bottom + 1, std::memory_order_relaxed);
- }
- return ctx;
- }
-
- context * steal() {
- std::size_t top = top_.load( std::memory_order_acquire);
- std::atomic_thread_fence( std::memory_order_seq_cst);
- std::size_t bottom = bottom_.load( std::memory_order_acquire);
- context * ctx = nullptr;
- if ( top < bottom) {
- // queue is not empty
- array * a = array_.load( std::memory_order_consume);
- ctx = a->pop( top);
- BOOST_ASSERT( nullptr != ctx);
- // do not steal pinned context (e.g. main-/dispatcher-context)
- if ( ctx->is_context( type::pinned_context) ) {
- return nullptr;
- }
- if ( ! top_.compare_exchange_strong( top, top + 1,
- std::memory_order_seq_cst,
- std::memory_order_relaxed) ) {
- // lose the race
- return nullptr;
- }
- }
- return ctx;
- }
-};
-
-}}}
-
-#if BOOST_COMP_CLANG
-#pragma clang diagnostic pop
-#endif
-
-#endif // BOOST_FIBERS_DETAIL_CONTEXT_SPMC_QUEUE_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/convert.hpp b/contrib/restricted/boost/boost/fiber/detail/convert.hpp
deleted file mode 100644
index ba3bbbd0aa..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/convert.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_DETAIL_CONVERT_H
-#define BOOST_FIBERS_DETAIL_CONVERT_H
-
-#include <chrono>
-#include <memory>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-inline
-std::chrono::steady_clock::time_point convert(
- std::chrono::steady_clock::time_point const& timeout_time) noexcept {
- return timeout_time;
-}
-
-template< typename Clock, typename Duration >
-std::chrono::steady_clock::time_point convert(
- std::chrono::time_point< Clock, Duration > const& timeout_time) {
- return std::chrono::steady_clock::now() + ( timeout_time - Clock::now() );
-}
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_DETAIL_CONVERT_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/cpu_relax.hpp b/contrib/restricted/boost/boost/fiber/detail/cpu_relax.hpp
deleted file mode 100644
index 8a20aae059..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/cpu_relax.hpp
+++ /dev/null
@@ -1,82 +0,0 @@
-
-// Copyright Oliver Kowalke 2016.
-// 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)
-
-#ifndef BOOST_FIBERS_DETAIL_CPU_RELAX_H
-#define BOOST_FIBERS_DETAIL_CPU_RELAX_H
-
-#include <chrono>
-#include <thread>
-
-#include <boost/config.hpp>
-#include <boost/predef.h>
-
-#include <boost/fiber/detail/config.hpp>
-
-#if BOOST_COMP_MSVC || BOOST_COMP_MSVC_EMULATED
-# include <windows.h>
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-#if BOOST_ARCH_ARM
-# if BOOST_COMP_MSVC
-# define cpu_relax() YieldProcessor();
-# elif (defined(__ARM_ARCH_6K__) || \
- defined(__ARM_ARCH_6Z__) || \
- defined(__ARM_ARCH_6ZK__) || \
- defined(__ARM_ARCH_6T2__) || \
- defined(__ARM_ARCH_7__) || \
- defined(__ARM_ARCH_7A__) || \
- defined(__ARM_ARCH_7R__) || \
- defined(__ARM_ARCH_7M__) || \
- defined(__ARM_ARCH_7S__) || \
- defined(__ARM_ARCH_8A__) || \
- defined(__aarch64__))
-// http://groups.google.com/a/chromium.org/forum/#!msg/chromium-dev/YGVrZbxYOlU/Vpgy__zeBQAJ
-// mnemonic 'yield' is supported from ARMv6k onwards
-# define cpu_relax() asm volatile ("yield" ::: "memory");
-# else
-# define cpu_relax() asm volatile ("nop" ::: "memory");
-# endif
-#elif BOOST_ARCH_MIPS
-# define cpu_relax() asm volatile ("pause" ::: "memory");
-#elif BOOST_ARCH_PPC
-// http://code.metager.de/source/xref/gnu/glibc/sysdeps/powerpc/sys/platform/ppc.h
-// http://stackoverflow.com/questions/5425506/equivalent-of-x86-pause-instruction-for-ppc
-// mnemonic 'or' shared resource hints
-// or 27, 27, 27 This form of 'or' provides a hint that performance
-// will probably be imrpoved if shared resources dedicated
-// to the executing processor are released for use by other
-// processors
-// extended mnemonics (available with POWER7)
-// yield == or 27, 27, 27
-# define cpu_relax() asm volatile ("or 27,27,27" ::: "memory");
-#elif BOOST_ARCH_X86
-# if BOOST_COMP_MSVC || BOOST_COMP_MSVC_EMULATED
-# define cpu_relax() YieldProcessor();
-# else
-# define cpu_relax() asm volatile ("pause" ::: "memory");
-# endif
-#else
-# define cpu_relax() { \
- static constexpr std::chrono::microseconds us0{ 0 }; \
- std::this_thread::sleep_for( us0); \
- }
-#endif
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_DETAIL_CPU_RELAX_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/data.hpp b/contrib/restricted/boost/boost/fiber/detail/data.hpp
deleted file mode 100644
index c363817a09..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/data.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_DETAIL_DATA_H
-#define BOOST_FIBERS_DETAIL_DATA_H
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/spinlock.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-class context;
-
-namespace detail {
-
-struct data_t {
- spinlock_lock * lk{ nullptr };
- context * ctx{ nullptr };
- context * from;
-
- explicit data_t( context * from_) noexcept :
- from{ from_ } {
- }
-
- explicit data_t( spinlock_lock * lk_,
- context * from_) noexcept :
- lk{ lk_ },
- from{ from_ } {
- }
-
- explicit data_t( context * ctx_,
- context * from_) noexcept :
- ctx{ ctx_ },
- from{ from_ } {
- }
-};
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_DETAIL_DATA_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/decay_copy.hpp b/contrib/restricted/boost/boost/fiber/detail/decay_copy.hpp
deleted file mode 100644
index eecfdd0ef6..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/decay_copy.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-
-// Copyright Oliver Kowalke 2014.
-// 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)
-
-#ifndef BOOST_FIBER_DETAIL_DECAY_COPY_H
-#define BOOST_FIBER_DETAIL_DECAY_COPY_H
-
-#include <type_traits>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-template< typename T >
-typename std::decay< T >::type
-decay_copy( T && t) {
- return std::forward< T >( t);
-}
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-#include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBER_DETAIL_DECAY_COPY_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/disable_overload.hpp b/contrib/restricted/boost/boost/fiber/detail/disable_overload.hpp
deleted file mode 100644
index 0c69804523..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/disable_overload.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-
-// Copyright Oliver Kowalke 2014.
-// 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)
-
-#ifndef BOOST_FIBER_DETAIL_DISABLE_OVERLOAD_H
-#define BOOST_FIBER_DETAIL_DISABLE_OVERLOAD_H
-
-#include <type_traits>
-
-#include <boost/config.hpp>
-#include <boost/context/detail/disable_overload.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-template< typename X, typename Y >
-using disable_overload = boost::context::detail::disable_overload< X, Y >;
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-#include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBER_DETAIL_DISABLE_OVERLOAD_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/fss.hpp b/contrib/restricted/boost/boost/fiber/detail/fss.hpp
deleted file mode 100644
index 27a7d67f26..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/fss.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-//
-// based on tss.hpp from boost.thread
-
-#ifndef BOOST_FIBERS_DETAIL_FSS_H
-#define BOOST_FIBERS_DETAIL_FSS_H
-
-#include <atomic>
-#include <cstddef>
-
-#include <boost/config.hpp>
-#include <boost/intrusive_ptr.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-class fss_cleanup_function {
-private:
- std::atomic< std::size_t > use_count_{ 0 };
-
-public:
- typedef intrusive_ptr< fss_cleanup_function > ptr_t;
-
- fss_cleanup_function() noexcept = default;
-
- virtual ~fss_cleanup_function() = default;
-
- virtual void operator()( void * data) = 0;
-
- friend inline
- void intrusive_ptr_add_ref( fss_cleanup_function * p) noexcept {
- p->use_count_.fetch_add( 1, std::memory_order_relaxed);
- }
-
- friend inline
- void intrusive_ptr_release( fss_cleanup_function * p) noexcept {
- if ( 1 == p->use_count_.fetch_sub( 1, std::memory_order_release) ) {
- std::atomic_thread_fence( std::memory_order_acquire);
- delete p;
- }
- }
-};
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_DETAIL_FSS_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/futex.hpp b/contrib/restricted/boost/boost/fiber/detail/futex.hpp
deleted file mode 100644
index e64bd5990d..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/futex.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-
-// Copyright Oliver Kowalke 2016.
-// 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)
-
-#ifndef BOOST_FIBERS_DETAIL_FUTEX_H
-#define BOOST_FIBERS_DETAIL_FUTEX_H
-
-#include <boost/config.hpp>
-#include <boost/predef.h>
-
-#include <boost/fiber/detail/config.hpp>
-
-#if BOOST_OS_LINUX
-extern "C" {
-#include <linux/futex.h>
-#include <sys/syscall.h>
-}
-#elif BOOST_OS_WINDOWS
-#include <windows.h>
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-#if BOOST_OS_LINUX
-BOOST_FORCEINLINE
-int sys_futex( void * addr, std::int32_t op, std::int32_t x) {
- return ::syscall( SYS_futex, addr, op, x, nullptr, nullptr, 0);
-}
-
-BOOST_FORCEINLINE
-int futex_wake( std::atomic< std::int32_t > * addr) {
- return 0 <= sys_futex( static_cast< void * >( addr), FUTEX_WAKE_PRIVATE, 1) ? 0 : -1;
-}
-
-BOOST_FORCEINLINE
-int futex_wait( std::atomic< std::int32_t > * addr, std::int32_t x) {
- return 0 <= sys_futex( static_cast< void * >( addr), FUTEX_WAIT_PRIVATE, x) ? 0 : -1;
-}
-#elif BOOST_OS_WINDOWS
-BOOST_FORCEINLINE
-int futex_wake( std::atomic< std::int32_t > * addr) {
- ::WakeByAddressSingle( static_cast< void * >( addr) );
- return 0;
-}
-
-BOOST_FORCEINLINE
-int futex_wait( std::atomic< std::int32_t > * addr, std::int32_t x) {
- ::WaitOnAddress( static_cast< volatile void * >( addr), & x, sizeof( x), INFINITE);
- return 0;
-}
-#else
-# warn "no futex support on this platform"
-#endif
-
-}}}
-
-#endif // BOOST_FIBERS_DETAIL_FUTEX_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/is_all_same.hpp b/contrib/restricted/boost/boost/fiber/detail/is_all_same.hpp
deleted file mode 100644
index b72fa7910a..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/is_all_same.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-
-// Copyright Oliver Kowalke 2017.
-// 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)
-
-#ifndef BOOST_FIBERS_DETAIL_IS_ALL_SAME_H
-#define BOOST_FIBERS_DETAIL_IS_ALL_SAME_H
-
-#include <type_traits>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-template< typename X, typename ... Y >
-struct is_all_same;
-
-template< typename X, typename Y0, typename ... Y >
-struct is_all_same< X, Y0, Y ... > {
- static constexpr bool value =
- std::is_same< X, Y0 >::value && is_all_same< X, Y ... >::value;
-};
-
-template< typename X, typename Y0 >
-struct is_all_same< X, Y0 > {
- static constexpr bool value = std::is_same< X, Y0 >::value;
-};
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_DETAIL_IS_ALL_SAME_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/rtm.hpp b/contrib/restricted/boost/boost/fiber/detail/rtm.hpp
deleted file mode 100644
index 5188b0d216..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/rtm.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-
-// Copyright Oliver Kowalke 2017.
-// 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)
-//
-
-#ifndef BOOST_FIBER_DETAIL_RTM_H
-#define BOOST_FIBER_DETAIL_RTM_H
-
-#include <cstdint>
-
-#include <boost/assert.hpp>
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-struct rtm_status {
- enum {
- none = 0,
- explicit_abort = 1 << 0,
- may_retry = 1 << 1,
- memory_conflict = 1 << 2,
- buffer_overflow = 1 << 3,
- debug_hit = 1 << 4,
- nested_abort = 1 << 5
- };
-
- static constexpr std::uint32_t success = ~std::uint32_t{ 0 };
-};
-
-static BOOST_FORCEINLINE
-std::uint32_t rtm_begin() noexcept {
- std::uint32_t result = rtm_status::success;
- __asm__ __volatile__
- (
- ".byte 0xc7,0xf8 ; .long 0"
- : "+a" (result)
- :
- : "memory"
- );
- return result;
-}
-
-static BOOST_FORCEINLINE
-void rtm_end() noexcept {
- __asm__ __volatile__
- (
- ".byte 0x0f,0x01,0xd5"
- :
- :
- : "memory"
- );
-}
-
-static BOOST_FORCEINLINE
-void rtm_abort_lock_not_free() noexcept {
- __asm__ __volatile__
- (
- ".byte 0xc6,0xf8,0xff"
- :
- :
- : "memory"
- );
-}
-
-static BOOST_FORCEINLINE
-bool rtm_test() noexcept {
- bool result;
- __asm__ __volatile__
- (
- ".byte 0x0f,0x01,0xd6; setz %0"
- : "=q" (result)
- :
- : "memory"
- );
- return result;
-}
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBER_DETAIL_RTM_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock.hpp
deleted file mode 100644
index 59d2a5cd2b..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/spinlock.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_SPINLOCK_H
-#define BOOST_FIBERS_SPINLOCK_H
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#if !defined(BOOST_FIBERS_NO_ATOMICS)
-# include <mutex>
-# include <boost/fiber/detail/spinlock_ttas_adaptive.hpp>
-# include <boost/fiber/detail/spinlock_ttas.hpp>
-# if defined(BOOST_FIBERS_HAS_FUTEX)
-# include <boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp>
-# include <boost/fiber/detail/spinlock_ttas_futex.hpp>
-# endif
-# if defined(BOOST_USE_TSX)
-# include <boost/fiber/detail/spinlock_rtm.hpp>
-# endif
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-#if defined(BOOST_FIBERS_NO_ATOMICS)
-struct spinlock {
- constexpr spinlock() noexcept {}
- void lock() noexcept {}
- void unlock() noexcept {}
-};
-
-struct spinlock_lock {
- constexpr spinlock_lock( spinlock &) noexcept {}
- void lock() noexcept {}
- void unlock() noexcept {}
-};
-#else
-# if defined(BOOST_FIBERS_SPINLOCK_STD_MUTEX)
-using spinlock = std::mutex;
-# elif defined(BOOST_FIBERS_SPINLOCK_TTAS_FUTEX)
-# if defined(BOOST_USE_TSX)
-using spinlock = spinlock_rtm< spinlock_ttas_futex >;
-# else
-using spinlock = spinlock_ttas_futex;
-# endif
-# elif defined(BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_FUTEX)
-# if defined(BOOST_USE_TSX)
-using spinlock = spinlock_rtm< spinlock_ttas_adaptive_futex >;
-# else
-using spinlock = spinlock_ttas_adaptive_futex;
-# endif
-# elif defined(BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE)
-# if defined(BOOST_USE_TSX)
-using spinlock = spinlock_rtm< spinlock_ttas_adaptive >;
-# else
-using spinlock = spinlock_ttas_adaptive;
-# endif
-# else
-# if defined(BOOST_USE_TSX)
-using spinlock = spinlock_rtm< spinlock_ttas >;
-# else
-using spinlock = spinlock_ttas;
-# endif
-# endif
-using spinlock_lock = std::unique_lock< spinlock >;
-#endif
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_SPINLOCK_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock_rtm.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock_rtm.hpp
deleted file mode 100644
index 5cc4a5e9af..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/spinlock_rtm.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-
-// Copyright Oliver Kowalke 2017.
-// 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)
-
-#ifndef BOOST_FIBERS_SPINLOCK_RTM_H
-#define BOOST_FIBERS_SPINLOCK_RTM_H
-
-#include <atomic>
-#include <chrono>
-#include <cmath>
-#include <random>
-#include <thread>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/cpu_relax.hpp>
-#include <boost/fiber/detail/rtm.hpp>
-#include <boost/fiber/detail/spinlock_status.hpp>
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-template< typename FBSplk >
-class spinlock_rtm {
-private:
- FBSplk splk_{};
-
-public:
- spinlock_rtm() = default;
-
- spinlock_rtm( spinlock_rtm const&) = delete;
- spinlock_rtm & operator=( spinlock_rtm const&) = delete;
-
- void lock() noexcept {
- static thread_local std::minstd_rand generator{ std::random_device{}() };
- std::size_t collisions = 0 ;
- for ( std::size_t retries = 0; retries < BOOST_FIBERS_RETRY_THRESHOLD; ++retries) {
- std::uint32_t status;
- if ( rtm_status::success == ( status = rtm_begin() ) ) {
- // add lock to read-set
- if ( spinlock_status::unlocked == splk_.state_.load( std::memory_order_relaxed) ) {
- // lock is free, enter critical section
- return;
- }
- // lock was acquired by another thread
- // explicit abort of transaction with abort argument 'lock not free'
- rtm_abort_lock_not_free();
- }
- // transaction aborted
- if ( rtm_status::none != (status & rtm_status::may_retry) ||
- rtm_status::none != (status & rtm_status::memory_conflict) ) {
- // another logical processor conflicted with a memory address that was
- // part or the read-/write-set
- if ( BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD > collisions) {
- std::uniform_int_distribution< std::size_t > distribution{
- 0, static_cast< std::size_t >( 1) << (std::min)(collisions, static_cast< std::size_t >( BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD)) };
- const std::size_t z = distribution( generator);
- ++collisions;
- for ( std::size_t i = 0; i < z; ++i) {
- cpu_relax();
- }
- } else {
- std::this_thread::yield();
- }
- } else if ( rtm_status::none != (status & rtm_status::explicit_abort) &&
- rtm_status::none == (status & rtm_status::nested_abort) ) {
- // another logical processor has acquired the lock and
- // abort was not caused by a nested transaction
- // wait till lock becomes free again
- std::size_t count = 0;
- while ( spinlock_status::locked == splk_.state_.load( std::memory_order_relaxed) ) {
- if ( BOOST_FIBERS_SPIN_BEFORE_SLEEP0 > count) {
- ++count;
- cpu_relax();
- } else if ( BOOST_FIBERS_SPIN_BEFORE_YIELD > count) {
- ++count;
- static constexpr std::chrono::microseconds us0{ 0 };
- std::this_thread::sleep_for( us0);
-#if 0
- using namespace std::chrono_literals;
- std::this_thread::sleep_for( 0ms);
-#endif
- } else {
- std::this_thread::yield();
- }
- }
- } else {
- // transaction aborted due:
- // - internal buffer to track transactional state overflowed
- // - debug exception or breakpoint exception was hit
- // - abort during execution of nested transactions (max nesting limit exceeded)
- // -> use fallback path
- break;
- }
- }
- splk_.lock();
- }
-
- bool try_lock() noexcept {
- if ( rtm_status::success != rtm_begin() ) {
- return false;
- }
-
- // add lock to read-set
- if ( spinlock_status::unlocked != splk_.state_.load( std::memory_order_relaxed) ) {
- // lock was acquired by another thread
- // explicit abort of transaction with abort argument 'lock not free'
- rtm_abort_lock_not_free();
- }
- return true;
- }
-
- void unlock() noexcept {
- if ( spinlock_status::unlocked == splk_.state_.load( std::memory_order_acquire) ) {
- rtm_end();
- } else {
- splk_.unlock();
- }
- }
-};
-
-}}}
-
-#endif // BOOST_FIBERS_SPINLOCK_RTM_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock_status.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock_status.hpp
deleted file mode 100644
index 74f09e4acc..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/spinlock_status.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-// Copyright Oliver Kowalke 2017.
-// 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)
-
-#ifndef BOOST_FIBERS_SPINLOCK_STATUS_H
-#define BOOST_FIBERS_SPINLOCK_STATUS_H
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-enum class spinlock_status {
- locked = 0,
- unlocked
-};
-
-}}}
-
-#endif // BOOST_FIBERS_SPINLOCK_STATUS_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas.hpp
deleted file mode 100644
index f3302ed17e..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-
-// Copyright Oliver Kowalke 2016.
-// 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)
-
-#ifndef BOOST_FIBERS_SPINLOCK_TTAS_H
-#define BOOST_FIBERS_SPINLOCK_TTAS_H
-
-#include <atomic>
-#include <chrono>
-#include <cmath>
-#include <random>
-#include <thread>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/cpu_relax.hpp>
-#include <boost/fiber/detail/spinlock_status.hpp>
-
-// based on informations from:
-// https://software.intel.com/en-us/articles/benefitting-power-and-performance-sleep-loops
-// https://software.intel.com/en-us/articles/long-duration-spin-wait-loops-on-hyper-threading-technology-enabled-intel-processors
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-class spinlock_ttas {
-private:
- template< typename FBSplk >
- friend class spinlock_rtm;
-
- std::atomic< spinlock_status > state_{ spinlock_status::unlocked };
-
-public:
- spinlock_ttas() = default;
-
- spinlock_ttas( spinlock_ttas const&) = delete;
- spinlock_ttas & operator=( spinlock_ttas const&) = delete;
-
- void lock() noexcept {
- static thread_local std::minstd_rand generator{ std::random_device{}() };
- std::size_t collisions = 0 ;
- for (;;) {
- // avoid using multiple pause instructions for a delay of a specific cycle count
- // the delay of cpu_relax() (pause on Intel) depends on the processor family
- // the cycle count can not guaranteed from one system to the next
- // -> check the shared variable 'state_' in between each cpu_relax() to prevent
- // unnecessarily long delays on some systems
- std::size_t retries = 0;
- // test shared variable 'status_'
- // first access to 'state_' -> chache miss
- // sucessive acccess to 'state_' -> cache hit
- // if 'state_' was released by other fiber
- // cached 'state_' is invalidated -> cache miss
- while ( spinlock_status::locked == state_.load( std::memory_order_relaxed) ) {
-#if !defined(BOOST_FIBERS_SPIN_SINGLE_CORE)
- if ( BOOST_FIBERS_SPIN_BEFORE_SLEEP0 > retries) {
- ++retries;
- // give CPU a hint that this thread is in a "spin-wait" loop
- // delays the next instruction's execution for a finite period of time (depends on processor family)
- // the CPU is not under demand, parts of the pipeline are no longer being used
- // -> reduces the power consumed by the CPU
- // -> prevent pipeline stalls
- cpu_relax();
- } else if ( BOOST_FIBERS_SPIN_BEFORE_YIELD > retries) {
- // std::this_thread::sleep_for( 0us) has a fairly long instruction path length,
- // combined with an expensive ring3 to ring 0 transition costing about 1000 cycles
- // std::this_thread::sleep_for( 0us) lets give up this_thread the remaining part of its time slice
- // if and only if a thread of equal or greater priority is ready to run
- static constexpr std::chrono::microseconds us0{ 0 };
- std::this_thread::sleep_for( us0);
- } else {
- // std::this_thread::yield() allows this_thread to give up the remaining part of its time slice,
- // but only to another thread on the same processor
- // instead of constant checking, a thread only checks if no other useful work is pending
- std::this_thread::yield();
- }
-#else
- std::this_thread::yield();
-#endif
- }
- // test-and-set shared variable 'status_'
- // everytime 'status_' is signaled over the bus, even if the test failes
- if ( spinlock_status::locked == state_.exchange( spinlock_status::locked, std::memory_order_acquire) ) {
- // spinlock now contended
- // utilize 'Binary Exponential Backoff' algorithm
- // linear_congruential_engine is a random number engine based on Linear congruential generator (LCG)
- std::uniform_int_distribution< std::size_t > distribution{
- 0, static_cast< std::size_t >( 1) << (std::min)(collisions, static_cast< std::size_t >( BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD)) };
- const std::size_t z = distribution( generator);
- ++collisions;
- for ( std::size_t i = 0; i < z; ++i) {
- // -> reduces the power consumed by the CPU
- // -> prevent pipeline stalls
- cpu_relax();
- }
- } else {
- // success, thread has acquired the lock
- break;
- }
- }
- }
-
- bool try_lock() noexcept {
- return spinlock_status::unlocked == state_.exchange( spinlock_status::locked, std::memory_order_acquire);
- }
-
- void unlock() noexcept {
- state_.store( spinlock_status::unlocked, std::memory_order_release);
- }
-};
-
-}}}
-
-#endif // BOOST_FIBERS_SPINLOCK_TTAS_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive.hpp
deleted file mode 100644
index d1f8b73cf3..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive.hpp
+++ /dev/null
@@ -1,124 +0,0 @@
-
-// Copyright Oliver Kowalke 2016.
-// 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)
-
-#ifndef BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_H
-#define BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_H
-
-#include <atomic>
-#include <chrono>
-#include <cmath>
-#include <random>
-#include <thread>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/cpu_relax.hpp>
-#include <boost/fiber/detail/spinlock_status.hpp>
-
-// based on informations from:
-// https://software.intel.com/en-us/articles/benefitting-power-and-performance-sleep-loops
-// https://software.intel.com/en-us/articles/long-duration-spin-wait-loops-on-hyper-threading-technology-enabled-intel-processors
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-class spinlock_ttas_adaptive {
-private:
- template< typename FBSplk >
- friend class spinlock_rtm;
-
- std::atomic< spinlock_status > state_{ spinlock_status::unlocked };
- std::atomic< std::size_t > retries_{ 0 };
-
-public:
- spinlock_ttas_adaptive() = default;
-
- spinlock_ttas_adaptive( spinlock_ttas_adaptive const&) = delete;
- spinlock_ttas_adaptive & operator=( spinlock_ttas_adaptive const&) = delete;
-
- void lock() noexcept {
- static thread_local std::minstd_rand generator{ std::random_device{}() };
- std::size_t collisions = 0 ;
- for (;;) {
- std::size_t retries = 0;
- const std::size_t prev_retries = retries_.load( std::memory_order_relaxed);
- const std::size_t max_relax_retries = (std::min)(
- static_cast< std::size_t >( BOOST_FIBERS_SPIN_BEFORE_SLEEP0), 2 * prev_retries + 10);
- const std::size_t max_sleep_retries = (std::min)(
- static_cast< std::size_t >( BOOST_FIBERS_SPIN_BEFORE_YIELD), 2 * prev_retries + 10);
- // avoid using multiple pause instructions for a delay of a specific cycle count
- // the delay of cpu_relax() (pause on Intel) depends on the processor family
- // the cycle count can not guaranteed from one system to the next
- // -> check the shared variable 'state_' in between each cpu_relax() to prevent
- // unnecessarily long delays on some systems
- // test shared variable 'status_'
- // first access to 'state_' -> chache miss
- // sucessive acccess to 'state_' -> cache hit
- // if 'state_' was released by other fiber
- // cached 'state_' is invalidated -> cache miss
- while ( spinlock_status::locked == state_.load( std::memory_order_relaxed) ) {
-#if !defined(BOOST_FIBERS_SPIN_SINGLE_CORE)
- if ( max_relax_retries > retries) {
- ++retries;
- // give CPU a hint that this thread is in a "spin-wait" loop
- // delays the next instruction's execution for a finite period of time (depends on processor family)
- // the CPU is not under demand, parts of the pipeline are no longer being used
- // -> reduces the power consumed by the CPU
- // -> prevent pipeline stalls
- cpu_relax();
- } else if ( max_sleep_retries > retries) {
- ++retries;
- // std::this_thread::sleep_for( 0us) has a fairly long instruction path length,
- // combined with an expensive ring3 to ring 0 transition costing about 1000 cycles
- // std::this_thread::sleep_for( 0us) lets give up this_thread the remaining part of its time slice
- // if and only if a thread of equal or greater priority is ready to run
- static constexpr std::chrono::microseconds us0{ 0 };
- std::this_thread::sleep_for( us0);
- } else {
- // std::this_thread::yield() allows this_thread to give up the remaining part of its time slice,
- // but only to another thread on the same processor
- // instead of constant checking, a thread only checks if no other useful work is pending
- std::this_thread::yield();
- }
-#else
- std::this_thread::yield();
-#endif
- }
- // test-and-set shared variable 'status_'
- // everytime 'status_' is signaled over the bus, even if the test failes
- if ( spinlock_status::locked == state_.exchange( spinlock_status::locked, std::memory_order_acquire) ) {
- // spinlock now contended
- // utilize 'Binary Exponential Backoff' algorithm
- // linear_congruential_engine is a random number engine based on Linear congruential generator (LCG)
- std::uniform_int_distribution< std::size_t > distribution{
- 0, static_cast< std::size_t >( 1) << (std::min)(collisions, static_cast< std::size_t >( BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD)) };
- const std::size_t z = distribution( generator);
- ++collisions;
- for ( std::size_t i = 0; i < z; ++i) {
- // -> reduces the power consumed by the CPU
- // -> prevent pipeline stalls
- cpu_relax();
- }
- } else {
- retries_.store( prev_retries + (retries - prev_retries) / 8, std::memory_order_relaxed);
- // success, thread has acquired the lock
- break;
- }
- }
- }
-
- bool try_lock() noexcept {
- return spinlock_status::unlocked == state_.exchange( spinlock_status::locked, std::memory_order_acquire);
- }
-
- void unlock() noexcept {
- state_.store( spinlock_status::unlocked, std::memory_order_release);
- }
-};
-
-}}}
-
-#endif // BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp
deleted file mode 100644
index 0f0b191e67..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_adaptive_futex.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-
-// Copyright Oliver Kowalke 2016.
-// 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)
-
-#ifndef BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_FUTEX_H
-#define BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_FUTEX_H
-
-#include <atomic>
-#include <cmath>
-#include <random>
-#include <thread>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/cpu_relax.hpp>
-#include <boost/fiber/detail/futex.hpp>
-
-// based on informations from:
-// https://software.intel.com/en-us/articles/benefitting-power-and-performance-sleep-loops
-// https://software.intel.com/en-us/articles/long-duration-spin-wait-loops-on-hyper-threading-technology-enabled-intel-processors
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-class spinlock_ttas_adaptive_futex {
-private:
- template< typename FBSplk >
- friend class spinlock_rtm;
-
- std::atomic< std::int32_t > value_{ 0 };
- std::atomic< std::int32_t > retries_{ 0 };
-
-public:
- spinlock_ttas_adaptive_futex() = default;
-
- spinlock_ttas_adaptive_futex( spinlock_ttas_adaptive_futex const&) = delete;
- spinlock_ttas_adaptive_futex & operator=( spinlock_ttas_adaptive_futex const&) = delete;
-
- void lock() noexcept {
- static thread_local std::minstd_rand generator{ std::random_device{}() };
- std::int32_t collisions = 0, retries = 0, expected = 0;
- const std::int32_t prev_retries = retries_.load( std::memory_order_relaxed);
- const std::int32_t max_relax_retries = (std::min)(
- static_cast< std::int32_t >( BOOST_FIBERS_SPIN_BEFORE_SLEEP0), 2 * prev_retries + 10);
- const std::int32_t max_sleep_retries = (std::min)(
- static_cast< std::int32_t >( BOOST_FIBERS_SPIN_BEFORE_YIELD), 2 * prev_retries + 10);
- // after max. spins or collisions suspend via futex
- while ( retries++ < BOOST_FIBERS_RETRY_THRESHOLD) {
- // avoid using multiple pause instructions for a delay of a specific cycle count
- // the delay of cpu_relax() (pause on Intel) depends on the processor family
- // the cycle count can not guaranteed from one system to the next
- // -> check the shared variable 'value_' in between each cpu_relax() to prevent
- // unnecessarily long delays on some systems
- // test shared variable 'status_'
- // first access to 'value_' -> chache miss
- // sucessive acccess to 'value_' -> cache hit
- // if 'value_' was released by other fiber
- // cached 'value_' is invalidated -> cache miss
- if ( 0 != ( expected = value_.load( std::memory_order_relaxed) ) ) {
-#if !defined(BOOST_FIBERS_SPIN_SINGLE_CORE)
- if ( max_relax_retries > retries) {
- // give CPU a hint that this thread is in a "spin-wait" loop
- // delays the next instruction's execution for a finite period of time (depends on processor family)
- // the CPU is not under demand, parts of the pipeline are no longer being used
- // -> reduces the power consumed by the CPU
- // -> prevent pipeline stalls
- cpu_relax();
- } else if ( max_sleep_retries > retries) {
- // std::this_thread::sleep_for( 0us) has a fairly long instruction path length,
- // combined with an expensive ring3 to ring 0 transition costing about 1000 cycles
- // std::this_thread::sleep_for( 0us) lets give up this_thread the remaining part of its time slice
- // if and only if a thread of equal or greater priority is ready to run
- static constexpr std::chrono::microseconds us0{ 0 };
- std::this_thread::sleep_for( us0);
- } else {
- // std::this_thread::yield() allows this_thread to give up the remaining part of its time slice,
- // but only to another thread on the same processor
- // instead of constant checking, a thread only checks if no other useful work is pending
- std::this_thread::yield();
- }
-#else
- // std::this_thread::yield() allows this_thread to give up the remaining part of its time slice,
- // but only to another thread on the same processor
- // instead of constant checking, a thread only checks if no other useful work is pending
- std::this_thread::yield();
-#endif
- } else if ( ! value_.compare_exchange_strong( expected, 1, std::memory_order_acquire) ) {
- // spinlock now contended
- // utilize 'Binary Exponential Backoff' algorithm
- // linear_congruential_engine is a random number engine based on Linear congruential generator (LCG)
- std::uniform_int_distribution< std::int32_t > distribution{
- 0, static_cast< std::int32_t >( 1) << (std::min)(collisions, static_cast< std::int32_t >( BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD)) };
- const std::int32_t z = distribution( generator);
- ++collisions;
- for ( std::int32_t i = 0; i < z; ++i) {
- // -> reduces the power consumed by the CPU
- // -> prevent pipeline stalls
- cpu_relax();
- }
- } else {
- // success, lock acquired
- retries_.store( prev_retries + (retries - prev_retries) / 8, std::memory_order_relaxed);
- return;
- }
- }
- // failure, lock not acquired
- // pause via futex
- if ( 2 != expected) {
- expected = value_.exchange( 2, std::memory_order_acquire);
- }
- while ( 0 != expected) {
- futex_wait( & value_, 2);
- expected = value_.exchange( 2, std::memory_order_acquire);
- }
- // success, lock acquired
- retries_.store( prev_retries + (retries - prev_retries) / 8, std::memory_order_relaxed);
- }
-
- bool try_lock() noexcept {
- std::int32_t expected = 0;
- return value_.compare_exchange_strong( expected, 1, std::memory_order_acquire);
- }
-
- void unlock() noexcept {
- if ( 1 != value_.fetch_sub( 1, std::memory_order_acquire) ) {
- value_.store( 0, std::memory_order_release);
- futex_wake( & value_);
- }
- }
-};
-
-}}}
-
-#endif // BOOST_FIBERS_SPINLOCK_TTAS_ADAPTIVE_FUTEX_H
diff --git a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_futex.hpp b/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_futex.hpp
deleted file mode 100644
index fd30c4120e..0000000000
--- a/contrib/restricted/boost/boost/fiber/detail/spinlock_ttas_futex.hpp
+++ /dev/null
@@ -1,127 +0,0 @@
-
-// Copyright Oliver Kowalke 2016.
-// 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)
-
-#ifndef BOOST_FIBERS_spinlock_ttas_futex_FUTEX_H
-#define BOOST_FIBERS_spinlock_ttas_futex_FUTEX_H
-
-#include <atomic>
-#include <cmath>
-#include <random>
-#include <thread>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/cpu_relax.hpp>
-#include <boost/fiber/detail/futex.hpp>
-
-// based on informations from:
-// https://software.intel.com/en-us/articles/benefitting-power-and-performance-sleep-loops
-// https://software.intel.com/en-us/articles/long-duration-spin-wait-loops-on-hyper-threading-technology-enabled-intel-processors
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-class spinlock_ttas_futex {
-private:
- template< typename FBSplk >
- friend class spinlock_rtm;
-
- std::atomic< std::int32_t > value_{ 0 };
-
-public:
- spinlock_ttas_futex() = default;
-
- spinlock_ttas_futex( spinlock_ttas_futex const&) = delete;
- spinlock_ttas_futex & operator=( spinlock_ttas_futex const&) = delete;
-
- void lock() noexcept {
- static thread_local std::minstd_rand generator{ std::random_device{}() };
- std::int32_t collisions = 0, retries = 0, expected = 0;
- // after max. spins or collisions suspend via futex
- while ( retries++ < BOOST_FIBERS_RETRY_THRESHOLD) {
- // avoid using multiple pause instructions for a delay of a specific cycle count
- // the delay of cpu_relax() (pause on Intel) depends on the processor family
- // the cycle count can not guaranteed from one system to the next
- // -> check the shared variable 'value_' in between each cpu_relax() to prevent
- // unnecessarily long delays on some systems
- // test shared variable 'status_'
- // first access to 'value_' -> chache miss
- // sucessive acccess to 'value_' -> cache hit
- // if 'value_' was released by other fiber
- // cached 'value_' is invalidated -> cache miss
- if ( 0 != ( expected = value_.load( std::memory_order_relaxed) ) ) {
-#if !defined(BOOST_FIBERS_SPIN_SINGLE_CORE)
- if ( BOOST_FIBERS_SPIN_BEFORE_SLEEP0 > retries) {
- // give CPU a hint that this thread is in a "spin-wait" loop
- // delays the next instruction's execution for a finite period of time (depends on processor family)
- // the CPU is not under demand, parts of the pipeline are no longer being used
- // -> reduces the power consumed by the CPU
- // -> prevent pipeline stalls
- cpu_relax();
- } else if ( BOOST_FIBERS_SPIN_BEFORE_YIELD > retries) {
- // std::this_thread::sleep_for( 0us) has a fairly long instruction path length,
- // combined with an expensive ring3 to ring 0 transition costing about 1000 cycles
- // std::this_thread::sleep_for( 0us) lets give up this_thread the remaining part of its time slice
- // if and only if a thread of equal or greater priority is ready to run
- static constexpr std::chrono::microseconds us0{ 0 };
- std::this_thread::sleep_for( us0);
- } else {
- // std::this_thread::yield() allows this_thread to give up the remaining part of its time slice,
- // but only to another thread on the same processor
- // instead of constant checking, a thread only checks if no other useful work is pending
- std::this_thread::yield();
- }
-#else
- // std::this_thread::yield() allows this_thread to give up the remaining part of its time slice,
- // but only to another thread on the same processor
- // instead of constant checking, a thread only checks if no other useful work is pending
- std::this_thread::yield();
-#endif
- } else if ( ! value_.compare_exchange_strong( expected, 1, std::memory_order_acquire) ) {
- // spinlock now contended
- // utilize 'Binary Exponential Backoff' algorithm
- // linear_congruential_engine is a random number engine based on Linear congruential generator (LCG)
- std::uniform_int_distribution< std::int32_t > distribution{
- 0, static_cast< std::int32_t >( 1) << (std::min)(collisions, static_cast< std::int32_t >( BOOST_FIBERS_CONTENTION_WINDOW_THRESHOLD)) };
- const std::int32_t z = distribution( generator);
- ++collisions;
- for ( std::int32_t i = 0; i < z; ++i) {
- // -> reduces the power consumed by the CPU
- // -> prevent pipeline stalls
- cpu_relax();
- }
- } else {
- // success, lock acquired
- return;
- }
- }
- // failure, lock not acquired
- // pause via futex
- if ( 2 != expected) {
- expected = value_.exchange( 2, std::memory_order_acquire);
- }
- while ( 0 != expected) {
- futex_wait( & value_, 2);
- expected = value_.exchange( 2, std::memory_order_acquire);
- }
- }
-
- bool try_lock() noexcept {
- std::int32_t expected = 0;
- return value_.compare_exchange_strong( expected, 1, std::memory_order_acquire);
- }
-
- void unlock() noexcept {
- if ( 1 != value_.fetch_sub( 1, std::memory_order_acquire) ) {
- value_.store( 0, std::memory_order_release);
- futex_wake( & value_);
- }
- }
-};
-
-}}}
-
-#endif // BOOST_FIBERS_spinlock_ttas_futex_FUTEX_H
diff --git a/contrib/restricted/boost/boost/fiber/exceptions.hpp b/contrib/restricted/boost/boost/fiber/exceptions.hpp
deleted file mode 100644
index 5a5f7e4f1b..0000000000
--- a/contrib/restricted/boost/boost/fiber/exceptions.hpp
+++ /dev/null
@@ -1,148 +0,0 @@
-//
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-// based on boost.thread
-
-#ifndef BOOST_fiber_errorS_H
-#define BOOST_fiber_errorS_H
-
-#include <future>
-#include <stdexcept>
-#include <string>
-#include <system_error>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-class fiber_error : public std::system_error {
-public:
- fiber_error( std::error_code ec) :
- std::system_error{ ec } {
- }
-
- fiber_error( std::error_code ec, const char * what_arg) :
- std::system_error{ ec, what_arg } {
- }
-
- fiber_error( std::error_code ec, std::string const& what_arg) :
- std::system_error{ ec, what_arg } {
- }
-
- virtual ~fiber_error() = default;
-};
-
-class lock_error : public fiber_error {
-public:
- lock_error( std::error_code ec) :
- fiber_error{ ec } {
- }
-
- lock_error( std::error_code ec, const char * what_arg) :
- fiber_error{ ec, what_arg } {
- }
-
- lock_error( std::error_code ec, std::string const& what_arg) :
- fiber_error{ ec, what_arg } {
- }
-};
-
-enum class future_errc {
- broken_promise = 1,
- future_already_retrieved,
- promise_already_satisfied,
- no_state
-};
-
-BOOST_FIBERS_DECL
-std::error_category const& future_category() noexcept;
-
-}}
-
-namespace std {
-
-template<>
-struct is_error_code_enum< boost::fibers::future_errc > : public true_type {
-};
-
-inline
-std::error_code make_error_code( boost::fibers::future_errc e) noexcept {
- return std::error_code{ static_cast< int >( e), boost::fibers::future_category() };
-}
-
-inline
-std::error_condition make_error_condition( boost::fibers::future_errc e) noexcept {
- return std::error_condition{ static_cast< int >( e), boost::fibers::future_category() };
-}
-
-}
-
-namespace boost {
-namespace fibers {
-
-class future_error : public fiber_error {
-public:
- future_error( std::error_code ec) :
- fiber_error{ ec } {
- }
-};
-
-class future_uninitialized : public future_error {
-public:
- future_uninitialized() :
- future_error{ std::make_error_code( future_errc::no_state) } {
- }
-};
-
-class future_already_retrieved : public future_error {
-public:
- future_already_retrieved() :
- future_error{ std::make_error_code( future_errc::future_already_retrieved) } {
- }
-};
-
-class broken_promise : public future_error {
-public:
- broken_promise() :
- future_error{ std::make_error_code( future_errc::broken_promise) } {
- }
-};
-
-class promise_already_satisfied : public future_error {
-public:
- promise_already_satisfied() :
- future_error{ std::make_error_code( future_errc::promise_already_satisfied) } {
- }
-};
-
-class promise_uninitialized : public future_error {
-public:
- promise_uninitialized() :
- future_error{ std::make_error_code( future_errc::no_state) } {
- }
-};
-
-class packaged_task_uninitialized : public future_error {
-public:
- packaged_task_uninitialized() :
- future_error{ std::make_error_code( future_errc::no_state) } {
- }
-};
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_fiber_errorS_H
diff --git a/contrib/restricted/boost/boost/fiber/fiber.hpp b/contrib/restricted/boost/boost/fiber/fiber.hpp
deleted file mode 100644
index c2d5916305..0000000000
--- a/contrib/restricted/boost/boost/fiber/fiber.hpp
+++ /dev/null
@@ -1,181 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_FIBER_H
-#define BOOST_FIBERS_FIBER_H
-
-#include <algorithm>
-#include <exception>
-#include <memory>
-#include <utility>
-
-#include <boost/assert.hpp>
-#include <boost/config.hpp>
-#include <boost/intrusive_ptr.hpp>
-#include <boost/predef.h>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/disable_overload.hpp>
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/fixedsize_stack.hpp>
-#include <boost/fiber/policy.hpp>
-#include <boost/fiber/properties.hpp>
-#include <boost/fiber/segmented_stack.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4251)
-#endif
-
-namespace boost {
-namespace fibers {
-
-class BOOST_FIBERS_DECL fiber {
-private:
- friend class context;
-
- typedef intrusive_ptr< context > ptr_t;
-
- ptr_t impl_{};
-
- void start_() noexcept;
-
-public:
- typedef context::id id;
-
- fiber() = default;
-
- template< typename Fn,
- typename ... Arg,
- typename = detail::disable_overload< fiber, Fn >,
- typename = detail::disable_overload< launch, Fn >,
- typename = detail::disable_overload< std::allocator_arg_t, Fn >
- >
-#if BOOST_COMP_GNUC < 50000000
- fiber( Fn && fn, Arg && ... arg) :
-#else
- fiber( Fn && fn, Arg ... arg) :
-#endif
- fiber{ launch::post,
- std::allocator_arg, default_stack(),
- std::forward< Fn >( fn), std::forward< Arg >( arg) ... } {
- }
-
- template< typename Fn,
- typename ... Arg,
- typename = detail::disable_overload< fiber, Fn >
- >
-#if BOOST_COMP_GNUC < 50000000
- fiber( launch policy, Fn && fn, Arg && ... arg) :
-#else
- fiber( launch policy, Fn && fn, Arg ... arg) :
-#endif
- fiber{ policy,
- std::allocator_arg, default_stack(),
- std::forward< Fn >( fn), std::forward< Arg >( arg) ... } {
- }
-
- template< typename StackAllocator,
- typename Fn,
- typename ... Arg
- >
-#if BOOST_COMP_GNUC < 50000000
- fiber( std::allocator_arg_t, StackAllocator && salloc, Fn && fn, Arg && ... arg) :
-#else
- fiber( std::allocator_arg_t, StackAllocator && salloc, Fn && fn, Arg ... arg) :
-#endif
- fiber{ launch::post,
- std::allocator_arg, std::forward< StackAllocator >( salloc),
- std::forward< Fn >( fn), std::forward< Arg >( arg) ... } {
- }
-
- template< typename StackAllocator,
- typename Fn,
- typename ... Arg
- >
-#if BOOST_COMP_GNUC < 50000000
- fiber( launch policy, std::allocator_arg_t, StackAllocator && salloc, Fn && fn, Arg && ... arg) :
-#else
- fiber( launch policy, std::allocator_arg_t, StackAllocator && salloc, Fn && fn, Arg ... arg) :
-#endif
- impl_{ make_worker_context( policy, std::forward< StackAllocator >( salloc), std::forward< Fn >( fn), std::forward< Arg >( arg) ... ) } {
- start_();
- }
-
- ~fiber() {
- if ( joinable() ) {
- std::terminate();
- }
- }
-
- fiber( fiber const&) = delete;
- fiber & operator=( fiber const&) = delete;
-
- fiber( fiber && other) noexcept :
- impl_{} {
- swap( other);
- }
-
- fiber & operator=( fiber && other) noexcept {
- if ( joinable() ) {
- std::terminate();
- }
- if ( BOOST_UNLIKELY( this == & other) ) {
- return * this;
- }
- impl_.swap( other.impl_);
- return * this;
- }
-
- void swap( fiber & other) noexcept {
- impl_.swap( other.impl_);
- }
-
- id get_id() const noexcept {
- return impl_ ? impl_->get_id() : id();
- }
-
- bool joinable() const noexcept {
- return nullptr != impl_;
- }
-
- void join();
-
- void detach();
-
- template< typename PROPS >
- PROPS & properties() {
- auto props = impl_->get_properties();
- BOOST_ASSERT_MSG( props, "fiber::properties not set");
- return dynamic_cast< PROPS & >( * props );
- }
-};
-
-inline
-bool operator<( fiber const& l, fiber const& r) noexcept {
- return l.get_id() < r.get_id();
-}
-
-inline
-void swap( fiber & l, fiber & r) noexcept {
- return l.swap( r);
-}
-
-}}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_FIBER_H
diff --git a/contrib/restricted/boost/boost/fiber/fixedsize_stack.hpp b/contrib/restricted/boost/boost/fiber/fixedsize_stack.hpp
deleted file mode 100644
index f3ed4d45fb..0000000000
--- a/contrib/restricted/boost/boost/fiber/fixedsize_stack.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-
-// Copyright Oliver Kowalke 2014.
-// 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)
-
-#ifndef BOOST_FIBERS_FIXEDSIZE_STACK_H
-#define BOOST_FIBERS_FIXEDSIZE_STACK_H
-
-#include <boost/config.hpp>
-#include <boost/context/fixedsize_stack.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-using fixedsize_stack = boost::context::fixedsize_stack;
-#if !defined(BOOST_USE_SEGMENTED_STACKS)
-using default_stack = boost::context::default_stack;
-#endif
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_FIXEDSIZE_STACK_H
diff --git a/contrib/restricted/boost/boost/fiber/fss.hpp b/contrib/restricted/boost/boost/fiber/fss.hpp
deleted file mode 100644
index 0a321bb661..0000000000
--- a/contrib/restricted/boost/boost/fiber/fss.hpp
+++ /dev/null
@@ -1,107 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-//
-// based on tss.hpp from boost.thread
-
-#ifndef BOOST_FIBERS_FSS_H
-#define BOOST_FIBERS_FSS_H
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/fss.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-template< typename T >
-class fiber_specific_ptr {
-private:
- struct default_cleanup_function : public detail::fss_cleanup_function {
- void operator()( void * data) noexcept {
- delete static_cast< T * >( data);
- }
- };
-
- struct custom_cleanup_function : public detail::fss_cleanup_function {
- void (*fn)(T*);
-
- explicit custom_cleanup_function( void(*fn_)(T*) ) noexcept :
- fn{ fn_ } {
- }
-
- void operator()( void * data) {
- if ( BOOST_LIKELY( nullptr != fn) ) {
- fn( static_cast< T * >( data) );
- }
- }
- };
-
- detail::fss_cleanup_function::ptr_t cleanup_fn_;
-
-public:
- typedef T element_type;
-
- fiber_specific_ptr() :
- cleanup_fn_{ new default_cleanup_function() } {
- }
-
- explicit fiber_specific_ptr( void(*fn)(T*) ) :
- cleanup_fn_{ new custom_cleanup_function( fn) } {
- }
-
- ~fiber_specific_ptr() {
- context * active_ctx = context::active();
- if ( nullptr != active_ctx) {
- active_ctx->set_fss_data(
- this, cleanup_fn_, nullptr, true);
- }
- }
-
- fiber_specific_ptr( fiber_specific_ptr const&) = delete;
- fiber_specific_ptr & operator=( fiber_specific_ptr const&) = delete;
-
- T * get() const noexcept {
- BOOST_ASSERT( context::active() );
- void * vp = context::active()->get_fss_data( this);
- return static_cast< T * >( vp);
- }
-
- T * operator->() const noexcept {
- return get();
- }
-
- T & operator*() const noexcept {
- return * get();
- }
-
- T * release() {
- T * tmp = get();
- context::active()->set_fss_data(
- this, cleanup_fn_, nullptr, false);
- return tmp;
- }
-
- void reset( T * t) {
- T * c = get();
- if ( BOOST_LIKELY( c != t) ) {
- context::active()->set_fss_data(
- this, cleanup_fn_, t, true);
- }
- }
-};
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_FSS_H
diff --git a/contrib/restricted/boost/boost/fiber/future.hpp b/contrib/restricted/boost/boost/fiber/future.hpp
deleted file mode 100644
index 2e5d3b7744..0000000000
--- a/contrib/restricted/boost/boost/fiber/future.hpp
+++ /dev/null
@@ -1,10 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#include <boost/fiber/future/async.hpp>
-#include <boost/fiber/future/future.hpp>
-#include <boost/fiber/future/packaged_task.hpp>
-#include <boost/fiber/future/promise.hpp>
diff --git a/contrib/restricted/boost/boost/fiber/future/async.hpp b/contrib/restricted/boost/boost/fiber/future/async.hpp
deleted file mode 100644
index 9601e8cdfe..0000000000
--- a/contrib/restricted/boost/boost/fiber/future/async.hpp
+++ /dev/null
@@ -1,112 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_ASYNC_HPP
-#define BOOST_FIBERS_ASYNC_HPP
-
-#include <algorithm>
-#include <memory>
-#include <type_traits>
-#include <utility>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/future/future.hpp>
-#include <boost/fiber/future/packaged_task.hpp>
-#include <boost/fiber/policy.hpp>
-
-namespace boost {
-namespace fibers {
-
-template< typename Fn, typename ... Args >
-future<
- typename std::result_of<
- typename std::enable_if<
- ! detail::is_launch_policy< typename std::decay< Fn >::type >::value,
- typename std::decay< Fn >::type
- >::type( typename std::decay< Args >::type ... )
- >::type
->
-async( Fn && fn, Args ... args) {
- typedef typename std::result_of<
- typename std::decay< Fn >::type( typename std::decay< Args >::type ... )
- >::type result_type;
-
- packaged_task< result_type( typename std::decay< Args >::type ... ) > pt{
- std::forward< Fn >( fn) };
- future< result_type > f{ pt.get_future() };
- fiber{ std::move( pt), std::forward< Args >( args) ... }.detach();
- return f;
-}
-
-template< typename Policy, typename Fn, typename ... Args >
-future<
- typename std::result_of<
- typename std::enable_if<
- detail::is_launch_policy< Policy >::value,
- typename std::decay< Fn >::type
- >::type( typename std::decay< Args >::type ...)
- >::type
->
-async( Policy policy, Fn && fn, Args ... args) {
- typedef typename std::result_of<
- typename std::decay< Fn >::type( typename std::decay< Args >::type ... )
- >::type result_type;
-
- packaged_task< result_type( typename std::decay< Args >::type ... ) > pt{
- std::forward< Fn >( fn) };
- future< result_type > f{ pt.get_future() };
- fiber{ policy, std::move( pt), std::forward< Args >( args) ... }.detach();
- return f;
-}
-
-template< typename Policy, typename StackAllocator, typename Fn, typename ... Args >
-future<
- typename std::result_of<
- typename std::enable_if<
- detail::is_launch_policy< Policy >::value,
- typename std::decay< Fn >::type
- >::type( typename std::decay< Args >::type ... )
- >::type
->
-async( Policy policy, std::allocator_arg_t, StackAllocator salloc, Fn && fn, Args ... args) {
- typedef typename std::result_of<
- typename std::decay< Fn >::type( typename std::decay< Args >::type ... )
- >::type result_type;
-
- packaged_task< result_type( typename std::decay< Args >::type ... ) > pt{
- std::forward< Fn >( fn) };
- future< result_type > f{ pt.get_future() };
- fiber{ policy, std::allocator_arg, salloc,
- std::move( pt), std::forward< Args >( args) ... }.detach();
- return f;
-}
-
-template< typename Policy, typename StackAllocator, typename Allocator, typename Fn, typename ... Args >
-future<
- typename std::result_of<
- typename std::enable_if<
- detail::is_launch_policy< Policy >::value,
- typename std::decay< Fn >::type
- >::type( typename std::decay< Args >::type ... )
- >::type
->
-async( Policy policy, std::allocator_arg_t, StackAllocator salloc, Allocator alloc, Fn && fn, Args ... args) {
- typedef typename std::result_of<
- typename std::decay< Fn >::type( typename std::decay< Args >::type ... )
- >::type result_type;
-
- packaged_task< result_type( typename std::decay< Args >::type ... ) > pt{
- std::allocator_arg, alloc, std::forward< Fn >( fn) };
- future< result_type > f{ pt.get_future() };
- fiber{ policy, std::allocator_arg, salloc,
- std::move( pt), std::forward< Args >( args) ... }.detach();
- return f;
-}
-
-}}
-
-#endif // BOOST_FIBERS_ASYNC_HPP
diff --git a/contrib/restricted/boost/boost/fiber/future/detail/shared_state.hpp b/contrib/restricted/boost/boost/fiber/future/detail/shared_state.hpp
deleted file mode 100644
index 28e0e3cfb9..0000000000
--- a/contrib/restricted/boost/boost/fiber/future/detail/shared_state.hpp
+++ /dev/null
@@ -1,313 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_DETAIL_SHARED_STATE_H
-#define BOOST_FIBERS_DETAIL_SHARED_STATE_H
-
-#include <algorithm>
-#include <atomic>
-#include <chrono>
-#include <cstddef>
-#include <exception>
-#include <memory>
-#include <mutex>
-#include <type_traits>
-
-#include <boost/assert.hpp>
-#include <boost/config.hpp>
-#include <boost/intrusive_ptr.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/future/future_status.hpp>
-#include <boost/fiber/condition_variable.hpp>
-#include <boost/fiber/exceptions.hpp>
-#include <boost/fiber/mutex.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-class shared_state_base {
-private:
- std::atomic< std::size_t > use_count_{ 0 };
- mutable condition_variable waiters_{};
-
-protected:
- mutable mutex mtx_{};
- bool ready_{ false };
- std::exception_ptr except_{};
-
- void mark_ready_and_notify_( std::unique_lock< mutex > & lk) noexcept {
- BOOST_ASSERT( lk.owns_lock() );
- ready_ = true;
- lk.unlock();
- waiters_.notify_all();
- }
-
- void owner_destroyed_( std::unique_lock< mutex > & lk) {
- BOOST_ASSERT( lk.owns_lock() );
- if ( ! ready_) {
- set_exception_(
- std::make_exception_ptr( broken_promise() ),
- lk);
- }
- }
-
- void set_exception_( std::exception_ptr except, std::unique_lock< mutex > & lk) {
- BOOST_ASSERT( lk.owns_lock() );
- if ( BOOST_UNLIKELY( ready_) ) {
- throw promise_already_satisfied();
- }
- except_ = except;
- mark_ready_and_notify_( lk);
- }
-
- std::exception_ptr get_exception_ptr_( std::unique_lock< mutex > & lk) {
- BOOST_ASSERT( lk.owns_lock() );
- wait_( lk);
- return except_;
- }
-
- void wait_( std::unique_lock< mutex > & lk) const {
- BOOST_ASSERT( lk.owns_lock() );
- waiters_.wait( lk, [this](){ return ready_; });
- }
-
- template< typename Rep, typename Period >
- future_status wait_for_( std::unique_lock< mutex > & lk,
- std::chrono::duration< Rep, Period > const& timeout_duration) const {
- BOOST_ASSERT( lk.owns_lock() );
- return waiters_.wait_for( lk, timeout_duration, [this](){ return ready_; })
- ? future_status::ready
- : future_status::timeout;
- }
-
- template< typename Clock, typename Duration >
- future_status wait_until_( std::unique_lock< mutex > & lk,
- std::chrono::time_point< Clock, Duration > const& timeout_time) const {
- BOOST_ASSERT( lk.owns_lock() );
- return waiters_.wait_until( lk, timeout_time, [this](){ return ready_; })
- ? future_status::ready
- : future_status::timeout;
- }
-
- virtual void deallocate_future() noexcept = 0;
-
-public:
- shared_state_base() = default;
-
- virtual ~shared_state_base() = default;
-
- shared_state_base( shared_state_base const&) = delete;
- shared_state_base & operator=( shared_state_base const&) = delete;
-
- void owner_destroyed() {
- std::unique_lock< mutex > lk{ mtx_ };
- owner_destroyed_( lk);
- }
-
- void set_exception( std::exception_ptr except) {
- std::unique_lock< mutex > lk{ mtx_ };
- set_exception_( except, lk);
- }
-
- std::exception_ptr get_exception_ptr() {
- std::unique_lock< mutex > lk{ mtx_ };
- return get_exception_ptr_( lk);
- }
-
- void wait() const {
- std::unique_lock< mutex > lk{ mtx_ };
- wait_( lk);
- }
-
- template< typename Rep, typename Period >
- future_status wait_for( std::chrono::duration< Rep, Period > const& timeout_duration) const {
- std::unique_lock< mutex > lk{ mtx_ };
- return wait_for_( lk, timeout_duration);
- }
-
- template< typename Clock, typename Duration >
- future_status wait_until( std::chrono::time_point< Clock, Duration > const& timeout_time) const {
- std::unique_lock< mutex > lk{ mtx_ };
- return wait_until_( lk, timeout_time);
- }
-
- friend inline
- void intrusive_ptr_add_ref( shared_state_base * p) noexcept {
- p->use_count_.fetch_add( 1, std::memory_order_relaxed);
- }
-
- friend inline
- void intrusive_ptr_release( shared_state_base * p) noexcept {
- if ( 1 == p->use_count_.fetch_sub( 1, std::memory_order_release) ) {
- std::atomic_thread_fence( std::memory_order_acquire);
- p->deallocate_future();
- }
- }
-};
-
-template< typename R >
-class shared_state : public shared_state_base {
-private:
- typename std::aligned_storage< sizeof( R), alignof( R) >::type storage_{};
-
- void set_value_( R const& value, std::unique_lock< mutex > & lk) {
- BOOST_ASSERT( lk.owns_lock() );
- if ( BOOST_UNLIKELY( ready_) ) {
- throw promise_already_satisfied{};
- }
- ::new ( static_cast< void * >( std::addressof( storage_) ) ) R( value );
- mark_ready_and_notify_( lk);
- }
-
- void set_value_( R && value, std::unique_lock< mutex > & lk) {
- BOOST_ASSERT( lk.owns_lock() );
- if ( BOOST_UNLIKELY( ready_) ) {
- throw promise_already_satisfied{};
- }
- ::new ( static_cast< void * >( std::addressof( storage_) ) ) R( std::move( value) );
- mark_ready_and_notify_( lk);
- }
-
- R & get_( std::unique_lock< mutex > & lk) {
- BOOST_ASSERT( lk.owns_lock() );
- wait_( lk);
- if ( except_) {
- std::rethrow_exception( except_);
- }
- return * reinterpret_cast< R * >( std::addressof( storage_) );
- }
-
-public:
- typedef intrusive_ptr< shared_state > ptr_type;
-
- shared_state() = default;
-
- virtual ~shared_state() {
- if ( ready_ && ! except_) {
- reinterpret_cast< R * >( std::addressof( storage_) )->~R();
- }
- }
-
- shared_state( shared_state const&) = delete;
- shared_state & operator=( shared_state const&) = delete;
-
- void set_value( R const& value) {
- std::unique_lock< mutex > lk{ mtx_ };
- set_value_( value, lk);
- }
-
- void set_value( R && value) {
- std::unique_lock< mutex > lk{ mtx_ };
- set_value_( std::move( value), lk);
- }
-
- R & get() {
- std::unique_lock< mutex > lk{ mtx_ };
- return get_( lk);
- }
-};
-
-template< typename R >
-class shared_state< R & > : public shared_state_base {
-private:
- R * value_{ nullptr };
-
- void set_value_( R & value, std::unique_lock< mutex > & lk) {
- BOOST_ASSERT( lk.owns_lock() );
- if ( BOOST_UNLIKELY( ready_) ) {
- throw promise_already_satisfied();
- }
- value_ = std::addressof( value);
- mark_ready_and_notify_( lk);
- }
-
- R & get_( std::unique_lock< mutex > & lk) {
- BOOST_ASSERT( lk.owns_lock() );
- wait_( lk);
- if ( except_) {
- std::rethrow_exception( except_);
- }
- return * value_;
- }
-
-public:
- typedef intrusive_ptr< shared_state > ptr_type;
-
- shared_state() = default;
-
- virtual ~shared_state() = default;
-
- shared_state( shared_state const&) = delete;
- shared_state & operator=( shared_state const&) = delete;
-
- void set_value( R & value) {
- std::unique_lock< mutex > lk{ mtx_ };
- set_value_( value, lk);
- }
-
- R & get() {
- std::unique_lock< mutex > lk{ mtx_ };
- return get_( lk);
- }
-};
-
-template<>
-class shared_state< void > : public shared_state_base {
-private:
- inline
- void set_value_( std::unique_lock< mutex > & lk) {
- BOOST_ASSERT( lk.owns_lock() );
- if ( BOOST_UNLIKELY( ready_) ) {
- throw promise_already_satisfied();
- }
- mark_ready_and_notify_( lk);
- }
-
- inline
- void get_( std::unique_lock< mutex > & lk) {
- BOOST_ASSERT( lk.owns_lock() );
- wait_( lk);
- if ( except_) {
- std::rethrow_exception( except_);
- }
- }
-
-public:
- typedef intrusive_ptr< shared_state > ptr_type;
-
- shared_state() = default;
-
- virtual ~shared_state() = default;
-
- shared_state( shared_state const&) = delete;
- shared_state & operator=( shared_state const&) = delete;
-
- inline
- void set_value() {
- std::unique_lock< mutex > lk{ mtx_ };
- set_value_( lk);
- }
-
- inline
- void get() {
- std::unique_lock< mutex > lk{ mtx_ };
- get_( lk);
- }
-};
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_DETAIL_SHARED_STATE_H
diff --git a/contrib/restricted/boost/boost/fiber/future/detail/shared_state_object.hpp b/contrib/restricted/boost/boost/fiber/future/detail/shared_state_object.hpp
deleted file mode 100644
index 02708dfb0d..0000000000
--- a/contrib/restricted/boost/boost/fiber/future/detail/shared_state_object.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_DETAIL_SHARED_STATE_OBJECT_H
-#define BOOST_FIBERS_DETAIL_SHARED_STATE_OBJECT_H
-
-#include <memory>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/future/detail/shared_state.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-template< typename R, typename Allocator >
-class shared_state_object : public shared_state< R > {
-public:
- typedef typename std::allocator_traits< Allocator >::template rebind_alloc<
- shared_state_object
- > allocator_type;
-
- shared_state_object( allocator_type const& alloc) :
- shared_state< R >{},
- alloc_{ alloc } {
- }
-
-protected:
- void deallocate_future() noexcept override final {
- destroy_( alloc_, this);
- }
-
-private:
- allocator_type alloc_;
-
- static void destroy_( allocator_type const& alloc, shared_state_object * p) noexcept {
- allocator_type a{ alloc };
- typedef std::allocator_traits< allocator_type > traity_type;
- traity_type::destroy( a, p);
- traity_type::deallocate( a, p, 1);
- }
-};
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_DETAIL_SHARED_STATE_OBJECT_H
diff --git a/contrib/restricted/boost/boost/fiber/future/detail/task_base.hpp b/contrib/restricted/boost/boost/fiber/future/detail/task_base.hpp
deleted file mode 100644
index 83abd7e5ab..0000000000
--- a/contrib/restricted/boost/boost/fiber/future/detail/task_base.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_DETAIL_TASK_BASE_H
-#define BOOST_FIBERS_DETAIL_TASK_BASE_H
-
-#include <boost/config.hpp>
-#include <boost/intrusive_ptr.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/future/detail/shared_state.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-template< typename R, typename ... Args >
-struct task_base : public shared_state< R > {
- typedef intrusive_ptr< task_base > ptr_type;
-
- virtual ~task_base() {
- }
-
- virtual void run( Args && ... args) = 0;
-
- virtual ptr_type reset() = 0;
-};
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_DETAIL_TASK_BASE_H
diff --git a/contrib/restricted/boost/boost/fiber/future/detail/task_object.hpp b/contrib/restricted/boost/boost/fiber/future/detail/task_object.hpp
deleted file mode 100644
index e879f8169e..0000000000
--- a/contrib/restricted/boost/boost/fiber/future/detail/task_object.hpp
+++ /dev/null
@@ -1,179 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_DETAIL_TASK_OBJECT_H
-#define BOOST_FIBERS_DETAIL_TASK_OBJECT_H
-
-#include <exception>
-#include <memory>
-#include <tuple>
-#include <utility>
-
-#include <boost/config.hpp>
-#if defined(BOOST_NO_CXX17_STD_APPLY)
-#include <boost/context/detail/apply.hpp>
-#endif
-#include <boost/core/pointer_traits.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/future/detail/task_base.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-template< typename Fn, typename Allocator, typename R, typename ... Args >
-class task_object : public task_base< R, Args ... > {
-private:
- typedef task_base< R, Args ... > base_type;
- typedef std::allocator_traits< Allocator > allocator_traits;
-
-public:
- typedef typename allocator_traits::template rebind_alloc<
- task_object
- > allocator_type;
-
- task_object( allocator_type const& alloc, Fn const& fn) :
- base_type{},
- fn_{ fn },
- alloc_{ alloc } {
- }
-
- task_object( allocator_type const& alloc, Fn && fn) :
- base_type{},
- fn_{ std::move( fn) },
- alloc_{ alloc } {
- }
-
- void run( Args && ... args) override final {
- try {
- this->set_value(
-#if defined(BOOST_NO_CXX17_STD_APPLY)
- boost::context::detail::apply(
- fn_, std::make_tuple( std::forward< Args >( args) ... ) )
-#else
- std::apply(
- fn_, std::make_tuple( std::forward< Args >( args) ... ) )
-#endif
- );
- } catch (...) {
- this->set_exception( std::current_exception() );
- }
- }
-
- typename base_type::ptr_type reset() override final {
- typedef std::allocator_traits< allocator_type > traity_type;
- typedef pointer_traits< typename traity_type::pointer> ptrait_type;
-
- typename traity_type::pointer ptr{ traity_type::allocate( alloc_, 1) };
- typename ptrait_type::element_type* p = boost::to_address(ptr);
- try {
- traity_type::construct( alloc_, p, alloc_, std::move( fn_) );
- } catch (...) {
- traity_type::deallocate( alloc_, ptr, 1);
- throw;
- }
- return { p };
- }
-
-protected:
- void deallocate_future() noexcept override final {
- destroy_( alloc_, this);
- }
-
-private:
- Fn fn_;
- allocator_type alloc_;
-
- static void destroy_( allocator_type const& alloc, task_object * p) noexcept {
- allocator_type a{ alloc };
- typedef std::allocator_traits< allocator_type > traity_type;
- traity_type::destroy( a, p);
- traity_type::deallocate( a, p, 1);
- }
-};
-
-template< typename Fn, typename Allocator, typename ... Args >
-class task_object< Fn, Allocator, void, Args ... > : public task_base< void, Args ... > {
-private:
- typedef task_base< void, Args ... > base_type;
- typedef std::allocator_traits< Allocator > allocator_traits;
-
-public:
- typedef typename allocator_traits::template rebind_alloc<
- task_object< Fn, Allocator, void, Args ... >
- > allocator_type;
-
- task_object( allocator_type const& alloc, Fn const& fn) :
- base_type{},
- fn_{ fn },
- alloc_{ alloc } {
- }
-
- task_object( allocator_type const& alloc, Fn && fn) :
- base_type{},
- fn_{ std::move( fn) },
- alloc_{ alloc } {
- }
-
- void run( Args && ... args) override final {
- try {
-#if defined(BOOST_NO_CXX17_STD_APPLY)
- boost::context::detail::apply(
- fn_, std::make_tuple( std::forward< Args >( args) ... ) );
-#else
- std::apply(
- fn_, std::make_tuple( std::forward< Args >( args) ... ) );
-#endif
- this->set_value();
- } catch (...) {
- this->set_exception( std::current_exception() );
- }
- }
-
- typename base_type::ptr_type reset() override final {
- typedef std::allocator_traits< allocator_type > traity_type;
- typedef pointer_traits< typename traity_type::pointer> ptrait_type;
-
- typename traity_type::pointer ptr{ traity_type::allocate( alloc_, 1) };
- typename ptrait_type::element_type* p = boost::to_address(ptr);
- try {
- traity_type::construct( alloc_, p, alloc_, std::move( fn_) );
- } catch (...) {
- traity_type::deallocate( alloc_, ptr, 1);
- throw;
- }
- return { p };
- }
-
-protected:
- void deallocate_future() noexcept override final {
- destroy_( alloc_, this);
- }
-
-private:
- Fn fn_;
- allocator_type alloc_;
-
- static void destroy_( allocator_type const& alloc, task_object * p) noexcept {
- allocator_type a{ alloc };
- typedef std::allocator_traits< allocator_type > traity_type;
- traity_type::destroy( a, p);
- traity_type::deallocate( a, p, 1);
- }
-};
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_DETAIL_TASK_OBJECT_H
diff --git a/contrib/restricted/boost/boost/fiber/future/future.hpp b/contrib/restricted/boost/boost/fiber/future/future.hpp
deleted file mode 100644
index 2191080d69..0000000000
--- a/contrib/restricted/boost/boost/fiber/future/future.hpp
+++ /dev/null
@@ -1,474 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_FUTURE_HPP
-#define BOOST_FIBERS_FUTURE_HPP
-
-#include <algorithm>
-#include <chrono>
-#include <exception>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/exceptions.hpp>
-#include <boost/fiber/future/detail/shared_state.hpp>
-#include <boost/fiber/future/future_status.hpp>
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-template< typename R >
-struct future_base {
- typedef typename shared_state< R >::ptr_type ptr_type;
-
- ptr_type state_{};
-
- future_base() = default;
-
- explicit future_base( ptr_type const& p) noexcept :
- state_{ p } {
- }
-
- ~future_base() = default;
-
- future_base( future_base const& other) :
- state_{ other.state_ } {
- }
-
- future_base( future_base && other) noexcept :
- state_{ other.state_ } {
- other.state_.reset();
- }
-
- future_base & operator=( future_base const& other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- state_ = other.state_;
- }
- return * this;
- }
-
- future_base & operator=( future_base && other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- state_ = other.state_;
- other.state_.reset();
- }
- return * this;
- }
-
- bool valid() const noexcept {
- return nullptr != state_.get();
- }
-
- std::exception_ptr get_exception_ptr() {
- if ( BOOST_UNLIKELY( ! valid() ) ) {
- throw future_uninitialized{};
- }
- return state_->get_exception_ptr();
- }
-
- void wait() const {
- if ( BOOST_UNLIKELY( ! valid() ) ) {
- throw future_uninitialized{};
- }
- state_->wait();
- }
-
- template< typename Rep, typename Period >
- future_status wait_for( std::chrono::duration< Rep, Period > const& timeout_duration) const {
- if ( BOOST_UNLIKELY( ! valid() ) ) {
- throw future_uninitialized{};
- }
- return state_->wait_for( timeout_duration);
- }
-
- template< typename Clock, typename Duration >
- future_status wait_until( std::chrono::time_point< Clock, Duration > const& timeout_time) const {
- if ( BOOST_UNLIKELY( ! valid() ) ) {
- throw future_uninitialized{};
- }
- return state_->wait_until( timeout_time);
- }
-};
-
-template< typename R >
-struct promise_base;
-
-}
-
-template< typename R >
-class shared_future;
-
-template< typename Signature >
-class packaged_task;
-
-template< typename R >
-class future : private detail::future_base< R > {
-private:
- typedef detail::future_base< R > base_type;
-
- friend struct detail::promise_base< R >;
- friend class shared_future< R >;
- template< typename Signature >
- friend class packaged_task;
-
- explicit future( typename base_type::ptr_type const& p) noexcept :
- base_type{ p } {
- }
-
-public:
- future() = default;
-
- future( future const&) = delete;
- future & operator=( future const&) = delete;
-
- future( future && other) noexcept :
- base_type{ std::move( other) } {
- }
-
- future & operator=( future && other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- base_type::operator=( std::move( other) );
- }
- return * this;
- }
-
- shared_future< R > share();
-
- R get() {
- if ( BOOST_UNLIKELY( ! base_type::valid() ) ) {
- throw future_uninitialized{};
- }
- typename base_type::ptr_type tmp{};
- tmp.swap( base_type::state_);
- return std::move( tmp->get() );
- }
-
- using base_type::valid;
- using base_type::get_exception_ptr;
- using base_type::wait;
- using base_type::wait_for;
- using base_type::wait_until;
-};
-
-template< typename R >
-class future< R & > : private detail::future_base< R & > {
-private:
- typedef detail::future_base< R & > base_type;
-
- friend struct detail::promise_base< R & >;
- friend class shared_future< R & >;
- template< typename Signature >
- friend class packaged_task;
-
- explicit future( typename base_type::ptr_type const& p) noexcept :
- base_type{ p } {
- }
-
-public:
- future() = default;
-
- future( future const&) = delete;
- future & operator=( future const&) = delete;
-
- future( future && other) noexcept :
- base_type{ std::move( other) } {
- }
-
- future & operator=( future && other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- base_type::operator=( std::move( other) );
- }
- return * this;
- }
-
- shared_future< R & > share();
-
- R & get() {
- if ( BOOST_UNLIKELY( ! base_type::valid() ) ) {
- throw future_uninitialized{};
- }
- typename base_type::ptr_type tmp{};
- tmp.swap( base_type::state_);
- return tmp->get();
- }
-
- using base_type::valid;
- using base_type::get_exception_ptr;
- using base_type::wait;
- using base_type::wait_for;
- using base_type::wait_until;
-};
-
-template<>
-class future< void > : private detail::future_base< void > {
-private:
- typedef detail::future_base< void > base_type;
-
- friend struct detail::promise_base< void >;
- friend class shared_future< void >;
- template< typename Signature >
- friend class packaged_task;
-
- explicit future( base_type::ptr_type const& p) noexcept :
- base_type{ p } {
- }
-
-public:
- future() = default;
-
- future( future const&) = delete;
- future & operator=( future const&) = delete;
-
- inline
- future( future && other) noexcept :
- base_type{ std::move( other) } {
- }
-
- inline
- future & operator=( future && other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- base_type::operator=( std::move( other) );
- }
- return * this;
- }
-
- shared_future< void > share();
-
- inline
- void get() {
- if ( BOOST_UNLIKELY( ! base_type::valid() ) ) {
- throw future_uninitialized{};
- }
- base_type::ptr_type tmp{};
- tmp.swap( base_type::state_);
- tmp->get();
- }
-
- using base_type::valid;
- using base_type::get_exception_ptr;
- using base_type::wait;
- using base_type::wait_for;
- using base_type::wait_until;
-};
-
-
-template< typename R >
-class shared_future : private detail::future_base< R > {
-private:
- typedef detail::future_base< R > base_type;
-
- explicit shared_future( typename base_type::ptr_type const& p) noexcept :
- base_type{ p } {
- }
-
-public:
- shared_future() = default;
-
- ~shared_future() = default;
-
- shared_future( shared_future const& other) :
- base_type{ other } {
- }
-
- shared_future( shared_future && other) noexcept :
- base_type{ std::move( other) } {
- }
-
- shared_future( future< R > && other) noexcept :
- base_type{ std::move( other) } {
- }
-
- shared_future & operator=( shared_future const& other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- base_type::operator=( other);
- }
- return * this;
- }
-
- shared_future & operator=( shared_future && other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- base_type::operator=( std::move( other) );
- }
- return * this;
- }
-
- shared_future & operator=( future< R > && other) noexcept {
- base_type::operator=( std::move( other) );
- return * this;
- }
-
- R const& get() const {
- if ( BOOST_UNLIKELY( ! valid() ) ) {
- throw future_uninitialized{};
- }
- return base_type::state_->get();
- }
-
- using base_type::valid;
- using base_type::get_exception_ptr;
- using base_type::wait;
- using base_type::wait_for;
- using base_type::wait_until;
-};
-
-template< typename R >
-class shared_future< R & > : private detail::future_base< R & > {
-private:
- typedef detail::future_base< R & > base_type;
-
- explicit shared_future( typename base_type::ptr_type const& p) noexcept :
- base_type{ p } {
- }
-
-public:
- shared_future() = default;
-
- ~shared_future() = default;
-
- shared_future( shared_future const& other) :
- base_type{ other } {
- }
-
- shared_future( shared_future && other) noexcept :
- base_type{ std::move( other) } {
- }
-
- shared_future( future< R & > && other) noexcept :
- base_type{ std::move( other) } {
- }
-
- shared_future & operator=( shared_future const& other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- base_type::operator=( other);
- }
- return * this;
- }
-
- shared_future & operator=( shared_future && other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- base_type::operator=( std::move( other) );
- }
- return * this;
- }
-
- shared_future & operator=( future< R & > && other) noexcept {
- base_type::operator=( std::move( other) );
- return * this;
- }
-
- R & get() const {
- if ( BOOST_UNLIKELY( ! valid() ) ) {
- throw future_uninitialized{};
- }
- return base_type::state_->get();
- }
-
- using base_type::valid;
- using base_type::get_exception_ptr;
- using base_type::wait;
- using base_type::wait_for;
- using base_type::wait_until;
-};
-
-template<>
-class shared_future< void > : private detail::future_base< void > {
-private:
- typedef detail::future_base< void > base_type;
-
- explicit shared_future( base_type::ptr_type const& p) noexcept :
- base_type{ p } {
- }
-
-public:
- shared_future() = default;
-
- ~shared_future() = default;
-
- inline
- shared_future( shared_future const& other) :
- base_type{ other } {
- }
-
- inline
- shared_future( shared_future && other) noexcept :
- base_type{ std::move( other) } {
- }
-
- inline
- shared_future( future< void > && other) noexcept :
- base_type{ std::move( other) } {
- }
-
- inline
- shared_future & operator=( shared_future const& other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- base_type::operator=( other);
- }
- return * this;
- }
-
- inline
- shared_future & operator=( shared_future && other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- base_type::operator=( std::move( other) );
- }
- return * this;
- }
-
- inline
- shared_future & operator=( future< void > && other) noexcept {
- base_type::operator=( std::move( other) );
- return * this;
- }
-
- inline
- void get() const {
- if ( BOOST_UNLIKELY( ! valid() ) ) {
- throw future_uninitialized{};
- }
- base_type::state_->get();
- }
-
- using base_type::valid;
- using base_type::get_exception_ptr;
- using base_type::wait;
- using base_type::wait_for;
- using base_type::wait_until;
-};
-
-
-template< typename R >
-shared_future< R >
-future< R >::share() {
- if ( BOOST_UNLIKELY( ! base_type::valid() ) ) {
- throw future_uninitialized{};
- }
- return shared_future< R >{ std::move( * this) };
-}
-
-template< typename R >
-shared_future< R & >
-future< R & >::share() {
- if ( BOOST_UNLIKELY( ! base_type::valid() ) ) {
- throw future_uninitialized{};
- }
- return shared_future< R & >{ std::move( * this) };
-}
-
-inline
-shared_future< void >
-future< void >::share() {
- if ( BOOST_UNLIKELY( ! base_type::valid() ) ) {
- throw future_uninitialized{};
- }
- return shared_future< void >{ std::move( * this) };
-}
-
-}}
-
-#endif
diff --git a/contrib/restricted/boost/boost/fiber/future/future_status.hpp b/contrib/restricted/boost/boost/fiber/future/future_status.hpp
deleted file mode 100644
index f9ac02c713..0000000000
--- a/contrib/restricted/boost/boost/fiber/future/future_status.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_FUTURE_STATUS_HPP
-#define BOOST_FIBERS_FUTURE_STATUS_HPP
-
-#include <future>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-namespace boost {
-namespace fibers {
-
-enum class future_status {
- ready = 1,
- timeout,
- deferred
-};
-
-}}
-
-#endif // BOOST_FIBERS_FUTURE_STATUS_HPP
diff --git a/contrib/restricted/boost/boost/fiber/future/packaged_task.hpp b/contrib/restricted/boost/boost/fiber/future/packaged_task.hpp
deleted file mode 100644
index 10cef3cd81..0000000000
--- a/contrib/restricted/boost/boost/fiber/future/packaged_task.hpp
+++ /dev/null
@@ -1,142 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_PACKAGED_TASK_HPP
-#define BOOST_FIBERS_PACKAGED_TASK_HPP
-
-#include <algorithm>
-#include <memory>
-#include <type_traits>
-#include <utility>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/disable_overload.hpp>
-#include <boost/fiber/exceptions.hpp>
-#include <boost/fiber/future/detail/task_base.hpp>
-#include <boost/fiber/future/detail/task_object.hpp>
-#include <boost/fiber/future/future.hpp>
-
-namespace boost {
-namespace fibers {
-
-template< typename Signature >
-class packaged_task;
-
-template< typename R, typename ... Args >
-class packaged_task< R( Args ... ) > {
-private:
- typedef typename detail::task_base< R, Args ... >::ptr_type ptr_type;
-
- bool obtained_{ false };
- ptr_type task_{};
-
-public:
- packaged_task() = default;
-
- template< typename Fn,
- typename = detail::disable_overload< packaged_task, Fn >
- >
- explicit packaged_task( Fn && fn) :
- packaged_task{ std::allocator_arg,
- std::allocator< packaged_task >{},
- std::forward< Fn >( fn) } {
- }
-
- template< typename Fn,
- typename Allocator
- >
- explicit packaged_task( std::allocator_arg_t, Allocator const& alloc, Fn && fn) {
- typedef detail::task_object<
- typename std::decay< Fn >::type, Allocator, R, Args ...
- > object_type;
- typedef std::allocator_traits<
- typename object_type::allocator_type
- > traits_type;
- typedef pointer_traits< typename traits_type::pointer > ptrait_type;
-
- typename object_type::allocator_type a{ alloc };
- typename traits_type::pointer ptr{ traits_type::allocate( a, 1) };
- typename ptrait_type::element_type* p = boost::to_address(ptr);
- try {
- traits_type::construct( a, p, a, std::forward< Fn >( fn) );
- } catch (...) {
- traits_type::deallocate( a, ptr, 1);
- throw;
- }
- task_.reset(p);
- }
-
- ~packaged_task() {
- if ( task_ && obtained_) {
- task_->owner_destroyed();
- }
- }
-
- packaged_task( packaged_task const&) = delete;
- packaged_task & operator=( packaged_task const&) = delete;
-
- packaged_task( packaged_task && other) noexcept :
- obtained_{ other.obtained_ },
- task_{ std::move( other.task_) } {
- other.obtained_ = false;
- }
-
- packaged_task & operator=( packaged_task && other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- packaged_task tmp{ std::move( other) };
- swap( tmp);
- }
- return * this;
- }
-
- void swap( packaged_task & other) noexcept {
- std::swap( obtained_, other.obtained_);
- task_.swap( other.task_);
- }
-
- bool valid() const noexcept {
- return nullptr != task_.get();
- }
-
- future< R > get_future() {
- if ( obtained_) {
- throw future_already_retrieved{};
- }
- if ( BOOST_UNLIKELY( ! valid() ) ) {
- throw packaged_task_uninitialized{};
- }
- obtained_ = true;
- return future< R >{
- boost::static_pointer_cast< detail::shared_state< R > >( task_) };
- }
-
- void operator()( Args ... args) {
- if ( BOOST_UNLIKELY( ! valid() ) ) {
- throw packaged_task_uninitialized{};
- }
- task_->run( std::forward< Args >( args) ... );
- }
-
- void reset() {
- if ( BOOST_UNLIKELY( ! valid() ) ) {
- throw packaged_task_uninitialized{};
- }
- packaged_task tmp;
- tmp.task_ = task_;
- task_ = tmp.task_->reset();
- obtained_ = false;
- }
-};
-
-template< typename Signature >
-void swap( packaged_task< Signature > & l, packaged_task< Signature > & r) noexcept {
- l.swap( r);
-}
-
-}}
-
-#endif // BOOST_FIBERS_PACKAGED_TASK_HPP
diff --git a/contrib/restricted/boost/boost/fiber/future/promise.hpp b/contrib/restricted/boost/boost/fiber/future/promise.hpp
deleted file mode 100644
index f184ac6682..0000000000
--- a/contrib/restricted/boost/boost/fiber/future/promise.hpp
+++ /dev/null
@@ -1,222 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_PROMISE_HPP
-#define BOOST_FIBERS_PROMISE_HPP
-
-#include <algorithm>
-#include <memory>
-#include <utility>
-
-#include <boost/config.hpp>
-#include <boost/core/pointer_traits.hpp>
-
-#include <boost/fiber/exceptions.hpp>
-#include <boost/fiber/future/detail/shared_state.hpp>
-#include <boost/fiber/future/detail/shared_state_object.hpp>
-#include <boost/fiber/future/future.hpp>
-
-namespace boost {
-namespace fibers {
-namespace detail {
-
-template< typename R >
-struct promise_base {
- typedef typename shared_state< R >::ptr_type ptr_type;
-
- bool obtained_{ false };
- ptr_type future_{};
-
- promise_base() :
- promise_base{ std::allocator_arg, std::allocator< promise_base >{} } {
- }
-
- template< typename Allocator >
- promise_base( std::allocator_arg_t, Allocator alloc) {
- typedef detail::shared_state_object< R, Allocator > object_type;
- typedef std::allocator_traits< typename object_type::allocator_type > traits_type;
- typedef pointer_traits< typename traits_type::pointer > ptrait_type;
- typename object_type::allocator_type a{ alloc };
- typename traits_type::pointer ptr{ traits_type::allocate( a, 1) };
- typename ptrait_type::element_type* p = boost::to_address(ptr);
-
- try {
- traits_type::construct( a, p, a);
- } catch (...) {
- traits_type::deallocate( a, ptr, 1);
- throw;
- }
- future_.reset(p);
- }
-
- ~promise_base() {
- if ( future_ && obtained_) {
- future_->owner_destroyed();
- }
- }
-
- promise_base( promise_base const&) = delete;
- promise_base & operator=( promise_base const&) = delete;
-
- promise_base( promise_base && other) noexcept :
- obtained_{ other.obtained_ },
- future_{ std::move( other.future_) } {
- other.obtained_ = false;
- }
-
- promise_base & operator=( promise_base && other) noexcept {
- if ( BOOST_LIKELY( this != & other) ) {
- promise_base tmp{ std::move( other) };
- swap( tmp);
- }
- return * this;
- }
-
- future< R > get_future() {
- if ( BOOST_UNLIKELY( obtained_) ) {
- throw future_already_retrieved{};
- }
- if ( BOOST_UNLIKELY( ! future_) ) {
- throw promise_uninitialized{};
- }
- obtained_ = true;
- return future< R >{ future_ };
- }
-
- void swap( promise_base & other) noexcept {
- std::swap( obtained_, other.obtained_);
- future_.swap( other.future_);
- }
-
- void set_exception( std::exception_ptr p) {
- if ( BOOST_UNLIKELY( ! future_) ) {
- throw promise_uninitialized{};
- }
- future_->set_exception( p);
- }
-};
-
-}
-
-template< typename R >
-class promise : private detail::promise_base< R > {
-private:
- typedef detail::promise_base< R > base_type;
-
-public:
- promise() = default;
-
- template< typename Allocator >
- promise( std::allocator_arg_t, Allocator alloc) :
- base_type{ std::allocator_arg, alloc } {
- }
-
- promise( promise const&) = delete;
- promise & operator=( promise const&) = delete;
-
- promise( promise && other) noexcept = default;
- promise & operator=( promise && other) = default;
-
- void set_value( R const& value) {
- if ( BOOST_UNLIKELY( ! base_type::future_) ) {
- throw promise_uninitialized{};
- }
- base_type::future_->set_value( value);
- }
-
- void set_value( R && value) {
- if ( BOOST_UNLIKELY( ! base_type::future_) ) {
- throw promise_uninitialized{};
- }
- base_type::future_->set_value( std::move( value) );
- }
-
- void swap( promise & other) noexcept {
- base_type::swap( other);
- }
-
- using base_type::get_future;
- using base_type::set_exception;
-};
-
-template< typename R >
-class promise< R & > : private detail::promise_base< R & > {
-private:
- typedef detail::promise_base< R & > base_type;
-
-public:
- promise() = default;
-
- template< typename Allocator >
- promise( std::allocator_arg_t, Allocator alloc) :
- base_type{ std::allocator_arg, alloc } {
- }
-
- promise( promise const&) = delete;
- promise & operator=( promise const&) = delete;
-
- promise( promise && other) noexcept = default;
- promise & operator=( promise && other) noexcept = default;
-
- void set_value( R & value) {
- if ( BOOST_UNLIKELY( ! base_type::future_) ) {
- throw promise_uninitialized{};
- }
- base_type::future_->set_value( value);
- }
-
- void swap( promise & other) noexcept {
- base_type::swap( other);
- }
-
- using base_type::get_future;
- using base_type::set_exception;
-};
-
-template<>
-class promise< void > : private detail::promise_base< void > {
-private:
- typedef detail::promise_base< void > base_type;
-
-public:
- promise() = default;
-
- template< typename Allocator >
- promise( std::allocator_arg_t, Allocator alloc) :
- base_type{ std::allocator_arg, alloc } {
- }
-
- promise( promise const&) = delete;
- promise & operator=( promise const&) = delete;
-
- promise( promise && other) noexcept = default;
- promise & operator=( promise && other) noexcept = default;
-
- inline
- void set_value() {
- if ( BOOST_UNLIKELY( ! base_type::future_) ) {
- throw promise_uninitialized{};
- }
- base_type::future_->set_value();
- }
-
- inline
- void swap( promise & other) noexcept {
- base_type::swap( other);
- }
-
- using base_type::get_future;
- using base_type::set_exception;
-};
-
-template< typename R >
-void swap( promise< R > & l, promise< R > & r) noexcept {
- l.swap( r);
-}
-
-}}
-
-#endif // BOOST_FIBERS_PROMISE_HPP
diff --git a/contrib/restricted/boost/boost/fiber/hip/waitfor.hpp b/contrib/restricted/boost/boost/fiber/hip/waitfor.hpp
deleted file mode 100644
index e05099ef48..0000000000
--- a/contrib/restricted/boost/boost/fiber/hip/waitfor.hpp
+++ /dev/null
@@ -1,139 +0,0 @@
-
-// Copyright Oliver Kowalke 2017.
-// 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)
-
-#ifndef BOOST_FIBERS_CUDA_WAITFOR_H
-#define BOOST_FIBERS_CUDA_WAITFOR_H
-
-#include <initializer_list>
-#include <mutex>
-#include <iostream>
-#include <set>
-#include <tuple>
-#include <vector>
-
-#include <boost/assert.hpp>
-#include <boost/config.hpp>
-
-#include <hip/hip_runtime.h>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/is_all_same.hpp>
-#include <boost/fiber/condition_variable.hpp>
-#include <boost/fiber/mutex.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace cuda {
-namespace detail {
-
-template< typename Rendezvous >
-static void trampoline( hipStream_t st, hipError_t status, void * vp) {
- Rendezvous * data = static_cast< Rendezvous * >( vp);
- data->notify( st, status);
-}
-
-class single_stream_rendezvous {
-public:
- single_stream_rendezvous( hipStream_t st) {
- unsigned int flags = 0;
- hipError_t status = ::hipStreamAddCallback( st, trampoline< single_stream_rendezvous >, this, flags);
- if ( hipSuccess != status) {
- st_ = st;
- status_ = status;
- done_ = true;
- }
- }
-
- void notify( hipStream_t st, hipError_t status) noexcept {
- std::unique_lock< mutex > lk{ mtx_ };
- st_ = st;
- status_ = status;
- done_ = true;
- lk.unlock();
- cv_.notify_one();
- }
-
- std::tuple< hipStream_t, hipError_t > wait() {
- std::unique_lock< mutex > lk{ mtx_ };
- cv_.wait( lk, [this]{ return done_; });
- return std::make_tuple( st_, status_);
- }
-
-private:
- mutex mtx_{};
- condition_variable cv_{};
- hipStream_t st_{};
- hipError_t status_{ hipErrorUnknown };
- bool done_{ false };
-};
-
-class many_streams_rendezvous {
-public:
- many_streams_rendezvous( std::initializer_list< hipStream_t > l) :
- stx_{ l } {
- results_.reserve( stx_.size() );
- for ( hipStream_t st : stx_) {
- unsigned int flags = 0;
- hipError_t status = ::hipStreamAddCallback( st, trampoline< many_streams_rendezvous >, this, flags);
- if ( hipSuccess != status) {
- std::unique_lock< mutex > lk{ mtx_ };
- stx_.erase( st);
- results_.push_back( std::make_tuple( st, status) );
- }
- }
- }
-
- void notify( hipStream_t st, hipError_t status) noexcept {
- std::unique_lock< mutex > lk{ mtx_ };
- stx_.erase( st);
- results_.push_back( std::make_tuple( st, status) );
- if ( stx_.empty() ) {
- lk.unlock();
- cv_.notify_one();
- }
- }
-
- std::vector< std::tuple< hipStream_t, hipError_t > > wait() {
- std::unique_lock< mutex > lk{ mtx_ };
- cv_.wait( lk, [this]{ return stx_.empty(); });
- return results_;
- }
-
-private:
- mutex mtx_{};
- condition_variable cv_{};
- std::set< hipStream_t > stx_;
- std::vector< std::tuple< hipStream_t, hipError_t > > results_;
-};
-
-}
-
-void waitfor_all();
-
-inline
-std::tuple< hipStream_t, hipError_t > waitfor_all( hipStream_t st) {
- detail::single_stream_rendezvous rendezvous( st);
- return rendezvous.wait();
-}
-
-template< typename ... STP >
-std::vector< std::tuple< hipStream_t, hipError_t > > waitfor_all( hipStream_t st0, STP ... stx) {
- static_assert( boost::fibers::detail::is_all_same< hipStream_t, STP ...>::value, "all arguments must be of type `CUstream*`.");
- detail::many_streams_rendezvous rendezvous{ st0, stx ... };
- return rendezvous.wait();
-}
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_CUDA_WAITFOR_H
diff --git a/contrib/restricted/boost/boost/fiber/mutex.hpp b/contrib/restricted/boost/boost/fiber/mutex.hpp
deleted file mode 100644
index e25ef04d9e..0000000000
--- a/contrib/restricted/boost/boost/fiber/mutex.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_MUTEX_H
-#define BOOST_FIBERS_MUTEX_H
-
-#include <boost/config.hpp>
-
-#include <boost/assert.hpp>
-
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/spinlock.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4251)
-#endif
-
-namespace boost {
-namespace fibers {
-
-class condition_variable;
-
-class BOOST_FIBERS_DECL mutex {
-private:
- friend class condition_variable;
-
- typedef context::wait_queue_t wait_queue_type;
-
- detail::spinlock wait_queue_splk_{};
- wait_queue_type wait_queue_{};
- context * owner_{ nullptr };
-
-public:
- mutex() = default;
-
- ~mutex() {
- BOOST_ASSERT( nullptr == owner_);
- BOOST_ASSERT( wait_queue_.empty() );
- }
-
- mutex( mutex const&) = delete;
- mutex & operator=( mutex const&) = delete;
-
- void lock();
-
- bool try_lock();
-
- void unlock();
-};
-
-}}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_MUTEX_H
diff --git a/contrib/restricted/boost/boost/fiber/numa/pin_thread.hpp b/contrib/restricted/boost/boost/fiber/numa/pin_thread.hpp
deleted file mode 100644
index 710a9f93f2..0000000000
--- a/contrib/restricted/boost/boost/fiber/numa/pin_thread.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-
-// Copyright Oliver Kowalke 2017.
-// 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)
-
-#ifndef BOOST_FIBERS_NUMA_PIN_THREAD_H
-#define BOOST_FIBERS_NUMA_PIN_THREAD_H
-
-#include <cstdint>
-#include <thread>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace numa {
-
-BOOST_FIBERS_DECL
-void pin_thread( std::uint32_t, std::thread::native_handle_type);
-
-BOOST_FIBERS_DECL
-void pin_thread( std::uint32_t cpuid);
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_NUMA_PIN_THREAD_H
diff --git a/contrib/restricted/boost/boost/fiber/numa/topology.hpp b/contrib/restricted/boost/boost/fiber/numa/topology.hpp
deleted file mode 100644
index 7b67fad288..0000000000
--- a/contrib/restricted/boost/boost/fiber/numa/topology.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-
-// Copyright Oliver Kowalke 2017.
-// 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)
-
-#ifndef BOOST_FIBERS_NUMA_TOPOLOGY_H
-#define BOOST_FIBERS_NUMA_TOPOLOGY_H
-
-#include <cstdint>
-#include <set>
-#include <vector>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-namespace numa {
-
-struct node {
- std::uint32_t id;
- std::set< std::uint32_t > logical_cpus;
- std::vector< std::uint32_t > distance;
-};
-
-inline
-bool operator<( node const& lhs, node const& rhs) noexcept {
- return lhs.id < rhs.id;
-}
-
-BOOST_FIBERS_DECL
-std::vector< node > topology();
-
-}}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_NUMA_TOPOLOGY_H
diff --git a/contrib/restricted/boost/boost/fiber/operations.hpp b/contrib/restricted/boost/boost/fiber/operations.hpp
deleted file mode 100644
index 22b58562da..0000000000
--- a/contrib/restricted/boost/boost/fiber/operations.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_THIS_FIBER_OPERATIONS_H
-#define BOOST_THIS_FIBER_OPERATIONS_H
-
-#include <chrono>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/algo/algorithm.hpp>
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/convert.hpp>
-#include <boost/fiber/fiber.hpp>
-#include <boost/fiber/scheduler.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace this_fiber {
-
-inline
-fibers::fiber::id get_id() noexcept {
- return fibers::context::active()->get_id();
-}
-
-inline
-void yield() noexcept {
- fibers::context::active()->yield();
-}
-
-template< typename Clock, typename Duration >
-void sleep_until( std::chrono::time_point< Clock, Duration > const& sleep_time_) {
- std::chrono::steady_clock::time_point sleep_time = boost::fibers::detail::convert( sleep_time_);
- fibers::context * active_ctx = fibers::context::active();
- active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release);
- active_ctx->wait_until( sleep_time);
-}
-
-template< typename Rep, typename Period >
-void sleep_for( std::chrono::duration< Rep, Period > const& timeout_duration) {
- fibers::context * active_ctx = fibers::context::active();
- active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release);
- active_ctx->wait_until( std::chrono::steady_clock::now() + timeout_duration);
-}
-
-template< typename PROPS >
-PROPS & properties() {
- fibers::fiber_properties * props = fibers::context::active()->get_properties();
- if ( BOOST_LIKELY( nullptr == props) ) {
- // props could be nullptr if the thread's main fiber has not yet
- // yielded (not yet passed through algorithm_with_properties::
- // awakened()). Address that by yielding right now.
- yield();
- // Try again to obtain the fiber_properties subclass instance ptr.
- // Walk through the whole chain again because who knows WHAT might
- // have happened while we were yielding!
- props = fibers::context::active()->get_properties();
- // Could still be hosed if the running manager isn't a subclass of
- // algorithm_with_properties.
- BOOST_ASSERT_MSG( props, "this_fiber::properties not set");
- }
- return dynamic_cast< PROPS & >( * props );
-}
-
-}
-
-namespace fibers {
-
-inline
-bool has_ready_fibers() noexcept {
- return boost::fibers::context::active()->get_scheduler()->has_ready_fibers();
-}
-
-template< typename SchedAlgo, typename ... Args >
-void use_scheduling_algorithm( Args && ... args) noexcept {
- boost::fibers::context::active()->get_scheduler()
- ->set_algo( new SchedAlgo( std::forward< Args >( args) ... ) );
-}
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_THIS_FIBER_OPERATIONS_H
diff --git a/contrib/restricted/boost/boost/fiber/policy.hpp b/contrib/restricted/boost/boost/fiber/policy.hpp
deleted file mode 100644
index de82ff9e93..0000000000
--- a/contrib/restricted/boost/boost/fiber/policy.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_POLICY_H
-#define BOOST_FIBERS_POLICY_H
-
-#include <type_traits>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-enum class launch {
- dispatch,
- post
-};
-
-namespace detail {
-
-template< typename Fn >
-struct is_launch_policy : public std::false_type {
-};
-
-template<>
-struct is_launch_policy< boost::fibers::launch > : public std::true_type {
-};
-
-}
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_POLICY_H
diff --git a/contrib/restricted/boost/boost/fiber/pooled_fixedsize_stack.hpp b/contrib/restricted/boost/boost/fiber/pooled_fixedsize_stack.hpp
deleted file mode 100644
index 24ea144793..0000000000
--- a/contrib/restricted/boost/boost/fiber/pooled_fixedsize_stack.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-
-// Copyright Oliver Kowalke 2014.
-// 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)
-
-#ifndef BOOST_FIBERS_POOLED_FIXEDSIZE_STACK_H
-#define BOOST_FIBERS_POOLED_FIXEDSIZE_STACK_H
-
-#include <boost/config.hpp>
-#include <boost/context/pooled_fixedsize_stack.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-using pooled_fixedsize_stack = boost::context::pooled_fixedsize_stack;
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_POOLED_FIXEDSIZE_STACK_H
diff --git a/contrib/restricted/boost/boost/fiber/properties.hpp b/contrib/restricted/boost/boost/fiber/properties.hpp
deleted file mode 100644
index 2f8b7a008d..0000000000
--- a/contrib/restricted/boost/boost/fiber/properties.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright Nat Goodspeed 2014.
-// 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)
-
-// Define fiber_properties, a base class from which a library consumer can
-// derive a subclass with specific properties important to a user-coded
-// scheduler.
-
-#ifndef BOOST_FIBERS_PROPERTIES_HPP
-#define BOOST_FIBERS_PROPERTIES_HPP
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-# if defined(BOOST_MSVC)
-# pragma warning(push)
-# pragma warning(disable:4275)
-# endif
-
-namespace boost {
-namespace fibers {
-
-class context;
-
-namespace algo {
-
-class algorithm;
-
-}
-
-class BOOST_FIBERS_DECL fiber_properties {
-protected:
- // initialized by constructor
- context * ctx_;
- // set every time this fiber becomes READY
- algo::algorithm * algo_{ nullptr };
-
- // Inform the relevant algorithm instance that something important
- // has changed, so it can (presumably) adjust its data structures
- // accordingly.
- void notify() noexcept;
-
-public:
- // Any specific property setter method, after updating the relevant
- // instance variable, can/should call notify().
-
- // fiber_properties, and by implication every subclass, must accept a back
- // pointer to its context.
- fiber_properties( context * ctx) noexcept :
- ctx_{ ctx } {
- }
-
- // We need a virtual destructor (hence a vtable) because fiber_properties
- // is stored polymorphically (as fiber_properties*) in context, and
- // destroyed via that pointer.
- virtual ~fiber_properties() = default;
-
- // not really intended for public use, but algorithm_with_properties
- // must be able to call this
- void set_algorithm( algo::algorithm * algo) noexcept {
- algo_ = algo;
- }
-};
-
-}} // namespace boost::fibers
-
-# if defined(BOOST_MSVC)
-# pragma warning(pop)
-# endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_PROPERTIES_HPP
diff --git a/contrib/restricted/boost/boost/fiber/protected_fixedsize_stack.hpp b/contrib/restricted/boost/boost/fiber/protected_fixedsize_stack.hpp
deleted file mode 100644
index f2c01ac1e2..0000000000
--- a/contrib/restricted/boost/boost/fiber/protected_fixedsize_stack.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-
-// Copyright Oliver Kowalke 2014.
-// 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)
-
-#ifndef BOOST_FIBERS_PROTECTED_FIXEDSIZE_STACK_H
-#define BOOST_FIBERS_PROTECTED_FIXEDSIZE_STACK_H
-
-#include <boost/config.hpp>
-#include <boost/context/protected_fixedsize_stack.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-using protected_fixedsize_stack = boost::context::protected_fixedsize_stack;
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_PROTECTED_FIXEDSIZE_STACK_H
diff --git a/contrib/restricted/boost/boost/fiber/recursive_mutex.hpp b/contrib/restricted/boost/boost/fiber/recursive_mutex.hpp
deleted file mode 100644
index 864c65cb8e..0000000000
--- a/contrib/restricted/boost/boost/fiber/recursive_mutex.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-//
-// based on boost::interprocess::sync::interprocess_spinlock
-
-#ifndef BOOST_FIBERS_RECURSIVE_MUTEX_H
-#define BOOST_FIBERS_RECURSIVE_MUTEX_H
-
-#include <cstddef>
-
-#include <boost/config.hpp>
-
-#include <boost/assert.hpp>
-
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/spinlock.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4251)
-#endif
-
-namespace boost {
-namespace fibers {
-
-class condition_variable;
-
-class BOOST_FIBERS_DECL recursive_mutex {
-private:
- friend class condition_variable;
-
- typedef context::wait_queue_t wait_queue_type;
-
- detail::spinlock wait_queue_splk_{};
- wait_queue_type wait_queue_{};
- context * owner_{ nullptr };
- std::size_t count_{ 0 };
-
-public:
- recursive_mutex() = default;
-
- ~recursive_mutex() {
- BOOST_ASSERT( nullptr == owner_);
- BOOST_ASSERT( 0 == count_);
- BOOST_ASSERT( wait_queue_.empty() );
- }
-
- recursive_mutex( recursive_mutex const&) = delete;
- recursive_mutex & operator=( recursive_mutex const&) = delete;
-
- void lock();
-
- bool try_lock() noexcept;
-
- void unlock();
-};
-
-}}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_RECURSIVE_MUTEX_H
diff --git a/contrib/restricted/boost/boost/fiber/recursive_timed_mutex.hpp b/contrib/restricted/boost/boost/fiber/recursive_timed_mutex.hpp
deleted file mode 100644
index 339427b895..0000000000
--- a/contrib/restricted/boost/boost/fiber/recursive_timed_mutex.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-//
-// based on boost::interprocess::sync::interprocess_spinlock
-
-#ifndef BOOST_FIBERS_RECURSIVE_TIMED_MUTEX_H
-#define BOOST_FIBERS_RECURSIVE_TIMED_MUTEX_H
-
-#include <chrono>
-#include <cstddef>
-
-#include <boost/config.hpp>
-
-#include <boost/assert.hpp>
-
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/convert.hpp>
-#include <boost/fiber/detail/spinlock.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4251)
-#endif
-
-namespace boost {
-namespace fibers {
-
-class condition_variable;
-
-class BOOST_FIBERS_DECL recursive_timed_mutex {
-private:
- friend class condition_variable;
-
- typedef context::wait_queue_t wait_queue_type;
-
- detail::spinlock wait_queue_splk_{};
- wait_queue_type wait_queue_{};
- context * owner_{ nullptr };
- std::size_t count_{ 0 };
-
- bool try_lock_until_( std::chrono::steady_clock::time_point const& timeout_time) noexcept;
-
-public:
- recursive_timed_mutex() = default;
-
- ~recursive_timed_mutex() {
- BOOST_ASSERT( nullptr == owner_);
- BOOST_ASSERT( 0 == count_);
- BOOST_ASSERT( wait_queue_.empty() );
- }
-
- recursive_timed_mutex( recursive_timed_mutex const&) = delete;
- recursive_timed_mutex & operator=( recursive_timed_mutex const&) = delete;
-
- void lock();
-
- bool try_lock() noexcept;
-
- template< typename Clock, typename Duration >
- bool try_lock_until( std::chrono::time_point< Clock, Duration > const& timeout_time_) {
- std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_);
- return try_lock_until_( timeout_time);
- }
-
- template< typename Rep, typename Period >
- bool try_lock_for( std::chrono::duration< Rep, Period > const& timeout_duration) {
- return try_lock_until_( std::chrono::steady_clock::now() + timeout_duration);
- }
-
- void unlock();
-};
-
-}}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_RECURSIVE_TIMED_MUTEX_H
diff --git a/contrib/restricted/boost/boost/fiber/scheduler.hpp b/contrib/restricted/boost/boost/fiber/scheduler.hpp
deleted file mode 100644
index 14567e83b8..0000000000
--- a/contrib/restricted/boost/boost/fiber/scheduler.hpp
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_FIBER_MANAGER_H
-#define BOOST_FIBERS_FIBER_MANAGER_H
-
-#include <chrono>
-#include <functional>
-#include <memory>
-#include <mutex>
-#include <vector>
-
-#include <boost/config.hpp>
-#include <boost/context/fiber.hpp>
-#include <boost/intrusive/list.hpp>
-#include <boost/intrusive_ptr.hpp>
-#include <boost/intrusive/set.hpp>
-#include <boost/intrusive/slist.hpp>
-
-#include <boost/fiber/algo/algorithm.hpp>
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/data.hpp>
-#include <boost/fiber/detail/spinlock.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4251)
-#endif
-
-namespace boost {
-namespace fibers {
-
-class BOOST_FIBERS_DECL scheduler {
-public:
- struct timepoint_less {
- bool operator()( context const& l, context const& r) const noexcept {
- return l.tp_ < r.tp_;
- }
- };
-
- typedef intrusive::list<
- context,
- intrusive::member_hook<
- context, detail::ready_hook, & context::ready_hook_ >,
- intrusive::constant_time_size< false >
- > ready_queue_type;
-private:
- typedef intrusive::multiset<
- context,
- intrusive::member_hook<
- context, detail::sleep_hook, & context::sleep_hook_ >,
- intrusive::constant_time_size< false >,
- intrusive::compare< timepoint_less >
- > sleep_queue_type;
- typedef intrusive::list<
- context,
- intrusive::member_hook<
- context, detail::worker_hook, & context::worker_hook_ >,
- intrusive::constant_time_size< false >
- > worker_queue_type;
- typedef intrusive::slist<
- context,
- intrusive::member_hook<
- context, detail::terminated_hook, & context::terminated_hook_ >,
- intrusive::linear< true >,
- intrusive::cache_last< true >
- > terminated_queue_type;
- typedef intrusive::slist<
- context,
- intrusive::member_hook<
- context, detail::remote_ready_hook, & context::remote_ready_hook_ >,
- intrusive::linear< true >,
- intrusive::cache_last< true >
- > remote_ready_queue_type;
-
-#if ! defined(BOOST_FIBERS_NO_ATOMICS)
- // remote ready-queue contains context' signaled by schedulers
- // running in other threads
- detail::spinlock remote_ready_splk_{};
- remote_ready_queue_type remote_ready_queue_{};
-#endif
- algo::algorithm::ptr_t algo_;
- // sleep-queue contains context' which have been called
- // scheduler::wait_until()
- sleep_queue_type sleep_queue_{};
- // worker-queue contains all context' mananged by this scheduler
- // except main-context and dispatcher-context
- // unlink happens on destruction of a context
- worker_queue_type worker_queue_{};
- // terminated-queue contains context' which have been terminated
- terminated_queue_type terminated_queue_{};
- intrusive_ptr< context > dispatcher_ctx_{};
- context * main_ctx_{ nullptr };
- bool shutdown_{ false };
-
- void release_terminated_() noexcept;
-
-#if ! defined(BOOST_FIBERS_NO_ATOMICS)
- void remote_ready2ready_() noexcept;
-#endif
-
- void sleep2ready_() noexcept;
-
-public:
- scheduler() noexcept;
-
- scheduler( scheduler const&) = delete;
- scheduler & operator=( scheduler const&) = delete;
-
- virtual ~scheduler();
-
- void schedule( context *) noexcept;
-
-#if ! defined(BOOST_FIBERS_NO_ATOMICS)
- void schedule_from_remote( context *) noexcept;
-#endif
-
- boost::context::fiber dispatch() noexcept;
-
- boost::context::fiber terminate( detail::spinlock_lock &, context *) noexcept;
-
- void yield( context *) noexcept;
-
- bool wait_until( context *,
- std::chrono::steady_clock::time_point const&) noexcept;
- bool wait_until( context *,
- std::chrono::steady_clock::time_point const&,
- detail::spinlock_lock &) noexcept;
-
- void suspend() noexcept;
- void suspend( detail::spinlock_lock &) noexcept;
-
- bool has_ready_fibers() const noexcept;
-
- void set_algo( algo::algorithm::ptr_t) noexcept;
-
- void attach_main_context( context *) noexcept;
-
- void attach_dispatcher_context( intrusive_ptr< context >) noexcept;
-
- void attach_worker_context( context *) noexcept;
-
- void detach_worker_context( context *) noexcept;
-};
-
-}}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_FIBER_MANAGER_H
diff --git a/contrib/restricted/boost/boost/fiber/segmented_stack.hpp b/contrib/restricted/boost/boost/fiber/segmented_stack.hpp
deleted file mode 100644
index 868ddf4acd..0000000000
--- a/contrib/restricted/boost/boost/fiber/segmented_stack.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-
-// Copyright Oliver Kowalke 2014.
-// 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)
-
-#ifndef BOOST_FIBERS_SEGMENTED_STACK_H
-#define BOOST_FIBERS_SEGMENTED_STACK_H
-
-#include <boost/config.hpp>
-#include <boost/context/segmented_stack.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-#if defined(BOOST_USE_SEGMENTED_STACKS)
-# if ! defined(BOOST_WINDOWS)
-using segmented_stack = boost::context::segmented_stack;
-using default_stack = boost::context::default_stack;
-# endif
-#endif
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_SEGMENTED_STACK_H
diff --git a/contrib/restricted/boost/boost/fiber/timed_mutex.hpp b/contrib/restricted/boost/boost/fiber/timed_mutex.hpp
deleted file mode 100644
index f74c5e41ad..0000000000
--- a/contrib/restricted/boost/boost/fiber/timed_mutex.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_TIMED_MUTEX_H
-#define BOOST_FIBERS_TIMED_MUTEX_H
-
-#include <chrono>
-
-#include <boost/assert.hpp>
-#include <boost/config.hpp>
-
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/convert.hpp>
-#include <boost/fiber/detail/spinlock.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4251)
-#endif
-
-namespace boost {
-namespace fibers {
-
-class condition_variable;
-
-class BOOST_FIBERS_DECL timed_mutex {
-private:
- friend class condition_variable;
-
- typedef context::wait_queue_t wait_queue_type;
-
- detail::spinlock wait_queue_splk_{};
- wait_queue_type wait_queue_{};
- context * owner_{ nullptr };
-
- bool try_lock_until_( std::chrono::steady_clock::time_point const& timeout_time) noexcept;
-
-public:
- timed_mutex() = default;
-
- ~timed_mutex() {
- BOOST_ASSERT( nullptr == owner_);
- BOOST_ASSERT( wait_queue_.empty() );
- }
-
- timed_mutex( timed_mutex const&) = delete;
- timed_mutex & operator=( timed_mutex const&) = delete;
-
- void lock();
-
- bool try_lock();
-
- template< typename Clock, typename Duration >
- bool try_lock_until( std::chrono::time_point< Clock, Duration > const& timeout_time_) {
- std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_);
- return try_lock_until_( timeout_time);
- }
-
- template< typename Rep, typename Period >
- bool try_lock_for( std::chrono::duration< Rep, Period > const& timeout_duration) {
- return try_lock_until_( std::chrono::steady_clock::now() + timeout_duration);
- }
-
- void unlock();
-};
-
-}}
-
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_TIMED_MUTEX_H
diff --git a/contrib/restricted/boost/boost/fiber/type.hpp b/contrib/restricted/boost/boost/fiber/type.hpp
deleted file mode 100644
index d9ab0a94d7..0000000000
--- a/contrib/restricted/boost/boost/fiber/type.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-
-// Copyright Oliver Kowalke 2013.
-// 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)
-
-#ifndef BOOST_FIBERS_TYPE_H
-#define BOOST_FIBERS_TYPE_H
-
-#include <atomic>
-#include <chrono>
-#include <exception>
-#include <functional>
-#include <map>
-#include <memory>
-#include <type_traits>
-
-#include <boost/assert.hpp>
-#include <boost/config.hpp>
-#include <boost/context/detail/apply.hpp>
-#include <boost/context/stack_context.hpp>
-#include <boost/intrusive/list.hpp>
-#include <boost/intrusive/parent_from_member.hpp>
-#include <boost/intrusive_ptr.hpp>
-#include <boost/intrusive/set.hpp>
-
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/data.hpp>
-#include <boost/fiber/detail/decay_copy.hpp>
-#include <boost/fiber/detail/fss.hpp>
-#include <boost/fiber/detail/spinlock.hpp>
-#include <boost/fiber/exceptions.hpp>
-#include <boost/fiber/fixedsize_stack.hpp>
-#include <boost/fiber/properties.hpp>
-#include <boost/fiber/segmented_stack.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-enum class type {
- none = 0,
- main_context = 1 << 1,
- dispatcher_context = 1 << 2,
- worker_context = 1 << 3,
- pinned_context = main_context | dispatcher_context
-};
-
-inline
-constexpr type
-operator&( type l, type r) {
- return static_cast< type >(
- static_cast< unsigned int >( l) & static_cast< unsigned int >( r) );
-}
-
-inline
-constexpr type
-operator|( type l, type r) {
- return static_cast< type >(
- static_cast< unsigned int >( l) | static_cast< unsigned int >( r) );
-}
-
-inline
-constexpr type
-operator^( type l, type r) {
- return static_cast< type >(
- static_cast< unsigned int >( l) ^ static_cast< unsigned int >( r) );
-}
-
-inline
-constexpr type
-operator~( type l) {
- return static_cast< type >( ~static_cast< unsigned int >( l) );
-}
-
-inline
-type &
-operator&=( type & l, type r) {
- l = l & r;
- return l;
-}
-
-inline
-type &
-operator|=( type & l, type r) {
- l = l | r;
- return l;
-}
-
-inline
-type &
-operator^=( type & l, type r) {
- l = l ^ r;
- return l;
-}
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_TYPE_H
diff --git a/contrib/restricted/boost/boost/fiber/unbuffered_channel.hpp b/contrib/restricted/boost/boost/fiber/unbuffered_channel.hpp
deleted file mode 100644
index 2236d9e22f..0000000000
--- a/contrib/restricted/boost/boost/fiber/unbuffered_channel.hpp
+++ /dev/null
@@ -1,620 +0,0 @@
-
-// Copyright Oliver Kowalke 2016.
-// 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)
-
-#ifndef BOOST_FIBERS_UNBUFFERED_CHANNEL_H
-#define BOOST_FIBERS_UNBUFFERED_CHANNEL_H
-
-#include <atomic>
-#include <chrono>
-#include <cstddef>
-#include <cstdint>
-#include <memory>
-#include <vector>
-
-#include <boost/config.hpp>
-
-#include <boost/fiber/channel_op_status.hpp>
-#include <boost/fiber/context.hpp>
-#include <boost/fiber/detail/config.hpp>
-#include <boost/fiber/detail/convert.hpp>
-#include <boost/fiber/detail/spinlock.hpp>
-#include <boost/fiber/exceptions.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace fibers {
-
-template< typename T >
-class unbuffered_channel {
-public:
- typedef typename std::remove_reference< T >::type value_type;
-
-private:
- typedef context::wait_queue_t wait_queue_type;
-
- struct slot {
- value_type value;
- context * ctx;
-
- slot( value_type const& value_, context * ctx_) :
- value{ value_ },
- ctx{ ctx_ } {
- }
-
- slot( value_type && value_, context * ctx_) :
- value{ std::move( value_) },
- ctx{ ctx_ } {
- }
- };
-
- // shared cacheline
- std::atomic< slot * > slot_{ nullptr };
- // shared cacheline
- std::atomic_bool closed_{ false };
- mutable detail::spinlock splk_producers_{};
- wait_queue_type waiting_producers_{};
- mutable detail::spinlock splk_consumers_{};
- wait_queue_type waiting_consumers_{};
- char pad_[cacheline_length];
-
- bool is_empty_() {
- return nullptr == slot_.load( std::memory_order_acquire);
- }
-
- bool try_push_( slot * own_slot) {
- for (;;) {
- slot * s = slot_.load( std::memory_order_acquire);
- if ( nullptr == s) {
- if ( ! slot_.compare_exchange_strong( s, own_slot, std::memory_order_acq_rel) ) {
- continue;
- }
- return true;
- } else {
- return false;
- }
- }
- }
-
- slot * try_pop_() {
- slot * nil_slot = nullptr;
- for (;;) {
- slot * s = slot_.load( std::memory_order_acquire);
- if ( nullptr != s) {
- if ( ! slot_.compare_exchange_strong( s, nil_slot, std::memory_order_acq_rel) ) {
- continue;}
- }
- return s;
- }
- }
-
-public:
- unbuffered_channel() {
- }
-
- ~unbuffered_channel() {
- close();
- }
-
- unbuffered_channel( unbuffered_channel const&) = delete;
- unbuffered_channel & operator=( unbuffered_channel const&) = delete;
-
- bool is_closed() const noexcept {
- return closed_.load( std::memory_order_acquire);
- }
-
- void close() noexcept {
- context * active_ctx = context::active();
- // notify all waiting producers
- closed_.store( true, std::memory_order_release);
- detail::spinlock_lock lk1{ splk_producers_ };
- while ( ! waiting_producers_.empty() ) {
- context * producer_ctx = & waiting_producers_.front();
- waiting_producers_.pop_front();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( producer_ctx);
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( producer_ctx);
- }
- }
- // notify all waiting consumers
- detail::spinlock_lock lk2{ splk_consumers_ };
- while ( ! waiting_consumers_.empty() ) {
- context * consumer_ctx = & waiting_consumers_.front();
- waiting_consumers_.pop_front();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( consumer_ctx);
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( consumer_ctx);
- }
- }
- }
-
- channel_op_status push( value_type const& value) {
- context * active_ctx = context::active();
- slot s{ value, active_ctx };
- for (;;) {
- if ( BOOST_UNLIKELY( is_closed() ) ) {
- return channel_op_status::closed;
- }
- if ( try_push_( & s) ) {
- detail::spinlock_lock lk{ splk_consumers_ };
- // notify one waiting consumer
- while ( ! waiting_consumers_.empty() ) {
- context * consumer_ctx = & waiting_consumers_.front();
- waiting_consumers_.pop_front();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- }
- }
- // suspend till value has been consumed
- active_ctx->suspend( lk);
- // resumed, value has been consumed
- return channel_op_status::success;
- } else {
- detail::spinlock_lock lk{ splk_producers_ };
- if ( BOOST_UNLIKELY( is_closed() ) ) {
- return channel_op_status::closed;
- }
- if ( is_empty_() ) {
- continue;
- }
- active_ctx->wait_link( waiting_producers_);
- active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release);
- // suspend this producer
- active_ctx->suspend( lk);
- // resumed, slot mabye free
- }
- }
- }
-
- channel_op_status push( value_type && value) {
- context * active_ctx = context::active();
- slot s{ std::move( value), active_ctx };
- for (;;) {
- if ( BOOST_UNLIKELY( is_closed() ) ) {
- return channel_op_status::closed;
- }
- if ( try_push_( & s) ) {
- detail::spinlock_lock lk{ splk_consumers_ };
- // notify one waiting consumer
- while ( ! waiting_consumers_.empty() ) {
- context * consumer_ctx = & waiting_consumers_.front();
- waiting_consumers_.pop_front();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- }
- }
- // suspend till value has been consumed
- active_ctx->suspend( lk);
- // resumed, value has been consumed
- return channel_op_status::success;
- } else {
- detail::spinlock_lock lk{ splk_producers_ };
- if ( BOOST_UNLIKELY( is_closed() ) ) {
- return channel_op_status::closed;
- }
- if ( is_empty_() ) {
- continue;
- }
- active_ctx->wait_link( waiting_producers_);
- active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release);
- // suspend this producer
- active_ctx->suspend( lk);
- // resumed, slot mabye free
- }
- }
- }
-
- template< typename Rep, typename Period >
- channel_op_status push_wait_for( value_type const& value,
- std::chrono::duration< Rep, Period > const& timeout_duration) {
- return push_wait_until( value,
- std::chrono::steady_clock::now() + timeout_duration);
- }
-
- template< typename Rep, typename Period >
- channel_op_status push_wait_for( value_type && value,
- std::chrono::duration< Rep, Period > const& timeout_duration) {
- return push_wait_until( std::forward< value_type >( value),
- std::chrono::steady_clock::now() + timeout_duration);
- }
-
- template< typename Clock, typename Duration >
- channel_op_status push_wait_until( value_type const& value,
- std::chrono::time_point< Clock, Duration > const& timeout_time_) {
- context * active_ctx = context::active();
- slot s{ value, active_ctx };
- std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_);
- for (;;) {
- if ( BOOST_UNLIKELY( is_closed() ) ) {
- return channel_op_status::closed;
- }
- if ( try_push_( & s) ) {
- detail::spinlock_lock lk{ splk_consumers_ };
- // notify one waiting consumer
- while ( ! waiting_consumers_.empty() ) {
- context * consumer_ctx = & waiting_consumers_.front();
- waiting_consumers_.pop_front();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- }
- }
- // suspend this producer
- active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release);
- if ( ! active_ctx->wait_until( timeout_time, lk) ) {
- // clear slot
- slot * nil_slot = nullptr, * own_slot = & s;
- slot_.compare_exchange_strong( own_slot, nil_slot, std::memory_order_acq_rel);
- // resumed, value has not been consumed
- return channel_op_status::timeout;
- }
- // resumed, value has been consumed
- return channel_op_status::success;
- } else {
- detail::spinlock_lock lk{ splk_producers_ };
- if ( BOOST_UNLIKELY( is_closed() ) ) {
- return channel_op_status::closed;
- }
- if ( is_empty_() ) {
- continue;
- }
- active_ctx->wait_link( waiting_producers_);
- active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release);
- // suspend this producer
- if ( ! active_ctx->wait_until( timeout_time, lk) ) {
- // relock local lk
- lk.lock();
- // remove from waiting-queue
- waiting_producers_.remove( * active_ctx);
- return channel_op_status::timeout;
- }
- // resumed, slot maybe free
- }
- }
- }
-
- template< typename Clock, typename Duration >
- channel_op_status push_wait_until( value_type && value,
- std::chrono::time_point< Clock, Duration > const& timeout_time_) {
- context * active_ctx = context::active();
- slot s{ std::move( value), active_ctx };
- std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_);
- for (;;) {
- if ( BOOST_UNLIKELY( is_closed() ) ) {
- return channel_op_status::closed;
- }
- if ( try_push_( & s) ) {
- detail::spinlock_lock lk{ splk_consumers_ };
- // notify one waiting consumer
- while ( ! waiting_consumers_.empty() ) {
- context * consumer_ctx = & waiting_consumers_.front();
- waiting_consumers_.pop_front();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( consumer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( consumer_ctx);
- break;
- }
- }
- // suspend this producer
- active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release);
- if ( ! active_ctx->wait_until( timeout_time, lk) ) {
- // clear slot
- slot * nil_slot = nullptr, * own_slot = & s;
- slot_.compare_exchange_strong( own_slot, nil_slot, std::memory_order_acq_rel);
- // resumed, value has not been consumed
- return channel_op_status::timeout;
- }
- // resumed, value has been consumed
- return channel_op_status::success;
- } else {
- detail::spinlock_lock lk{ splk_producers_ };
- if ( BOOST_UNLIKELY( is_closed() ) ) {
- return channel_op_status::closed;
- }
- if ( is_empty_() ) {
- continue;
- }
- active_ctx->wait_link( waiting_producers_);
- active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release);
- // suspend this producer
- if ( ! active_ctx->wait_until( timeout_time, lk) ) {
- // relock local lk
- lk.lock();
- // remove from waiting-queue
- waiting_producers_.remove( * active_ctx);
- return channel_op_status::timeout;
- }
- // resumed, slot maybe free
- }
- }
- }
-
- channel_op_status pop( value_type & value) {
- context * active_ctx = context::active();
- slot * s = nullptr;
- for (;;) {
- if ( nullptr != ( s = try_pop_() ) ) {
- {
- detail::spinlock_lock lk{ splk_producers_ };
- // notify one waiting producer
- while ( ! waiting_producers_.empty() ) {
- context * producer_ctx = & waiting_producers_.front();
- waiting_producers_.pop_front();
- lk.unlock();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- }
- }
- }
- value = std::move( s->value);
- // notify context
- active_ctx->schedule( s->ctx);
- return channel_op_status::success;
- } else {
- detail::spinlock_lock lk{ splk_consumers_ };
- if ( BOOST_UNLIKELY( is_closed() ) ) {
- return channel_op_status::closed;
- }
- if ( ! is_empty_() ) {
- continue;
- }
- active_ctx->wait_link( waiting_consumers_);
- active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release);
- // suspend this consumer
- active_ctx->suspend( lk);
- // resumed, slot mabye set
- }
- }
- }
-
- value_type value_pop() {
- context * active_ctx = context::active();
- slot * s = nullptr;
- for (;;) {
- if ( nullptr != ( s = try_pop_() ) ) {
- {
- detail::spinlock_lock lk{ splk_producers_ };
- // notify one waiting producer
- while ( ! waiting_producers_.empty() ) {
- context * producer_ctx = & waiting_producers_.front();
- waiting_producers_.pop_front();
- lk.unlock();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- }
- }
- }
- // consume value
- value_type value = std::move( s->value);
- // notify context
- active_ctx->schedule( s->ctx);
- return std::move( value);
- } else {
- detail::spinlock_lock lk{ splk_consumers_ };
- if ( BOOST_UNLIKELY( is_closed() ) ) {
- throw fiber_error{
- std::make_error_code( std::errc::operation_not_permitted),
- "boost fiber: channel is closed" };
- }
- if ( ! is_empty_() ) {
- continue;
- }
- active_ctx->wait_link( waiting_consumers_);
- active_ctx->twstatus.store( static_cast< std::intptr_t >( 0), std::memory_order_release);
- // suspend this consumer
- active_ctx->suspend( lk);
- // resumed, slot mabye set
- }
- }
- }
-
- template< typename Rep, typename Period >
- channel_op_status pop_wait_for( value_type & value,
- std::chrono::duration< Rep, Period > const& timeout_duration) {
- return pop_wait_until( value,
- std::chrono::steady_clock::now() + timeout_duration);
- }
-
- template< typename Clock, typename Duration >
- channel_op_status pop_wait_until( value_type & value,
- std::chrono::time_point< Clock, Duration > const& timeout_time_) {
- context * active_ctx = context::active();
- slot * s = nullptr;
- std::chrono::steady_clock::time_point timeout_time = detail::convert( timeout_time_);
- for (;;) {
- if ( nullptr != ( s = try_pop_() ) ) {
- {
- detail::spinlock_lock lk{ splk_producers_ };
- // notify one waiting producer
- while ( ! waiting_producers_.empty() ) {
- context * producer_ctx = & waiting_producers_.front();
- waiting_producers_.pop_front();
- lk.unlock();
- std::intptr_t expected = reinterpret_cast< std::intptr_t >( this);
- if ( producer_ctx->twstatus.compare_exchange_strong( expected, static_cast< std::intptr_t >( -1), std::memory_order_acq_rel) ) {
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- } else if ( static_cast< std::intptr_t >( 0) == expected) {
- // no timed-wait op.
- // notify context
- active_ctx->schedule( producer_ctx);
- break;
- }
- }
- }
- // consume value
- value = std::move( s->value);
- // notify context
- active_ctx->schedule( s->ctx);
- return channel_op_status::success;
- } else {
- detail::spinlock_lock lk{ splk_consumers_ };
- if ( BOOST_UNLIKELY( is_closed() ) ) {
- return channel_op_status::closed;
- }
- if ( ! is_empty_() ) {
- continue;
- }
- active_ctx->wait_link( waiting_consumers_);
- active_ctx->twstatus.store( reinterpret_cast< std::intptr_t >( this), std::memory_order_release);
- // suspend this consumer
- if ( ! active_ctx->wait_until( timeout_time, lk) ) {
- // relock local lk
- lk.lock();
- // remove from waiting-queue
- waiting_consumers_.remove( * active_ctx);
- return channel_op_status::timeout;
- }
- }
- }
- }
-
- class iterator {
- private:
- typedef typename std::aligned_storage< sizeof( value_type), alignof( value_type) >::type storage_type;
-
- unbuffered_channel * chan_{ nullptr };
- storage_type storage_;
-
- void increment_() {
- BOOST_ASSERT( nullptr != chan_);
- try {
- ::new ( static_cast< void * >( std::addressof( storage_) ) ) value_type{ chan_->value_pop() };
- } catch ( fiber_error const&) {
- chan_ = nullptr;
- }
- }
-
- public:
- typedef std::input_iterator_tag iterator_category;
- typedef std::ptrdiff_t difference_type;
- typedef value_type * pointer;
- typedef value_type & reference;
-
- typedef pointer pointer_t;
- typedef reference reference_t;
-
- iterator() noexcept = default;
-
- explicit iterator( unbuffered_channel< T > * chan) noexcept :
- chan_{ chan } {
- increment_();
- }
-
- iterator( iterator const& other) noexcept :
- chan_{ other.chan_ } {
- }
-
- iterator & operator=( iterator const& other) noexcept {
- if ( this == & other) return * this;
- chan_ = other.chan_;
- return * this;
- }
-
- bool operator==( iterator const& other) const noexcept {
- return other.chan_ == chan_;
- }
-
- bool operator!=( iterator const& other) const noexcept {
- return other.chan_ != chan_;
- }
-
- iterator & operator++() {
- increment_();
- return * this;
- }
-
- iterator operator++( int) = delete;
-
- reference_t operator*() noexcept {
- return * reinterpret_cast< value_type * >( std::addressof( storage_) );
- }
-
- pointer_t operator->() noexcept {
- return reinterpret_cast< value_type * >( std::addressof( storage_) );
- }
- };
-
- friend class iterator;
-};
-
-template< typename T >
-typename unbuffered_channel< T >::iterator
-begin( unbuffered_channel< T > & chan) {
- return typename unbuffered_channel< T >::iterator( & chan);
-}
-
-template< typename T >
-typename unbuffered_channel< T >::iterator
-end( unbuffered_channel< T > &) {
- return typename unbuffered_channel< T >::iterator();
-}
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_FIBERS_UNBUFFERED_CHANNEL_H
diff --git a/contrib/restricted/boost/boost/units/absolute.hpp b/contrib/restricted/boost/boost/units/absolute.hpp
deleted file mode 100644
index 254159455e..0000000000
--- a/contrib/restricted/boost/boost/units/absolute.hpp
+++ /dev/null
@@ -1,153 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-///
-/// \file
-/// \brief Absolute units (points rather than vectors).
-/// \details Operations between absolute units, and relative units like temperature differences.
-///
-
-#ifndef BOOST_UNITS_ABSOLUTE_HPP
-#define BOOST_UNITS_ABSOLUTE_HPP
-
-#include <iosfwd>
-
-#include <boost/units/detail/absolute_impl.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// A wrapper to represent absolute units (points rather than vectors). Intended
-/// originally for temperatures, this class implements operators for absolute units
-/// so that addition of a relative unit to an absolute unit results in another
-/// absolute unit : absolute<T> +/- T -> absolute<T> and subtraction of one absolute
-/// unit from another results in a relative unit : absolute<T> - absolute<T> -> T.
-template<class Y>
-class absolute
-{
- public:
- typedef absolute<Y> this_type;
- typedef Y value_type;
-
- BOOST_CONSTEXPR absolute() : val_() { }
- BOOST_CONSTEXPR absolute(const value_type& val) : val_(val) { }
- BOOST_CONSTEXPR absolute(const this_type& source) : val_(source.val_) { }
-
- BOOST_CXX14_CONSTEXPR this_type& operator=(const this_type& source) { val_ = source.val_; return *this; }
-
- BOOST_CONSTEXPR const value_type& value() const { return val_; }
-
- BOOST_CXX14_CONSTEXPR const this_type& operator+=(const value_type& val) { val_ += val; return *this; }
- BOOST_CXX14_CONSTEXPR const this_type& operator-=(const value_type& val) { val_ -= val; return *this; }
-
- private:
- value_type val_;
-};
-
-/// add a relative value to an absolute one
-template<class Y>
-BOOST_CONSTEXPR absolute<Y> operator+(const absolute<Y>& aval,const Y& rval)
-{
- return absolute<Y>(aval.value()+rval);
-}
-
-/// add a relative value to an absolute one
-template<class Y>
-BOOST_CONSTEXPR absolute<Y> operator+(const Y& rval,const absolute<Y>& aval)
-{
- return absolute<Y>(aval.value()+rval);
-}
-
-/// subtract a relative value from an absolute one
-template<class Y>
-BOOST_CONSTEXPR absolute<Y> operator-(const absolute<Y>& aval,const Y& rval)
-{
- return absolute<Y>(aval.value()-rval);
-}
-
-/// subtracting two absolutes gives a difference
-template<class Y>
-BOOST_CONSTEXPR Y operator-(const absolute<Y>& aval1,const absolute<Y>& aval2)
-{
- return Y(aval1.value()-aval2.value());
-}
-
-/// creates a quantity from an absolute unit and a raw value
-template<class D, class S, class T>
-BOOST_CONSTEXPR quantity<absolute<unit<D, S> >, T> operator*(const T& t, const absolute<unit<D, S> >&)
-{
- return(quantity<absolute<unit<D, S> >, T>::from_value(t));
-}
-
-/// creates a quantity from an absolute unit and a raw value
-template<class D, class S, class T>
-BOOST_CONSTEXPR quantity<absolute<unit<D, S> >, T> operator*(const absolute<unit<D, S> >&, const T& t)
-{
- return(quantity<absolute<unit<D, S> >, T>::from_value(t));
-}
-
-/// Print an absolute unit
-template<class Char, class Traits, class Y>
-std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os,const absolute<Y>& aval)
-{
-
- os << "absolute " << aval.value();
-
- return os;
-}
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::absolute, (class))
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-/// Macro to define the offset between two absolute units.
-/// Requires the value to be in the destination units e.g
-/// @code
-/// BOOST_UNITS_DEFINE_CONVERSION_OFFSET(celsius_base_unit, fahrenheit_base_unit, double, 32.0);
-/// @endcode
-/// @c BOOST_UNITS_DEFINE_CONVERSION_FACTOR is also necessary to
-/// specify the conversion factor. Like @c BOOST_UNITS_DEFINE_CONVERSION_FACTOR
-/// this macro defines both forward and reverse conversions so
-/// defining, e.g., the conversion from celsius to fahrenheit as above will also
-/// define the inverse conversion from fahrenheit to celsius.
-#define BOOST_UNITS_DEFINE_CONVERSION_OFFSET(From, To, type_, value_) \
- namespace boost { \
- namespace units { \
- template<> \
- struct affine_conversion_helper< \
- reduce_unit<From::unit_type>::type, \
- reduce_unit<To::unit_type>::type> \
- { \
- BOOST_STATIC_CONSTEXPR bool is_defined = true; \
- typedef type_ type; \
- static BOOST_CONSTEXPR type value() { return(value_); } \
- }; \
- } \
- } \
- void boost_units_require_semicolon()
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ABSOLUTE_HPP
diff --git a/contrib/restricted/boost/boost/units/base_dimension.hpp b/contrib/restricted/boost/boost/units/base_dimension.hpp
deleted file mode 100644
index 430f019e6b..0000000000
--- a/contrib/restricted/boost/boost/units/base_dimension.hpp
+++ /dev/null
@@ -1,107 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-/// \file
-/// \brief base dimensions (mass, length, time...).
-/// \details base dimension definition registration.
-
-#ifndef BOOST_UNITS_BASE_DIMENSION_HPP
-#define BOOST_UNITS_BASE_DIMENSION_HPP
-
-#include <boost/units/config.hpp>
-#include <boost/units/dim.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/detail/dimension_list.hpp>
-#include <boost/units/detail/ordinal.hpp>
-#include <boost/units/detail/prevent_redefinition.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// This must be in namespace boost::units so that ADL
-/// will work with friend functions defined inline.
-/// INTERNAL ONLY
-template<long N> struct base_dimension_ordinal { };
-
-/// INTERNAL ONLY
-template<class T, long N> struct base_dimension_pair { };
-
-/// INTERNAL ONLY
-template<class T, long N>
-struct check_base_dimension {
- enum {
- value =
- sizeof(boost_units_is_registered(units::base_dimension_ordinal<N>())) == sizeof(detail::yes) &&
- sizeof(boost_units_is_registered(units::base_dimension_pair<T, N>())) != sizeof(detail::yes)
- };
-};
-
-/// Defines a base dimension. To define a dimension you need to provide
-/// the derived class (CRTP) and a unique integer.
-/// @code
-/// struct my_dimension : boost::units::base_dimension<my_dimension, 1> {};
-/// @endcode
-/// It is designed so that you will get an error message if you try
-/// to use the same value in multiple definitions.
-template<class Derived,
- long N
-#if !defined(BOOST_UNITS_DOXYGEN) && !defined(__BORLANDC__)
- ,
- class = typename detail::ordinal_has_already_been_defined<
- check_base_dimension<Derived, N>::value
- >::type
-#endif
->
-class base_dimension :
- public ordinal<N>
-{
- public:
- /// INTERNAL ONLY
- typedef base_dimension this_type;
- /// A convenience typedef. Equivalent to boost::units::derived_dimension<Derived,1>::type.
-#ifndef BOOST_UNITS_DOXYGEN
- typedef list<dim<Derived,static_rational<1> >, dimensionless_type> dimension_type;
-#else
- typedef detail::unspecified dimension_type;
-#endif
- /// Provided for mpl compatability.
- typedef Derived type;
-
- private:
- /// Check for C++0x. In C++0x, we have to have identical
- /// arguments but a different return type to trigger an
- /// error. Note that this is only needed for clang as
- /// check_base_dimension will trigger an error earlier
- /// for compilers with less strict name lookup.
- /// INTERNAL ONLY
- friend BOOST_CONSTEXPR Derived*
- check_double_register(const units::base_dimension_ordinal<N>&)
- { return(0); }
-
- /// Register this ordinal
- /// INTERNAL ONLY
- friend BOOST_CONSTEXPR detail::yes
- boost_units_is_registered(const units::base_dimension_ordinal<N>&)
- { return(detail::yes()); }
-
- /// But make sure we can identify the current instantiation!
- /// INTERNAL ONLY
- friend BOOST_CONSTEXPR detail::yes
- boost_units_is_registered(const units::base_dimension_pair<Derived, N>&)
- { return(detail::yes()); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/base_unit.hpp b/contrib/restricted/boost/boost/units/base_unit.hpp
deleted file mode 100644
index b66558a66b..0000000000
--- a/contrib/restricted/boost/boost/units/base_unit.hpp
+++ /dev/null
@@ -1,128 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-/// \file
-/// \brief base unit (meter, kg, sec...).
-/// \details base unit definition registration.
-
-#ifndef BOOST_UNITS_BASE_UNIT_HPP
-#define BOOST_UNITS_BASE_UNIT_HPP
-
-#include <boost/units/config.hpp>
-#include <boost/units/heterogeneous_system.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/unit.hpp>
-#include <boost/units/detail/dimension_list.hpp>
-#include <boost/units/detail/ordinal.hpp>
-#include <boost/units/detail/prevent_redefinition.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// This must be in namespace boost::units so that ADL
-/// will work with friend functions defined inline.
-/// Base dimensions and base units are independent.
-/// INTERNAL ONLY
-template<long N> struct base_unit_ordinal { };
-
-/// INTERNAL ONLY
-template<class T, long N> struct base_unit_pair { };
-
-/// INTERNAL ONLY
-template<class T, long N>
-struct check_base_unit {
- enum {
- value =
- sizeof(boost_units_unit_is_registered(units::base_unit_ordinal<N>())) == sizeof(detail::yes) &&
- sizeof(boost_units_unit_is_registered(units::base_unit_pair<T, N>())) != sizeof(detail::yes)
- };
-};
-
-/// Defines a base unit. To define a unit you need to provide
-/// the derived class (CRTP), a dimension list and a unique integer.
-/// @code
-/// struct my_unit : boost::units::base_unit<my_unit, length_dimension, 1> {};
-/// @endcode
-/// It is designed so that you will get an error message if you try
-/// to use the same value in multiple definitions.
-template<class Derived,
- class Dim,
- long N
-#if !defined(BOOST_UNITS_DOXYGEN) && !defined(__BORLANDC__)
- ,
- class = typename detail::ordinal_has_already_been_defined<
- check_base_unit<Derived, N>::value
- >::type
-#endif
->
-class base_unit :
- public ordinal<N>
-{
- public:
- /// INTERNAL ONLY
- typedef void boost_units_is_base_unit_type;
- /// INTERNAL ONLY
- typedef base_unit this_type;
- /// The dimensions of this base unit.
- typedef Dim dimension_type;
-
- /// Provided for mpl compatability.
- typedef Derived type;
-
- /// The unit corresponding to this base unit.
-#ifndef BOOST_UNITS_DOXYGEN
- typedef unit<
- Dim,
- heterogeneous_system<
- heterogeneous_system_impl<
- list<
- heterogeneous_system_dim<Derived,static_rational<1> >,
- dimensionless_type
- >,
- Dim,
- no_scale
- >
- >
- > unit_type;
-#else
- typedef detail::unspecified unit_type;
-#endif
-
- private:
- /// Check for C++0x. In C++0x, we have to have identical
- /// arguments but a different return type to trigger an
- /// error. Note that this is only needed for clang as
- /// check_base_unit will trigger an error earlier
- /// for compilers with less strict name lookup.
- /// INTERNAL ONLY
- friend BOOST_CONSTEXPR Derived*
- check_double_register(const units::base_unit_ordinal<N>&)
- { return(0); }
-
- /// Register this ordinal
- /// INTERNAL ONLY
- friend BOOST_CONSTEXPR detail::yes
- boost_units_unit_is_registered(const units::base_unit_ordinal<N>&)
- { return(detail::yes()); }
-
- /// But make sure we can identify the current instantiation!
- /// INTERNAL ONLY
- friend BOOST_CONSTEXPR detail::yes
- boost_units_unit_is_registered(const units::base_unit_pair<Derived, N>&)
- { return(detail::yes()); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/angle/arcminute.hpp b/contrib/restricted/boost/boost/units/base_units/angle/arcminute.hpp
deleted file mode 100644
index 27570fbbbb..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/angle/arcminute.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_BASE_UNITS_ANGLE_ARCMINUTE_HPP_INCLUDED
-#define BOOST_UNIT_BASE_UNITS_ANGLE_ARCMINUTE_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/angle/degree.hpp>
-
-namespace boost {
-namespace units {
-namespace angle {
-
-typedef scaled_base_unit<degree_base_unit, scale<60, static_rational<-1> > > arcminute_base_unit;
-
-}
-
-template<>
-struct base_unit_info<angle::arcminute_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("arcminute"); }
- static BOOST_CONSTEXPR const char* symbol() { return("'"); }
-};
-
-}
-}
-
-#endif // BOOST_UNIT_BASE_UNITS_ANGLE_ARCMINUTE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/angle/arcsecond.hpp b/contrib/restricted/boost/boost/units/base_units/angle/arcsecond.hpp
deleted file mode 100644
index 97851ffb70..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/angle/arcsecond.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_ANGLE_ARCSECOND_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_ANGLE_ARCSECOND_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/angle/degree.hpp>
-
-namespace boost {
-namespace units {
-namespace angle {
-
-//typedef scaled_base_unit<degree_base_unit, scale<60, static_rational<-2> > > arcsecond_base_unit;
-typedef scaled_base_unit<degree_base_unit, scale<3600, static_rational<-1> > > arcsecond_base_unit;
-
-}
-
-template<>
-struct base_unit_info<angle::arcsecond_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("arcsecond"); }
- static BOOST_CONSTEXPR const char* symbol() { return("\""); }
-};
-
-}
-}
-
-#endif // BOOST_UNIT_SYSTEMS_ANGLE_ARCSECOND_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/angle/degree.hpp b/contrib/restricted/boost/boost/units/base_units/angle/degree.hpp
deleted file mode 100644
index 63edb70eef..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/angle/degree.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ANGLE_DEGREE_BASE_UNIT_HPP
-#define BOOST_UNITS_ANGLE_DEGREE_BASE_UNIT_HPP
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/base_units/angle/radian.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(angle,degree,"degree","deg",6.28318530718/360.,boost::units::angle::radian_base_unit,-101);
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::angle::degree_base_unit)
-
-#endif
-
-#endif // BOOST_UNITS_ANGLE_DEGREE_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/angle/gradian.hpp b/contrib/restricted/boost/boost/units/base_units/angle/gradian.hpp
deleted file mode 100644
index 7b291b4697..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/angle/gradian.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ANGLE_GRADIAN_BASE_UNIT_HPP
-#define BOOST_UNITS_ANGLE_GRADIAN_BASE_UNIT_HPP
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/base_units/angle/radian.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(angle,gradian,"gradian","grad",6.28318530718/400.,boost::units::angle::radian_base_unit,-102);
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::angle::gradian_base_unit)
-
-#endif
-
-#endif // BOOST_UNITS_ANGLE_GRADIAN_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/angle/radian.hpp b/contrib/restricted/boost/boost/units/base_units/angle/radian.hpp
deleted file mode 100644
index f2b56673f4..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/angle/radian.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ANGLE_RADIAN_BASE_UNIT_HPP
-#define BOOST_UNITS_ANGLE_RADIAN_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/plane_angle.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace angle {
-
-struct radian_base_unit : public base_unit<radian_base_unit, plane_angle_dimension, -2>
-{
- static std::string name() { return("radian"); }
- static std::string symbol() { return("rad"); }
-};
-
-} // namespace angle
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::angle::radian_base_unit)
-
-#endif
-
-//#include <boost/units/base_units/angle/conversions.hpp>
-
-#endif // BOOST_UNITS_ANGLE_RADIAN_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/angle/revolution.hpp b/contrib/restricted/boost/boost/units/base_units/angle/revolution.hpp
deleted file mode 100644
index 3d576286ef..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/angle/revolution.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_REVOLUTION_HPP
-#define BOOST_UNITS_BASE_UNITS_REVOLUTION_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/angle/degree.hpp>
-
-namespace boost {
-namespace units {
-namespace angle {
-
-typedef scaled_base_unit<degree_base_unit, scale<360, static_rational<1> > > revolution_base_unit;
-
-}
-
-template<>
-struct base_unit_info<angle::revolution_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("revolution"); }
- static BOOST_CONSTEXPR const char* symbol() { return("rev"); }
-};
-
-}
-}
-
-#endif // BOOST_UNITS_BASE_UNITS_REVOLUTION_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/angle/steradian.hpp b/contrib/restricted/boost/boost/units/base_units/angle/steradian.hpp
deleted file mode 100644
index 5e8c5bda00..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/angle/steradian.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ANGLE_STERADIAN_BASE_UNIT_HPP
-#define BOOST_UNITS_ANGLE_STERADIAN_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/solid_angle.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace angle {
-
-struct steradian_base_unit : public base_unit<steradian_base_unit, solid_angle_dimension, -1>
-{
- static std::string name() { return("steradian"); }
- static std::string symbol() { return("sr"); }
-};
-
-} // namespace angle
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::angle::steradian_base_unit)
-
-#endif
-
-//#include <boost/units/base_units/angle/conversions.hpp>
-
-#endif // BOOST_UNITS_ANGLE_STERADIAN_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/astronomical_unit.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/astronomical_unit.hpp
deleted file mode 100644
index 4b1640d95f..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/astronomical/astronomical_unit.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_ASTRONOMICAL_ASTRONOMICAL_UNIT_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_ASTRONOMICAL_UNIT_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/base_units/si/meter.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(astronomical, astronomical_unit, "astronomical unit", "a.u.", 149597870691.0, boost::units::si::meter_base_unit, -207);
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::astronomical::astronomical_unit_base_unit)
-
-#endif
-
-#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_ASTRONOMICAL_UNIT_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/light_day.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/light_day.hpp
deleted file mode 100644
index a0ad93becb..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/astronomical/light_day.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_DAY_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_DAY_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/astronomical/light_second.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace astronomical {
-
-typedef scaled_base_unit<boost::units::astronomical::light_second_base_unit, scale<86400, static_rational<1> > > light_day_base_unit;
-
-} // namespace astronomical
-
-template<>
-struct base_unit_info<astronomical::light_day_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("light day"); }
- static BOOST_CONSTEXPR const char* symbol() { return("ldy"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_DAY_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/light_hour.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/light_hour.hpp
deleted file mode 100644
index 91bc09a28c..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/astronomical/light_hour.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_HOUR_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_HOUR_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/astronomical/light_second.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace astronomical {
-
-typedef scaled_base_unit<boost::units::astronomical::light_second_base_unit, scale<3600, static_rational<1> > > light_hour_base_unit;
-
-} // namespace astronomical
-
-template<>
-struct base_unit_info<astronomical::light_hour_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("light hour"); }
- static BOOST_CONSTEXPR const char* symbol() { return("lhr"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_HOUR_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/light_minute.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/light_minute.hpp
deleted file mode 100644
index 6301745c29..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/astronomical/light_minute.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_MINUTE_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_MINUTE_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/astronomical/light_second.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace astronomical {
-
-typedef scaled_base_unit<boost::units::astronomical::light_second_base_unit, scale<60, static_rational<1> > > light_minute_base_unit;
-
-} // namespace astronomical
-
-template<>
-struct base_unit_info<astronomical::light_minute_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("light minute"); }
- static BOOST_CONSTEXPR const char* symbol() { return("lmn"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_MINUTE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/light_second.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/light_second.hpp
deleted file mode 100644
index 555a315fb4..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/astronomical/light_second.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_SECOND_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_SECOND_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/base_units/si/meter.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(astronomical, light_second, "light second", "lsc", 2.99792458e8, boost::units::si::meter_base_unit, -201);
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::astronomical::light_second_base_unit)
-
-#endif
-
-#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_SECOND_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/light_year.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/light_year.hpp
deleted file mode 100644
index f3434a7918..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/astronomical/light_year.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_YEAR_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_YEAR_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/astronomical/light_second.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace astronomical {
-
-typedef scaled_base_unit<boost::units::astronomical::light_second_base_unit, scale<31557600, static_rational<1> > > light_year_base_unit;
-
-} // namespace astronomical
-
-template<>
-struct base_unit_info<astronomical::light_year_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("light year"); }
- static BOOST_CONSTEXPR const char* symbol() { return("ly"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_LIGHT_YEAR_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/astronomical/parsec.hpp b/contrib/restricted/boost/boost/units/base_units/astronomical/parsec.hpp
deleted file mode 100644
index dd116e555c..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/astronomical/parsec.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_ASTRONOMICAL_PARSEC_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_ASTRONOMICAL_PARSEC_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/base_units/si/meter.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(astronomical, parsec, "parsec", "psc", 3.0856775813e16, boost::units::si::meter_base_unit, -206);
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::astronomical::parsec_base_unit)
-
-#endif
-
-#endif // BOOST_UNIT_SYSTEMS_ASTRONOMICAL_PARSEC_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/cgs/biot.hpp b/contrib/restricted/boost/boost/units/base_units/cgs/biot.hpp
deleted file mode 100644
index 1fa03f2e8f..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/cgs/biot.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_BIOT_BASE_UNIT_HPP
-#define BOOST_UNITS_CGS_BIOT_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/base_units/si/ampere.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef scaled_base_unit<boost::units::si::ampere_base_unit, scale<10, static_rational<+1> > > biot_base_unit;
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_BIOT_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/cgs/centimeter.hpp b/contrib/restricted/boost/boost/units/base_units/cgs/centimeter.hpp
deleted file mode 100644
index 1ff712ed25..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/cgs/centimeter.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CENTIMETER_BASE_UNIT_HPP
-#define BOOST_UNITS_CENTIMETER_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/base_units/si/meter.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef scaled_base_unit<boost::units::si::meter_base_unit, scale<10, static_rational<-2> > > centimeter_base_unit;
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CENTIMETER_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/cgs/gram.hpp b/contrib/restricted/boost/boost/units/base_units/cgs/gram.hpp
deleted file mode 100644
index 1c2cc18b97..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/cgs/gram.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_GRAM_BASE_UNIT_HPP
-#define BOOST_UNITS_CGS_GRAM_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-struct gram_base_unit : public base_unit<gram_base_unit, mass_dimension, -8>
-{
- static std::string name() { return("gram"); }
- static std::string symbol() { return("g"); }
-};
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::cgs::gram_base_unit)
-
-#endif
-
-//#include <boost/units/base_units/detail/conversions.hpp>
-
-#endif // BOOST_UNITS_CGS_GRAM_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/conversions.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/conversions.hpp
deleted file mode 100644
index 54cf6385ea..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/conversions.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-// No include guards. This header is intended to be included
-// multiple times.
-
-// imperial units
-
-#if 0
-
-#if defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED) && defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_GALLON_HPP_INCLUDED) &&\
- !defined(BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_GALLON_CONVERSION_DEFINED)
- #define BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_GALLON_CONVERSION_DEFINED
- #include <boost/units/conversion.hpp>
- BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::imperial::pint_base_unit,boost::units::imperial::gallon_base_unit, double, 1./8.);
-#endif
-
-#if defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED) && defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_QUART_HPP_INCLUDED) &&\
- !defined(BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_QUART_CONVERSION_DEFINED)
- #define BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_QUART_CONVERSION_DEFINED
- #include <boost/units/conversion.hpp>
- BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::imperial::pint_base_unit,boost::units::imperial::quart_base_unit, double, 1./2.);
-#endif
-
-#if defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED) && defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_GILL_HPP_INCLUDED) &&\
- !defined(BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_GILL_CONVERSION_DEFINED)
- #define BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_GILL_CONVERSION_DEFINED
- #include <boost/units/conversion.hpp>
- BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::imperial::pint_base_unit,boost::units::imperial::gill_base_unit, double, 4.);
-#endif
-
-#if defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED) && defined(BOOST_UNITS_BASE_UNITS_IMPERIAL_FLUID_OUNCE_HPP_INCLUDED) &&\
- !defined(BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_FLUID_OUNCE_CONVERSION_DEFINED)
- #define BOOST_BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_TO_FLUID_OUNCE_CONVERSION_DEFINED
- #include <boost/units/conversion.hpp>
- BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::imperial::pint_base_unit,boost::units::imperial::fluid_ounce_base_unit, double, 20.);
-#endif
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/drachm.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/drachm.hpp
deleted file mode 100644
index b965040c3b..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/drachm.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_IMPERIAL_DRACHM_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_IMPERIAL_DRACHM_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/pound.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<pound_base_unit, scale<16, static_rational<-2> > > drachm_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::drachm_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("drachm"); }
- static BOOST_CONSTEXPR const char* symbol() { return("drachm"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_DRACHM_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/fluid_ounce.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/fluid_ounce.hpp
deleted file mode 100644
index b318fb2c9f..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/fluid_ounce.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_IMPERIAL_FLUID_OUNCE_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_IMPERIAL_FLUID_OUNCE_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<pint_base_unit, scale<20, static_rational<-1> > > fluid_ounce_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::fluid_ounce_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("fluid ounce (imp.)"); }
- static BOOST_CONSTEXPR const char* symbol() { return("fl oz"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_IMPERIAL_FLUID_OUNCE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/foot.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/foot.hpp
deleted file mode 100644
index 429c77c7b0..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/foot.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IMPERIAL_FOOT_BASE_UNIT_HPP
-#define BOOST_UNITS_IMPERIAL_FOOT_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/yard.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<yard_base_unit, scale<3, static_rational<-1> > > foot_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::foot_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("foot"); }
- static BOOST_CONSTEXPR const char* symbol() { return("ft"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IMPERIAL_FOOT_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/furlong.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/furlong.hpp
deleted file mode 100644
index 8851f2c0e9..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/furlong.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IMPERIAL_FURLONG_BASE_UNIT_HPP
-#define BOOST_UNITS_IMPERIAL_FURLONG_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/yard.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<yard_base_unit, scale<220, static_rational<1> > > furlong_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::furlong_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("furlong"); }
- static BOOST_CONSTEXPR const char* symbol() { return("furlong"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IMPERIAL_FURLONG_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/gallon.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/gallon.hpp
deleted file mode 100644
index c0e1513631..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/gallon.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_IMPERIAL_GALLON_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_IMPERIAL_GALLON_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-//typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<3> > > gallon_base_unit;
-typedef scaled_base_unit<pint_base_unit, scale<8, static_rational<1> > > gallon_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::gallon_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("gallon (imp.)"); }
- static BOOST_CONSTEXPR const char* symbol() { return("gal"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_IMPERIAL_GALLON_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/gill.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/gill.hpp
deleted file mode 100644
index 353a46b409..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/gill.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_IMPERIAL_GILL_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_IMPERIAL_GILL_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-//typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<-2> > > gill_base_unit;
-typedef scaled_base_unit<pint_base_unit, scale<4, static_rational<-1> > > gill_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::gill_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("gill (imp.)"); }
- static BOOST_CONSTEXPR const char* symbol() { return("gill"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_IMPERIAL_GILL_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/grain.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/grain.hpp
deleted file mode 100644
index 7567f9912e..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/grain.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_IMPERIAL_GRAIN_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_IMPERIAL_GRAIN_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/pound.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<pound_base_unit, scale<7000, static_rational<-1> > > grain_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::grain_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("grain"); }
- static BOOST_CONSTEXPR const char* symbol() { return("grain"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_GRAIN_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/hundredweight.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/hundredweight.hpp
deleted file mode 100644
index 8f03763ff6..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/hundredweight.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_IMPERIAL_HUNDREDWEIGHT_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_IMPERIAL_HUNDREDWEIGHT_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/pound.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<pound_base_unit, scale<112, static_rational<1> > > hundredweight_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::hundredweight_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("hundredweight"); }
- static BOOST_CONSTEXPR const char* symbol() { return("cwt"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_HUNDREDWEIGHT_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/inch.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/inch.hpp
deleted file mode 100644
index d39c332342..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/inch.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IMPERIAL_INCH_BASE_UNIT_HPP
-#define BOOST_UNITS_IMPERIAL_INCH_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/yard.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<yard_base_unit, scale<36, static_rational<-1> > > inch_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::inch_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("inch"); }
- static BOOST_CONSTEXPR const char* symbol() { return("in"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IMPERIAL_INCH_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/league.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/league.hpp
deleted file mode 100644
index 87c0cfb575..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/league.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IMPERIAL_LEAGUE_BASE_UNIT_HPP
-#define BOOST_UNITS_IMPERIAL_LEAGUE_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/yard.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<yard_base_unit, scale<5280, static_rational<1> > > league_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::league_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("league"); }
- static BOOST_CONSTEXPR const char* symbol() { return("league"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IMPERIAL_LEAGUE_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/mile.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/mile.hpp
deleted file mode 100644
index 230537f5b3..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/mile.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IMPERIAL_MILE_BASE_UNIT_HPP
-#define BOOST_UNITS_IMPERIAL_MILE_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/yard.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<yard_base_unit, scale<1760, static_rational<1> > > mile_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::mile_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("mile"); }
- static BOOST_CONSTEXPR const char* symbol() { return("mi"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IMPERIAL_MILE_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/ounce.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/ounce.hpp
deleted file mode 100644
index 05bfcc1594..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/ounce.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_IMPERIAL_OUNCE_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_IMPERIAL_OUNCE_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/pound.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<pound_base_unit, scale<2, static_rational<-4> > > ounce_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::ounce_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("ounce"); }
- static BOOST_CONSTEXPR const char* symbol() { return("oz"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_OUNCE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/pint.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/pint.hpp
deleted file mode 100644
index 1a1440f9cc..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/pint.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED
-
-#include <string>
-
-#include <boost/units/systems/si/volume.hpp>
-#include <boost/units/conversion.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(imperial, pint, "pint (imp.)", "pt", 4.54609e-3/8., si::volume, -303); // exact conversion
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::imperial::pint_base_unit)
-
-#endif
-
-#endif // BOOST_UNITS_BASE_UNITS_IMPERIAL_PINT_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/pound.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/pound.hpp
deleted file mode 100644
index c586e6d0d0..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/pound.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_IMPERIAL_POUND_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_IMPERIAL_POUND_HPP_INCLUDED
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/base_units/cgs/gram.hpp>
-#include <boost/units/conversion.hpp>
-
-// can't define in terms of kilogram because it is a scaled_base_unit
-//BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(imperial, pound, "pound", "lb", 0.45359237, si::kilogram_base_unit, -302); // exact conversion
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(imperial, pound, "pound", "lb", 453.59237, cgs::gram_base_unit, -302); // exact conversion
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::imperial::pound_base_unit)
-
-#endif
-
-#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_POUND_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/quart.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/quart.hpp
deleted file mode 100644
index f4c0a00995..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/quart.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_IMPERIAL_QUART_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_IMPERIAL_QUART_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-//typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<1> > > quart_base_unit;
-typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<1> > > quart_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::quart_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("quart (imp.)"); }
- static BOOST_CONSTEXPR const char* symbol() { return("qt"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_IMPERIAL_QUART_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/quarter.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/quarter.hpp
deleted file mode 100644
index 912d51d78d..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/quarter.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_IMPERIAL_QUARTER_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_IMPERIAL_QUARTER_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/pound.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<pound_base_unit, scale<28, static_rational<1> > > quarter_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::quarter_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("quarter"); }
- static BOOST_CONSTEXPR const char* symbol() { return("quarter"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_QUARTER_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/stone.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/stone.hpp
deleted file mode 100644
index 1b260a29e3..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/stone.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_IMPERIAL_STONE_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_IMPERIAL_STONE_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/pound.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<pound_base_unit, scale<14, static_rational<1> > > stone_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::stone_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("stone"); }
- static BOOST_CONSTEXPR const char* symbol() { return("st"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_STONE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/thou.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/thou.hpp
deleted file mode 100644
index af1f911e46..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/thou.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IMPERIAL_THOU_BASE_UNIT_HPP
-#define BOOST_UNITS_IMPERIAL_THOU_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/yard.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<yard_base_unit, scale<36000, static_rational<-1> > > thou_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::thou_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("thou"); }
- static BOOST_CONSTEXPR const char* symbol() { return("thou"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IMPERIAL_THOU_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/ton.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/ton.hpp
deleted file mode 100644
index a1f709ec6b..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/ton.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_IMPERIAL_TON_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_IMPERIAL_TON_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/imperial/pound.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace imperial {
-
-typedef scaled_base_unit<pound_base_unit, scale<2240, static_rational<1> > > ton_base_unit;
-
-} // namespace imperial
-
-template<>
-struct base_unit_info<imperial::ton_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("long ton"); }
- static BOOST_CONSTEXPR const char* symbol() { return("t"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_SYSTEMS_IMPERIAL_TON_HPP_INCLUDED
-
diff --git a/contrib/restricted/boost/boost/units/base_units/imperial/yard.hpp b/contrib/restricted/boost/boost/units/base_units/imperial/yard.hpp
deleted file mode 100644
index d15b99d0cf..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/imperial/yard.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SYSTEMS_IMPERIAL_YARD_BASE_UNIT_HPP
-#define BOOST_UNITS_SYSTEMS_IMPERIAL_YARD_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/base_units/si/meter.hpp>
-#include <boost/units/conversion.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(imperial, yard, "yard", "yd", 0.9144, si::meter_base_unit, -301); // exact conversion
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::imperial::yard_base_unit)
-
-#endif
-
-#endif // BOOST_UNITS_SYSTEMS_IMPERIAL_YARD_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/information/bit.hpp b/contrib/restricted/boost/boost/units/base_units/information/bit.hpp
deleted file mode 100644
index 28a413ea18..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/information/bit.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_INFORMATION_BIT_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_INFORMATION_BIT_HPP_INCLUDED
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/information.hpp>
-
-namespace boost {
-namespace units {
-namespace information {
-
-struct bit_base_unit : public base_unit<bit_base_unit, information_dimension, -700>
-{
- static std::string name() { return("bit"); }
- static std::string symbol() { return("b"); }
-};
-
-} // namespace information
-} // namespace units
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::information::bit_base_unit)
-
-#endif
-
-#endif // BOOST_UNITS_BASE_UNITS_INFORMATION_BIT_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/information/byte.hpp b/contrib/restricted/boost/boost/units/base_units/information/byte.hpp
deleted file mode 100644
index 6dcfde2557..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/information/byte.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_INFORMATION_BYTE_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_INFORMATION_BYTE_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/base_units/information/bit.hpp>
-
-namespace boost {
-namespace units {
-namespace information {
-
-typedef scaled_base_unit<boost::units::information::bit_base_unit, scale<2, static_rational<3> > > byte_base_unit;
-
-} // namespace information
-
-template<>
-struct base_unit_info<information::byte_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("byte"); }
- static BOOST_CONSTEXPR const char* symbol() { return("B"); }
-};
-
-} // namespace units
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_INFORMATION_BYTE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/information/hartley.hpp b/contrib/restricted/boost/boost/units/base_units/information/hartley.hpp
deleted file mode 100644
index c3df2d287b..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/information/hartley.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_INFORMATION_HARTLEY_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_INFORMATION_HARTLEY_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/base_units/information/bit.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(information, hartley,
- "hartley", "Hart",
- 3.321928094887363,
- boost::units::information::bit_base_unit,
- -703);
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::information::hartley_base_unit)
-
-#endif
-
-#endif // BOOST_UNITS_BASE_UNITS_INFORMATION_HARTLEY_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/information/nat.hpp b/contrib/restricted/boost/boost/units/base_units/information/nat.hpp
deleted file mode 100644
index a307215193..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/information/nat.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_INFORMATION_NAT_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_INFORMATION_NAT_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/base_units/information/bit.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(information, nat,
- "nat", "nat",
- 1.442695040888964,
- boost::units::information::bit_base_unit,
- -702);
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::information::nat_base_unit)
-
-#endif
-
-#endif // BOOST_UNITS_BASE_UNITS_INFORMATION_NAT_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/information/shannon.hpp b/contrib/restricted/boost/boost/units/base_units/information/shannon.hpp
deleted file mode 100644
index 60e37b2cd9..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/information/shannon.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_INFORMATION_SHANNON_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_INFORMATION_SHANNON_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/base_units/information/bit.hpp>
-
-namespace boost {
-namespace units {
-namespace information {
-
-typedef scaled_base_unit<boost::units::information::bit_base_unit, scale<1, static_rational<1> > > shannon_base_unit;
-
-} // namespace information
-
-template<>
-struct base_unit_info<information::shannon_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("shannon"); }
- static BOOST_CONSTEXPR const char* symbol() { return("Sh"); }
-};
-
-} // namespace units
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_INFORMATION_SHANNON_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/angstrom.hpp b/contrib/restricted/boost/boost/units/base_units/metric/angstrom.hpp
deleted file mode 100644
index 64cc3379be..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/angstrom.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_ANGSTROM_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_ANGSTROM_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/base_units/si/meter.hpp>
-
-namespace boost {
-namespace units {
-namespace metric {
-
-typedef scaled_base_unit<boost::units::si::meter_base_unit, scale<10, static_rational<-10> > > angstrom_base_unit;
-
-}
-
-template<>
-struct base_unit_info<metric::angstrom_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("angstrom"); }
- static BOOST_CONSTEXPR const char* symbol() { return("A"); }
-};
-
-}
-}
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_ANGSTROM_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/are.hpp b/contrib/restricted/boost/boost/units/base_units/metric/are.hpp
deleted file mode 100644
index bd697f43ed..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/are.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_ARE_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_ARE_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/systems/si/area.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, are, "are", "a", 1.0e2, si::area, 10);
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_ARE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/atmosphere.hpp b/contrib/restricted/boost/boost/units/base_units/metric/atmosphere.hpp
deleted file mode 100644
index b714e90d9d..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/atmosphere.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_ATMOSPHERE_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_ATMOSPHERE_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/systems/si/pressure.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, atmosphere, "atmosphere", "atm", 1.01325e5, si::pressure, 33);
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_ATMOSPHERE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/bar.hpp b/contrib/restricted/boost/boost/units/base_units/metric/bar.hpp
deleted file mode 100644
index 682d54ffec..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/bar.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_BAR_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_BAR_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/systems/si/pressure.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, bar, "bar", "bar", 1.0e5, si::pressure, 14);
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_BAR_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/barn.hpp b/contrib/restricted/boost/boost/units/base_units/metric/barn.hpp
deleted file mode 100644
index ae2b28cab4..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/barn.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_BARN_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_BARN_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/systems/si/area.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, barn, "barn", "b", 1.0e-28, si::area, 11);
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_BARN_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/day.hpp b/contrib/restricted/boost/boost/units/base_units/metric/day.hpp
deleted file mode 100644
index ac111c9ee0..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/day.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_OTHER_DAY_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_OTHER_DAY_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/si/second.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace metric {
-
-typedef scaled_base_unit<boost::units::si::second_base_unit, scale<86400, static_rational<1> > > day_base_unit;
-
-} // namespace metric
-
-template<>
-struct base_unit_info<metric::day_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("day"); }
- static BOOST_CONSTEXPR const char* symbol() { return("d"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/fermi.hpp b/contrib/restricted/boost/boost/units/base_units/metric/fermi.hpp
deleted file mode 100644
index f12c903f49..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/fermi.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_FERMI_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_FERMI_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/si/meter.hpp>
-
-namespace boost {
-namespace units {
-namespace metric {
-
-typedef scaled_base_unit<boost::units::si::meter_base_unit, scale<10, static_rational<-15> > > fermi_base_unit;
-
-}
-
-template<>
-struct base_unit_info<metric::fermi_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("fermi"); }
- static BOOST_CONSTEXPR const char* symbol() { return("fm"); }
-};
-
-}
-}
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_FERMI_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/hectare.hpp b/contrib/restricted/boost/boost/units/base_units/metric/hectare.hpp
deleted file mode 100644
index 476b0fc790..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/hectare.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_HECTARE_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_HECTARE_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/systems/si/area.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, hectare, "hectare", "ha", 1.0e4, si::area, 12);
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_HECTARE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/hour.hpp b/contrib/restricted/boost/boost/units/base_units/metric/hour.hpp
deleted file mode 100644
index 65657ce030..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/hour.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
- // Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_HOUR_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_HOUR_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/base_units/si/second.hpp>
-
-namespace boost {
-namespace units {
-namespace metric {
-
-typedef scaled_base_unit<boost::units::si::second_base_unit, scale<60, static_rational<2> > > hour_base_unit;
-
-}
-
-template<>
-struct base_unit_info<metric::hour_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("hour"); }
- static BOOST_CONSTEXPR const char* symbol() { return("h"); }
-};
-
-}
-}
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_HOUR_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/knot.hpp b/contrib/restricted/boost/boost/units/base_units/metric/knot.hpp
deleted file mode 100644
index 6b85e6e806..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/knot.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_KNOT_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_KNOT_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/systems/si/velocity.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, knot, "knot", "kt", 1852./3600., boost::units::si::velocity, -403);
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_KNOT_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/liter.hpp b/contrib/restricted/boost/boost/units/base_units/metric/liter.hpp
deleted file mode 100644
index da901759b7..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/liter.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_LITER_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_LITER_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/systems/si/volume.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, liter, "liter", "L", 1.0e-3, si::volume, 13);
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_LITER_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/micron.hpp b/contrib/restricted/boost/boost/units/base_units/metric/micron.hpp
deleted file mode 100644
index c169cfdb32..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/micron.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_MICRON_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_MICRON_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/si/meter.hpp>
-
-namespace boost {
-namespace units {
-namespace metric {
-
-typedef scaled_base_unit<boost::units::si::meter_base_unit, scale<10, static_rational<-6> > > micron_base_unit;
-
-}
-
-template<>
-struct base_unit_info<metric::micron_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("micron"); }
- static BOOST_CONSTEXPR const char* symbol() { return("u"); }
-};
-
-}
-}
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_MICRON_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/minute.hpp b/contrib/restricted/boost/boost/units/base_units/metric/minute.hpp
deleted file mode 100644
index 3c0a68fc2c..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/minute.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_MINUTE_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_MINUTE_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/base_units/si/second.hpp>
-
-namespace boost {
-namespace units {
-namespace metric {
-
-typedef scaled_base_unit<boost::units::si::second_base_unit, scale<60, static_rational<1> > > minute_base_unit;
-
-}
-
-template<>
-struct base_unit_info<metric::minute_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("minute"); }
- static BOOST_CONSTEXPR const char* symbol() { return("min"); }
-};
-
-}
-}
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_MINUTE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/mmHg.hpp b/contrib/restricted/boost/boost/units/base_units/metric/mmHg.hpp
deleted file mode 100644
index 93e3869589..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/mmHg.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_MMHG_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_MMHG_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/systems/si/pressure.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, mmHg, "millimeters mercury", "mmHg", 133.322, si::pressure, -404);
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_MMHG_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/nautical_mile.hpp b/contrib/restricted/boost/boost/units/base_units/metric/nautical_mile.hpp
deleted file mode 100644
index 4f20951af8..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/nautical_mile.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_NAUTICAL_MILE_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_NAUTICAL_MILE_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/si/meter.hpp>
-
-namespace boost {
-namespace units {
-namespace metric {
-
-typedef scaled_base_unit<boost::units::si::meter_base_unit, scale<1852, static_rational<1> > > nautical_mile_base_unit;
-
-}
-
-template<>
-struct base_unit_info<metric::nautical_mile_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("nautical mile"); }
- static BOOST_CONSTEXPR const char* symbol() { return("nmi"); }
-};
-
-}
-}
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_NAUTICAL_MILE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/ton.hpp b/contrib/restricted/boost/boost/units/base_units/metric/ton.hpp
deleted file mode 100644
index 4f8e9643cd..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/ton.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_TON_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_TON_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/base_units/si/kilogram.hpp>
-//#include <boost/units/base_units/cgs/gram.hpp>
-
-namespace boost {
-namespace units {
-namespace metric {
-
-//typedef scaled_base_unit<boost::units::cgs::gram_base_unit, scale<10, static_rational<6> > > ton_base_unit;
-typedef scaled_base_unit<boost::units::si::kilogram_base_unit, scale<1000, static_rational<1> > > ton_base_unit;
-
-}
-
-template<>
-struct base_unit_info<metric::ton_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("metric ton"); }
- static BOOST_CONSTEXPR const char* symbol() { return("t"); }
-};
-
-}
-}
-
-#endif // BOOST_UNIT_SYSTEMS_METRIC_TON_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/torr.hpp b/contrib/restricted/boost/boost/units/base_units/metric/torr.hpp
deleted file mode 100644
index 08fd29a52c..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/torr.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_METRIC_TORR_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_METRIC_TORR_HPP_INCLUDED
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/systems/si/pressure.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(metric, torr, "torr", "Torr", 1.01325e5/760.0, si::pressure, -401);
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/base_units/metric/year.hpp b/contrib/restricted/boost/boost/units/base_units/metric/year.hpp
deleted file mode 100644
index 5d715e2de1..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/metric/year.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_OTHER_YEAR_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_OTHER_YEAR_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/si/second.hpp>
-
-// Julian year = 365.25 days exactly = 8766 hours exactly
-
-namespace boost {
-namespace units {
-namespace metric {
-
-typedef scaled_base_unit<boost::units::si::second_base_unit, scale<31557600, static_rational<1> > > year_base_unit;
-
-}
-
-template<>
-struct base_unit_info<metric::year_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("Julian year"); }
- static BOOST_CONSTEXPR const char* symbol() { return("yr"); }
-};
-
-}
-}
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/base_units/si/ampere.hpp b/contrib/restricted/boost/boost/units/base_units/si/ampere.hpp
deleted file mode 100644
index 0c21d67d16..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/si/ampere.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_AMPERE_BASE_UNIT_HPP
-#define BOOST_UNITS_SI_AMPERE_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-struct ampere_base_unit : public base_unit<ampere_base_unit, current_dimension, -6>
-{
- static std::string name() { return("ampere"); }
- static std::string symbol() { return("A"); }
-};
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::ampere_base_unit)
-
-#endif
-
-//#include <boost/units/base_units/detail/conversions.hpp>
-
-#endif // BOOST_UNITS_SI_AMPERE_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/si/candela.hpp b/contrib/restricted/boost/boost/units/base_units/si/candela.hpp
deleted file mode 100644
index ab7a795e2a..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/si/candela.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_CANDELA_BASE_UNIT_HPP
-#define BOOST_UNITS_SI_CANDELA_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/luminous_intensity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-struct candela_base_unit : public base_unit<candela_base_unit, luminous_intensity_dimension, -3>
-{
- static std::string name() { return("candela"); }
- static std::string symbol() { return("cd"); }
-};
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::candela_base_unit)
-
-#endif
-
-//#include <boost/units/base_units/detail/conversions.hpp>
-
-#endif // BOOST_UNITS_SI_CANDELA_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/si/kelvin.hpp b/contrib/restricted/boost/boost/units/base_units/si/kelvin.hpp
deleted file mode 100644
index 78fe1dd3cd..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/si/kelvin.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_KELVIN_BASE_UNIT_HPP
-#define BOOST_UNITS_SI_KELVIN_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/temperature.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-struct kelvin_base_unit : public base_unit<kelvin_base_unit, temperature_dimension, -5>
-{
- static std::string name() { return("kelvin"); }
- static std::string symbol() { return("K"); }
-};
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::kelvin_base_unit)
-
-#endif
-
-//#include <boost/units/base_units/detail/conversions.hpp>
-
-#endif // BOOST_UNITS_SI_KELVIN_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/si/kilogram.hpp b/contrib/restricted/boost/boost/units/base_units/si/kilogram.hpp
deleted file mode 100644
index 0f8b0a6c71..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/si/kilogram.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_KILOGRAM_BASE_UNIT_HPP
-#define BOOST_UNITS_SI_KILOGRAM_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/base_units/cgs/gram.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef scaled_base_unit<boost::units::cgs::gram_base_unit, scale<10, static_rational<3> > > kilogram_base_unit;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_KILOGRAM_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/si/meter.hpp b/contrib/restricted/boost/boost/units/base_units/si/meter.hpp
deleted file mode 100644
index 3a5fed237d..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/si/meter.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_METER_BASE_UNIT_HPP
-#define BOOST_UNITS_SI_METER_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-struct meter_base_unit : public base_unit<meter_base_unit, length_dimension, -9>
-{
- static std::string name() { return("meter"); }
- static std::string symbol() { return("m"); }
-};
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::meter_base_unit)
-
-#endif
-
-//#include <boost/units/base_units/detail/conversions.hpp>
-
-#endif // BOOST_UNITS_SI_METER_BASE_UNIT_HPP
-
diff --git a/contrib/restricted/boost/boost/units/base_units/si/mole.hpp b/contrib/restricted/boost/boost/units/base_units/si/mole.hpp
deleted file mode 100644
index 5b73313e1a..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/si/mole.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_MOLE_BASE_UNIT_HPP
-#define BOOST_UNITS_SI_MOLE_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/amount.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-struct mole_base_unit : public base_unit<mole_base_unit, amount_dimension, -4>
-{
- static std::string name() { return("mole"); }
- static std::string symbol() { return("mol"); }
-};
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::mole_base_unit)
-
-#endif
-
-//#include <boost/units/base_units/detail/conversions.hpp>
-
-#endif // BOOST_UNITS_SI_MOLE_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/si/second.hpp b/contrib/restricted/boost/boost/units/base_units/si/second.hpp
deleted file mode 100644
index 946c671973..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/si/second.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_SECOND_BASE_UNIT_HPP
-#define BOOST_UNITS_SI_SECOND_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-struct second_base_unit : public base_unit<second_base_unit, time_dimension, -7>
-{
- static std::string name() { return("second"); }
- static std::string symbol() { return("s"); }
-};
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::second_base_unit)
-
-#endif
-
-//#include <boost/units/base_units/detail/conversions.hpp>
-
-#endif // BOOST_UNITS_SI_SECOND_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/temperature/celsius.hpp b/contrib/restricted/boost/boost/units/base_units/temperature/celsius.hpp
deleted file mode 100644
index dff70a1cd1..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/temperature/celsius.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_TEMPERATURE_CELSIUS_BASE_UNIT_HPP
-#define BOOST_UNITS_TEMPERATURE_CELSIUS_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/temperature.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace temperature {
-
-struct celsius_base_unit : public base_unit<celsius_base_unit, temperature_dimension, -1008>
-{
- static std::string name() { return("celsius"); }
- static std::string symbol() { return("C"); }
-};
-
-} // namespace temperature
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::temperature::celsius_base_unit)
-
-#endif
-
-#include <boost/units/base_units/temperature/conversions.hpp>
-
-#endif // BOOST_UNITS_TEMPERATURE_CELSIUS_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/temperature/conversions.hpp b/contrib/restricted/boost/boost/units/base_units/temperature/conversions.hpp
deleted file mode 100644
index e4e45de99f..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/temperature/conversions.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-// No include guards. This header is intended to be included
-// multiple times.
-
-// units of temperature
-
-#if defined(BOOST_UNITS_SI_KELVIN_BASE_UNIT_HPP) && defined(BOOST_UNITS_TEMPERATURE_CELSIUS_BASE_UNIT_HPP) &&\
- !defined(BOOST_UNITS_SYSTEMS_KELVIN_TO_CELSIUS_CONVERSION_DEFINED)
- #define BOOST_UNITS_SYSTEMS_KELVIN_TO_CELSIUS_CONVERSION_DEFINED
- #include <boost/units/conversion.hpp>
- #include <boost/units/absolute.hpp>
- BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::si::kelvin_base_unit, boost::units::temperature::celsius_base_unit, one, make_one());
- BOOST_UNITS_DEFINE_CONVERSION_OFFSET(boost::units::si::kelvin_base_unit, boost::units::temperature::celsius_base_unit, double, -273.15);
-#endif
-
-#if defined(BOOST_UNITS_SI_KELVIN_BASE_UNIT_HPP) && defined(BOOST_UNITS_TEMPERATURE_FAHRENHEIT_BASE_UNIT_HPP) &&\
- !defined(BOOST_UNITS_SYSTEMS_KELVIN_TO_FAHRENHEIT_CONVERSION_DEFINED)
- #define BOOST_UNITS_SYSTEMS_KELVIN_TO_FAHRENHEIT_CONVERSION_DEFINED
- #include <boost/units/conversion.hpp>
- #include <boost/units/absolute.hpp>
- BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::si::kelvin_base_unit, boost::units::temperature::fahrenheit_base_unit, double, 9.0/5.0);
- BOOST_UNITS_DEFINE_CONVERSION_OFFSET(boost::units::si::kelvin_base_unit, boost::units::temperature::fahrenheit_base_unit, double, -273.15 * 9.0 / 5.0 + 32.0);
-#endif
-
-#if defined(BOOST_UNITS_TEMPERATURE_CELSIUS_BASE_UNIT_HPP) && defined(BOOST_UNITS_TEMPERATURE_FAHRENHEIT_BASE_UNIT_HPP) &&\
- !defined(BOOST_UNITS_SYSTEMS_CELSUIS_TO_FAHRENHEIT_CONVERSION_DEFINED)
- #define BOOST_UNITS_SYSTEMS_CELSUIS_TO_FAHRENHEIT_CONVERSION_DEFINED
- #include <boost/units/conversion.hpp>
- #include <boost/units/absolute.hpp>
- BOOST_UNITS_DEFINE_CONVERSION_FACTOR(boost::units::temperature::celsius_base_unit, boost::units::temperature::fahrenheit_base_unit, double, 9.0/5.0);
- BOOST_UNITS_DEFINE_CONVERSION_OFFSET(boost::units::temperature::celsius_base_unit, boost::units::temperature::fahrenheit_base_unit, double, 32.0);
-#endif
-
diff --git a/contrib/restricted/boost/boost/units/base_units/temperature/fahrenheit.hpp b/contrib/restricted/boost/boost/units/base_units/temperature/fahrenheit.hpp
deleted file mode 100644
index ff0149f856..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/temperature/fahrenheit.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_TEMPERATURE_FAHRENHEIT_BASE_UNIT_HPP
-#define BOOST_UNITS_TEMPERATURE_FAHRENHEIT_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/temperature.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace temperature {
-
-struct fahrenheit_base_unit : public base_unit<fahrenheit_base_unit, temperature_dimension, -1007>
-{
- static std::string name() { return("fahrenheit"); }
- static std::string symbol() { return("F"); }
-};
-
-} // namespace temperature
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::temperature::fahrenheit_base_unit)
-
-#endif
-
-#include <boost/units/base_units/temperature/conversions.hpp>
-
-#endif // BOOST_UNITS_TEMPERATURE_FAHRENHEIT_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/us/cup.hpp b/contrib/restricted/boost/boost/units/base_units/us/cup.hpp
deleted file mode 100644
index 86b408322c..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/cup.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_US_CUP_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_US_CUP_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<-1> > > cup_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::cup_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("cup"); }
- static BOOST_CONSTEXPR const char* symbol() { return("c"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_US_CUP_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/dram.hpp b/contrib/restricted/boost/boost/units/base_units/us/dram.hpp
deleted file mode 100644
index 29e08d9e79..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/dram.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_BASE_UNITS_US_DRAM_HPP_INCLUDED
-#define BOOST_UNIT_BASE_UNITS_US_DRAM_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pound.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pound_base_unit, scale<16, static_rational<-2> > > dram_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::dram_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("dram (U.S.)"); }
- static BOOST_CONSTEXPR const char* symbol() { return("dr"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_BASE_UNITS_US_DRAM_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/fluid_dram.hpp b/contrib/restricted/boost/boost/units/base_units/us/fluid_dram.hpp
deleted file mode 100644
index 0b9c60d766..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/fluid_dram.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_US_FLUID_DRAM_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_US_FLUID_DRAM_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<-7> > > fluid_dram_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::fluid_dram_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("fluid dram (U.S.)"); }
- static BOOST_CONSTEXPR const char* symbol() { return("fl dr"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_US_FLUID_DRAM_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/fluid_ounce.hpp b/contrib/restricted/boost/boost/units/base_units/us/fluid_ounce.hpp
deleted file mode 100644
index c7f0f07ee8..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/fluid_ounce.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_US_FLUID_OUNCE_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_US_FLUID_OUNCE_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pint_base_unit, scale<16, static_rational<-1> > > fluid_ounce_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::fluid_ounce_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("fluid ounce (U.S.)"); }
- static BOOST_CONSTEXPR const char* symbol() { return("fl oz"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_US_FLUID_OUNCE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/foot.hpp b/contrib/restricted/boost/boost/units/base_units/us/foot.hpp
deleted file mode 100644
index 16cbf6d2b4..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/foot.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_US_FOOT_BASE_UNIT_HPP
-#define BOOST_UNITS_US_FOOT_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/yard.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<yard_base_unit, scale<3, static_rational<-1> > > foot_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::foot_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("foot"); }
- static BOOST_CONSTEXPR const char* symbol() { return("ft"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_US_FOOT_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/us/gallon.hpp b/contrib/restricted/boost/boost/units/base_units/us/gallon.hpp
deleted file mode 100644
index 1b54b28f19..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/gallon.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_US_GALLON_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_US_GALLON_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<3> > > gallon_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::gallon_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("gallon (U.S.)"); }
- static BOOST_CONSTEXPR const char* symbol() { return("gal"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_US_GALLON_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/gill.hpp b/contrib/restricted/boost/boost/units/base_units/us/gill.hpp
deleted file mode 100644
index c654386a21..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/gill.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_US_GILL_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_US_GILL_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<-2> > > gill_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::gill_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("gill (U.S.)"); }
- static BOOST_CONSTEXPR const char* symbol() { return("gi"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_US_GILL_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/grain.hpp b/contrib/restricted/boost/boost/units/base_units/us/grain.hpp
deleted file mode 100644
index 485b68723f..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/grain.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_BASE_UNITS_US_GRAIN_HPP_INCLUDED
-#define BOOST_UNIT_BASE_UNITS_US_GRAIN_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pound.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pound_base_unit, scale<7000, static_rational<-1> > > grain_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::grain_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("grain"); }
- static BOOST_CONSTEXPR const char* symbol() { return("gr"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_BASE_UNITS_US_GRAIN_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/hundredweight.hpp b/contrib/restricted/boost/boost/units/base_units/us/hundredweight.hpp
deleted file mode 100644
index 2ac991b975..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/hundredweight.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_BASE_UNITS_US_HUNDREDWEIGHT_HPP_INCLUDED
-#define BOOST_UNIT_BASE_UNITS_US_HUNDREDWEIGHT_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pound.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-//typedef scaled_base_unit<pound_base_unit, scale<10, static_rational<2> > > hundredweight_base_unit;
-typedef scaled_base_unit<pound_base_unit, scale<100, static_rational<1> > > hundredweight_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::hundredweight_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("hundredweight (U.S.)"); }
- static BOOST_CONSTEXPR const char* symbol() { return("cwt"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_BASE_UNITS_US_HUNDREDWEIGHT_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/inch.hpp b/contrib/restricted/boost/boost/units/base_units/us/inch.hpp
deleted file mode 100644
index e7bd91da5a..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/inch.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_US_INCH_BASE_UNIT_HPP
-#define BOOST_UNITS_US_INCH_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/yard.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<yard_base_unit, scale<36, static_rational<-1> > > inch_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::inch_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("inch"); }
- static BOOST_CONSTEXPR const char* symbol() { return("in"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_US_INCH_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/us/mil.hpp b/contrib/restricted/boost/boost/units/base_units/us/mil.hpp
deleted file mode 100644
index e3276fe7b8..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/mil.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_US_MIL_BASE_UNIT_HPP
-#define BOOST_UNITS_US_MIL_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/yard.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<yard_base_unit, scale<36000, static_rational<-1> > > mil_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::mil_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("mil"); }
- static BOOST_CONSTEXPR const char* symbol() { return("mil"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_US_MIL_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/us/mile.hpp b/contrib/restricted/boost/boost/units/base_units/us/mile.hpp
deleted file mode 100644
index c62c0d5fc8..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/mile.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_US_MILE_BASE_UNIT_HPP
-#define BOOST_UNITS_US_MILE_BASE_UNIT_HPP
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/yard.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<yard_base_unit, scale<1760, static_rational<1> > > mile_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::mile_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("mile"); }
- static BOOST_CONSTEXPR const char* symbol() { return("mi"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_US_MILE_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/base_units/us/minim.hpp b/contrib/restricted/boost/boost/units/base_units/us/minim.hpp
deleted file mode 100644
index d877e2652c..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/minim.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_US_MINIM_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_US_MINIM_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pint_base_unit, scale<7680, static_rational<-1> > > minim_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::minim_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("minim (U.S.)"); }
- static BOOST_CONSTEXPR const char* symbol() { return("minim"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_US_MINIM_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/ounce.hpp b/contrib/restricted/boost/boost/units/base_units/us/ounce.hpp
deleted file mode 100644
index 9a4ec3e63a..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/ounce.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_US_OUNCE_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_US_OUNCE_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pound.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pound_base_unit, scale<2, static_rational<-4> > > ounce_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::ounce_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("ounce"); }
- static BOOST_CONSTEXPR const char* symbol() { return("oz"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_SYSTEMS_US_OUNCE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/pint.hpp b/contrib/restricted/boost/boost/units/base_units/us/pint.hpp
deleted file mode 100644
index 3a923b883e..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/pint.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_US_PINT_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_US_PINT_HPP_INCLUDED
-
-#include <boost/units/config.hpp>
-#include <boost/units/systems/si/volume.hpp>
-#include <boost/units/conversion.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(us, pint, "pint (U.S.)", "pt", 0.4731765e-3, si::volume, -503);
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::us::pint_base_unit)
-
-#endif
-
-#endif // BOOST_UNITS_BASE_UNITS_US_PINT_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/pound.hpp b/contrib/restricted/boost/boost/units/base_units/us/pound.hpp
deleted file mode 100644
index bef6cde3b9..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/pound.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_US_POUND_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_US_POUND_HPP_INCLUDED
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/base_units/cgs/gram.hpp>
-#include <boost/units/conversion.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(us, pound, "pound", "lb", 453.59237, cgs::gram_base_unit, -502); // exact conversion
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::us::pound_base_unit)
-
-#endif
-
-#endif // BOOST_UNIT_SYSTEMS_US_POUND_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/pound_force.hpp b/contrib/restricted/boost/boost/units/base_units/us/pound_force.hpp
deleted file mode 100644
index 9749d5eb0e..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/pound_force.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2009 Matthias Christian Schabel
-// Copyright (C) 2007-2009 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_SYSTEMS_US_POUND_FORCE_HPP_INCLUDED
-#define BOOST_UNIT_SYSTEMS_US_POUND_FORCE_HPP_INCLUDED
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-//#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/systems/si/force.hpp>
-#include <boost/units/conversion.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(us, pound_force, "pound-force", "lbf", 4.4482216152605, si::force, -600); // exact conversion
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::us::pound_force_base_unit)
-
-#endif
-
-#endif // BOOST_UNIT_SYSTEMS_US_POUND_FORCE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/quart.hpp b/contrib/restricted/boost/boost/units/base_units/us/quart.hpp
deleted file mode 100644
index b39252a418..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/quart.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_US_QUART_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_US_QUART_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<1> > > quart_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::quart_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("quart (U.S.)"); }
- static BOOST_CONSTEXPR const char* symbol() { return("qt"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_US_QUART_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/tablespoon.hpp b/contrib/restricted/boost/boost/units/base_units/us/tablespoon.hpp
deleted file mode 100644
index 43418ed3eb..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/tablespoon.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_US_TABLESPOON_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_US_TABLESPOON_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pint_base_unit, scale<2, static_rational<-5> > > tablespoon_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::tablespoon_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("tablespoon"); }
- static BOOST_CONSTEXPR const char* symbol() { return("tbsp"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_US_TABLESPOON_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/teaspoon.hpp b/contrib/restricted/boost/boost/units/base_units/us/teaspoon.hpp
deleted file mode 100644
index 94fe655b7e..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/teaspoon.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_BASE_UNITS_US_TEASPOON_HPP_INCLUDED
-#define BOOST_UNITS_BASE_UNITS_US_TEASPOON_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pint.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pint_base_unit, scale<96, static_rational<-1> > > teaspoon_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::teaspoon_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("teaspoon"); }
- static BOOST_CONSTEXPR const char* symbol() { return("tsp"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_BASE_UNITS_US_TEASPOON_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/ton.hpp b/contrib/restricted/boost/boost/units/base_units/us/ton.hpp
deleted file mode 100644
index d1f52e8319..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/ton.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNIT_BASE_UNITS_US_TON_HPP_INCLUDED
-#define BOOST_UNIT_BASE_UNITS_US_TON_HPP_INCLUDED
-
-#include <boost/units/scaled_base_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/base_units/us/pound.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace us {
-
-typedef scaled_base_unit<pound_base_unit, scale<2000, static_rational<1> > > ton_base_unit;
-
-} // namespace us
-
-template<>
-struct base_unit_info<us::ton_base_unit> {
- static BOOST_CONSTEXPR const char* name() { return("short ton"); }
- static BOOST_CONSTEXPR const char* symbol() { return("t"); }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNIT_BASE_UNITS_US_TON_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/base_units/us/yard.hpp b/contrib/restricted/boost/boost/units/base_units/us/yard.hpp
deleted file mode 100644
index b609eaefa6..0000000000
--- a/contrib/restricted/boost/boost/units/base_units/us/yard.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SYSTEMS_US_YARD_BASE_UNIT_HPP
-#define BOOST_UNITS_SYSTEMS_US_YARD_BASE_UNIT_HPP
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_unit.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/base_units/si/meter.hpp>
-#include <boost/units/conversion.hpp>
-
-BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(us, yard, "yard", "yd", 0.9144, si::meter_base_unit, -501); // exact conversion
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::us::yard_base_unit)
-
-#endif
-
-#endif // BOOST_UNITS_SYSTEMS_US_YARD_BASE_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/cmath.hpp b/contrib/restricted/boost/boost/units/cmath.hpp
deleted file mode 100644
index da3da46f46..0000000000
--- a/contrib/restricted/boost/boost/units/cmath.hpp
+++ /dev/null
@@ -1,729 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CMATH_HPP
-#define BOOST_UNITS_CMATH_HPP
-
-#include <boost/config/no_tr1/cmath.hpp>
-#include <cstdlib>
-
-#include <boost/math/special_functions/fpclassify.hpp>
-#include <boost/math/special_functions/hypot.hpp>
-#include <boost/math/special_functions/next.hpp>
-#include <boost/math/special_functions/round.hpp>
-#include <boost/math/special_functions/sign.hpp>
-
-#include <boost/units/dimensionless_quantity.hpp>
-#include <boost/units/pow.hpp>
-#include <boost/units/quantity.hpp>
-#include <boost/units/detail/cmath_impl.hpp>
-#include <boost/units/detail/dimensionless_unit.hpp>
-
-#include <boost/units/systems/si/plane_angle.hpp>
-
-/// \file
-/// \brief Overloads of functions in \<cmath\> for quantities.
-/// \details Only functions for which a dimensionally-correct result type
-/// can be determined are overloaded.
-/// All functions work with dimensionless quantities.
-
-// BOOST_PREVENT_MACRO_SUBSTITUTION is needed on certain compilers that define
-// some <cmath> functions as macros; it is used for all functions even though it
-// isn't necessary -- I didn't want to think :)
-//
-// the form using namespace detail; return(f(x)); is used
-// to enable ADL for UDTs.
-
-namespace boost {
-
-namespace units {
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-bool
-isfinite BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using boost::math::isfinite;
- return isfinite BOOST_PREVENT_MACRO_SUBSTITUTION (q.value());
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-bool
-isinf BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using boost::math::isinf;
- return isinf BOOST_PREVENT_MACRO_SUBSTITUTION (q.value());
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-bool
-isnan BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using boost::math::isnan;
- return isnan BOOST_PREVENT_MACRO_SUBSTITUTION (q.value());
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-bool
-isnormal BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using boost::math::isnormal;
- return isnormal BOOST_PREVENT_MACRO_SUBSTITUTION (q.value());
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-bool
-isgreater BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,
- const quantity<Unit,Y>& q2)
-{
- using namespace detail;
- return isgreater BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value());
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-bool
-isgreaterequal BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,
- const quantity<Unit,Y>& q2)
-{
- using namespace detail;
- return isgreaterequal BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value());
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-bool
-isless BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,
- const quantity<Unit,Y>& q2)
-{
- using namespace detail;
- return isless BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value());
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-bool
-islessequal BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,
- const quantity<Unit,Y>& q2)
-{
- using namespace detail;
- return islessequal BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value());
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-bool
-islessgreater BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,
- const quantity<Unit,Y>& q2)
-{
- using namespace detail;
- return islessgreater BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value());
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-bool
-isunordered BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,
- const quantity<Unit,Y>& q2)
-{
- using namespace detail;
- return isunordered BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value());
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y>
-abs BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using std::abs;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(abs BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()));
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y>
-ceil BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using std::ceil;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(ceil BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()));
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y>
-copysign BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,
- const quantity<Unit,Y>& q2)
-{
- using boost::math::copysign;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(copysign BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()));
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y>
-fabs BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using std::fabs;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(fabs BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()));
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y>
-floor BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using std::floor;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(floor BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()));
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y>
-fdim BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,
- const quantity<Unit,Y>& q2)
-{
- using namespace detail;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(fdim BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()));
-}
-
-#if 0
-
-template<class Unit1,class Unit2,class Unit3,class Y>
-inline
-BOOST_CONSTEXPR
-typename add_typeof_helper<
- typename multiply_typeof_helper<quantity<Unit1,Y>,
- quantity<Unit2,Y> >::type,
- quantity<Unit3,Y> >::type
-fma BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit1,Y>& q1,
- const quantity<Unit2,Y>& q2,
- const quantity<Unit3,Y>& q3)
-{
- using namespace detail;
-
- typedef quantity<Unit1,Y> type1;
- typedef quantity<Unit2,Y> type2;
- typedef quantity<Unit3,Y> type3;
-
- typedef typename multiply_typeof_helper<type1,type2>::type prod_type;
- typedef typename add_typeof_helper<prod_type,type3>::type quantity_type;
-
- return quantity_type::from_value(fma BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value(),q3.value()));
-}
-
-#endif
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y>
-fmax BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,
- const quantity<Unit,Y>& q2)
-{
- using namespace detail;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(fmax BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()));
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y>
-fmin BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,
- const quantity<Unit,Y>& q2)
-{
- using namespace detail;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(fmin BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()));
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-int
-fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using boost::math::fpclassify;
-
- return fpclassify BOOST_PREVENT_MACRO_SUBSTITUTION (q.value());
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-typename root_typeof_helper<
- typename add_typeof_helper<
- typename power_typeof_helper<quantity<Unit,Y>,
- static_rational<2> >::type,
- typename power_typeof_helper<quantity<Unit,Y>,
- static_rational<2> >::type>::type,
- static_rational<2> >::type
-hypot BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,const quantity<Unit,Y>& q2)
-{
- using boost::math::hypot;
-
- typedef quantity<Unit,Y> type1;
-
- typedef typename power_typeof_helper<type1,static_rational<2> >::type pow_type;
- typedef typename add_typeof_helper<pow_type,pow_type>::type add_type;
- typedef typename root_typeof_helper<add_type,static_rational<2> >::type quantity_type;
-
- return quantity_type::from_value(hypot BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()));
-}
-
-// does ISO C++ support long long? g++ claims not
-//template<class Unit,class Y>
-//inline
-//BOOST_CONSTEXPR
-//quantity<Unit,long long>
-//llrint BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-//{
-// using namespace detail;
-//
-// typedef quantity<Unit,long long> quantity_type;
-//
-// return quantity_type::from_value(llrint BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()));
-//}
-
-// does ISO C++ support long long? g++ claims not
-//template<class Unit,class Y>
-//inline
-//BOOST_CONSTEXPR
-//quantity<Unit,long long>
-//llround BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-//{
-// using namespace detail;
-//
-// typedef quantity<Unit,long long> quantity_type;
-//
-// return quantity_type::from_value(llround BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()));
-//}
-
-#if 0
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y>
-nearbyint BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using namespace detail;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(nearbyint BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()));
-}
-
-#endif
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y> nextafter BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,
- const quantity<Unit,Y>& q2)
-{
- using boost::math::nextafter;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(nextafter BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()));
-}
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y> nexttoward BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q1,
- const quantity<Unit,Y>& q2)
-{
- // the only difference between nextafter and nexttowards is
- // in the argument types. Since we are requiring identical
- // argument types, there is no difference.
- using boost::math::nextafter;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(nextafter BOOST_PREVENT_MACRO_SUBSTITUTION (q1.value(),q2.value()));
-}
-
-#if 0
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y>
-rint BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using namespace detail;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(rint BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()));
-}
-
-#endif
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y>
-round BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using boost::math::round;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(round BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()));
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-int
-signbit BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using boost::math::signbit;
-
- return signbit BOOST_PREVENT_MACRO_SUBSTITUTION (q.value());
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit,Y>
-trunc BOOST_PREVENT_MACRO_SUBSTITUTION (const quantity<Unit,Y>& q)
-{
- using namespace detail;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(trunc BOOST_PREVENT_MACRO_SUBSTITUTION (q.value()));
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit, Y>
-fmod(const quantity<Unit,Y>& q1, const quantity<Unit,Y>& q2)
-{
- using std::fmod;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(fmod(q1.value(), q2.value()));
-}
-
-template<class Unit, class Y>
-inline
-BOOST_CONSTEXPR
-quantity<Unit, Y>
-modf(const quantity<Unit, Y>& q1, quantity<Unit, Y>* q2)
-{
- using std::modf;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(modf(q1.value(), &quantity_cast<Y&>(*q2)));
-}
-
-template<class Unit, class Y, class Int>
-inline
-BOOST_CONSTEXPR
-quantity<Unit, Y>
-frexp(const quantity<Unit, Y>& q,Int* ex)
-{
- using std::frexp;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(frexp(q.value(),ex));
-}
-
-/// For non-dimensionless quantities, integral and rational powers
-/// and roots can be computed by @c pow<Ex> and @c root<Rt> respectively.
-template<class S, class Y>
-inline
-BOOST_CONSTEXPR
-quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>
-pow(const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>& q1,
- const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>& q2)
-{
- using std::pow;
-
- typedef quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S),Y> quantity_type;
-
- return quantity_type::from_value(pow(q1.value(), q2.value()));
-}
-
-template<class S, class Y>
-inline
-BOOST_CONSTEXPR
-quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>
-exp(const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>& q)
-{
- using std::exp;
-
- typedef quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y> quantity_type;
-
- return quantity_type::from_value(exp(q.value()));
-}
-
-template<class Unit, class Y, class Int>
-inline
-BOOST_CONSTEXPR
-quantity<Unit, Y>
-ldexp(const quantity<Unit, Y>& q,const Int& ex)
-{
- using std::ldexp;
-
- typedef quantity<Unit,Y> quantity_type;
-
- return quantity_type::from_value(ldexp(q.value(), ex));
-}
-
-template<class S, class Y>
-inline
-BOOST_CONSTEXPR
-quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>
-log(const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>& q)
-{
- using std::log;
-
- typedef quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y> quantity_type;
-
- return quantity_type::from_value(log(q.value()));
-}
-
-template<class S, class Y>
-inline
-BOOST_CONSTEXPR
-quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>
-log10(const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y>& q)
-{
- using std::log10;
-
- typedef quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(S), Y> quantity_type;
-
- return quantity_type::from_value(log10(q.value()));
-}
-
-template<class Unit,class Y>
-inline
-BOOST_CONSTEXPR
-typename root_typeof_helper<
- quantity<Unit,Y>,
- static_rational<2>
- >::type
-sqrt(const quantity<Unit,Y>& q)
-{
- using std::sqrt;
-
- typedef typename root_typeof_helper<
- quantity<Unit,Y>,
- static_rational<2>
- >::type quantity_type;
-
- return quantity_type::from_value(sqrt(q.value()));
-}
-
-} // namespace units
-
-} // namespace boost
-
-namespace boost {
-
-namespace units {
-
-// trig functions with si argument/return types
-
-/// cos of theta in radians
-template<class Y>
-BOOST_CONSTEXPR
-typename dimensionless_quantity<si::system,Y>::type
-cos(const quantity<si::plane_angle,Y>& theta)
-{
- using std::cos;
- return cos(theta.value());
-}
-
-/// sin of theta in radians
-template<class Y>
-BOOST_CONSTEXPR
-typename dimensionless_quantity<si::system,Y>::type
-sin(const quantity<si::plane_angle,Y>& theta)
-{
- using std::sin;
- return sin(theta.value());
-}
-
-/// tan of theta in radians
-template<class Y>
-BOOST_CONSTEXPR
-typename dimensionless_quantity<si::system,Y>::type
-tan(const quantity<si::plane_angle,Y>& theta)
-{
- using std::tan;
- return tan(theta.value());
-}
-
-/// cos of theta in other angular units
-template<class System,class Y>
-BOOST_CONSTEXPR
-typename dimensionless_quantity<System,Y>::type
-cos(const quantity<unit<plane_angle_dimension,System>,Y>& theta)
-{
- return cos(quantity<si::plane_angle,Y>(theta));
-}
-
-/// sin of theta in other angular units
-template<class System,class Y>
-BOOST_CONSTEXPR
-typename dimensionless_quantity<System,Y>::type
-sin(const quantity<unit<plane_angle_dimension,System>,Y>& theta)
-{
- return sin(quantity<si::plane_angle,Y>(theta));
-}
-
-/// tan of theta in other angular units
-template<class System,class Y>
-BOOST_CONSTEXPR
-typename dimensionless_quantity<System,Y>::type
-tan(const quantity<unit<plane_angle_dimension,System>,Y>& theta)
-{
- return tan(quantity<si::plane_angle,Y>(theta));
-}
-
-/// acos of dimensionless quantity returning angle in same system
-template<class Y,class System>
-BOOST_CONSTEXPR
-quantity<unit<plane_angle_dimension, homogeneous_system<System> >,Y>
-acos(const quantity<unit<dimensionless_type, homogeneous_system<System> >,Y>& val)
-{
- using std::acos;
- return quantity<unit<plane_angle_dimension, homogeneous_system<System> >,Y>(acos(val.value())*si::radians);
-}
-
-/// acos of dimensionless quantity returning angle in radians
-template<class Y>
-BOOST_CONSTEXPR
-quantity<angle::radian_base_unit::unit_type,Y>
-acos(const quantity<unit<dimensionless_type, heterogeneous_dimensionless_system>,Y>& val)
-{
- using std::acos;
- return quantity<angle::radian_base_unit::unit_type,Y>::from_value(acos(val.value()));
-}
-
-/// asin of dimensionless quantity returning angle in same system
-template<class Y,class System>
-BOOST_CONSTEXPR
-quantity<unit<plane_angle_dimension, homogeneous_system<System> >,Y>
-asin(const quantity<unit<dimensionless_type, homogeneous_system<System> >,Y>& val)
-{
- using std::asin;
- return quantity<unit<plane_angle_dimension, homogeneous_system<System> >,Y>(asin(val.value())*si::radians);
-}
-
-/// asin of dimensionless quantity returning angle in radians
-template<class Y>
-BOOST_CONSTEXPR
-quantity<angle::radian_base_unit::unit_type,Y>
-asin(const quantity<unit<dimensionless_type, heterogeneous_dimensionless_system>,Y>& val)
-{
- using std::asin;
- return quantity<angle::radian_base_unit::unit_type,Y>::from_value(asin(val.value()));
-}
-
-/// atan of dimensionless quantity returning angle in same system
-template<class Y,class System>
-BOOST_CONSTEXPR
-quantity<unit<plane_angle_dimension, homogeneous_system<System> >,Y>
-atan(const quantity<unit<dimensionless_type, homogeneous_system<System> >, Y>& val)
-{
- using std::atan;
- return quantity<unit<plane_angle_dimension, homogeneous_system<System> >,Y>(atan(val.value())*si::radians);
-}
-
-/// atan of dimensionless quantity returning angle in radians
-template<class Y>
-BOOST_CONSTEXPR
-quantity<angle::radian_base_unit::unit_type,Y>
-atan(const quantity<unit<dimensionless_type, heterogeneous_dimensionless_system>, Y>& val)
-{
- using std::atan;
- return quantity<angle::radian_base_unit::unit_type,Y>::from_value(atan(val.value()));
-}
-
-/// atan2 of @c value_type returning angle in radians
-template<class Y, class Dimension, class System>
-BOOST_CONSTEXPR
-quantity<unit<plane_angle_dimension, homogeneous_system<System> >, Y>
-atan2(const quantity<unit<Dimension, homogeneous_system<System> >, Y>& y,
- const quantity<unit<Dimension, homogeneous_system<System> >, Y>& x)
-{
- using std::atan2;
- return quantity<unit<plane_angle_dimension, homogeneous_system<System> >, Y>(atan2(y.value(),x.value())*si::radians);
-}
-
-/// atan2 of @c value_type returning angle in radians
-template<class Y, class Dimension, class System>
-BOOST_CONSTEXPR
-quantity<angle::radian_base_unit::unit_type,Y>
-atan2(const quantity<unit<Dimension, heterogeneous_system<System> >, Y>& y,
- const quantity<unit<Dimension, heterogeneous_system<System> >, Y>& x)
-{
- using std::atan2;
- return quantity<angle::radian_base_unit::unit_type,Y>::from_value(atan2(y.value(),x.value()));
-}
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CMATH_HPP
diff --git a/contrib/restricted/boost/boost/units/config.hpp b/contrib/restricted/boost/boost/units/config.hpp
deleted file mode 100644
index 64e9025ce6..0000000000
--- a/contrib/restricted/boost/boost/units/config.hpp
+++ /dev/null
@@ -1,98 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CONFIG_HPP
-#define BOOST_UNITS_CONFIG_HPP
-
-#include <boost/config.hpp>
-#include <boost/version.hpp>
-
-#ifndef BOOST_UNITS_HAS_BOOST_TYPEOF
- #if (BOOST_VERSION >= 103400)
- ///INTERNAL ONLY
- #define BOOST_UNITS_HAS_BOOST_TYPEOF 1
- #else
- ///INTERNAL ONLY
- #define BOOST_UNITS_HAS_BOOST_TYPEOF 0
- #endif
-#endif
-
-#if (BOOST_UNITS_HAS_BOOST_TYPEOF)
- #include <boost/typeof/typeof.hpp>
- ///INTERNAL ONLY
- #define BOOST_UNITS_HAS_TYPEOF 1
-#else
- #if (__GNUC__ && __cplusplus)
- ///INTERNAL ONLY
- #define BOOST_UNITS_HAS_TYPEOF 1
- ///INTERNAL ONLY
- #define BOOST_UNITS_HAS_GNU_TYPEOF 1
- #elif defined(__MWERKS__)
- ///INTERNAL ONLY
- #define BOOST_UNITS_HAS_TYPEOF 1
- ///INTERNAL ONLY
- #define BOOST_UNITS_HAS_MWERKS_TYPEOF 1
- #else
- ///INTERNAL ONLY
- #define BOOST_UNITS_HAS_TYPEOF 0
- #endif
-#endif
-
-// uncomment this to test without typeof support at all
-//#undef BOOST_UNITS_HAS_TYPEOF
-//#define BOOST_UNITS_HAS_TYPEOF 0
-
-#ifndef BOOST_UNITS_NO_COMPILER_CHECK
-
- #ifdef BOOST_NO_MEMBER_TEMPLATES
- #error Boost.Units requires member template
- #endif
-
- #ifdef BOOST_NO_MEMBER_TEMPLATE_KEYWORD
- #error Boost.Units requires member template keyword
- #endif
-
- #ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
- #error Boost.Units requires in class member initialization
- #endif
-
- #ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
- #error Boost.Units requires function template partial ordering
- #endif
-
-
-#endif
-
-#ifdef BOOST_UNITS_REQUIRE_LAYOUT_COMPATIBILITY
- ///INTERNAL ONLY
- #define BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(a, b) BOOST_STATIC_ASSERT((sizeof(a) == sizeof(b)))
-#else
- ///INTERNAL ONLY
- #define BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(a, b)
-#endif
-
-#ifdef BOOST_UNITS_DOXYGEN
-
-/// If defined will trigger a static assertion if quantity<Unit, T>
-/// is not layout compatible with T
-#define BOOST_UNITS_REQUIRE_LAYOUT_COMPATIBILITY
-
-/// If defined will disable a preprocessor check that the
-/// compiler is able to handle the library.
-#define BOOST_UNITS_NO_COMPILER_CHECK
-
-/// Enable checking to verify that a homogeneous system
-/// is actually capable of representing all the dimensions
-/// that it is used with. Off by default.
-#define BOOST_UNITS_CHECK_HOMOGENEOUS_UNITS
-
-#endif
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/conversion.hpp b/contrib/restricted/boost/boost/units/conversion.hpp
deleted file mode 100644
index f5d4a1ef2f..0000000000
--- a/contrib/restricted/boost/boost/units/conversion.hpp
+++ /dev/null
@@ -1,186 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CONVERSION_HPP
-#define BOOST_UNITS_CONVERSION_HPP
-
-/// \file
-/// \brief Template for defining conversions between quantities.
-
-#include <boost/units/detail/conversion_impl.hpp>
-
-namespace boost {
-
-namespace units {
-
-template<class From, class To>
-struct conversion_helper;
-
-#ifdef BOOST_UNITS_DOXYGEN
-
-/// Template for defining conversions between
-/// quantities. This template should be specialized
-/// for every quantity that allows conversions.
-/// For example, if you have a two units
-/// called pair and dozen you would write
-/// @code
-/// namespace boost {
-/// namespace units {
-/// template<class T0, class T1>
-/// struct conversion_helper<quantity<dozen, T0>, quantity<pair, T1> >
-/// {
-/// static quantity<pair, T1> convert(const quantity<dozen, T0>& source)
-/// {
-/// return(quantity<pair, T1>::from_value(6 * source.value()));
-/// }
-/// };
-/// }
-/// }
-/// @endcode
-///
-/// In most cases, the predefined specializations for @c unit
-/// and @c absolute should be sufficient, so users should rarely
-/// need to use this.
-template<class From, class To>
-struct conversion_helper
-{
- static BOOST_CONSTEXPR To convert(const From&);
-};
-
-#endif
-
-/// Defines the conversion factor from a base unit to any unit
-/// or to another base unit with the correct dimensions. Uses
-/// of this macro must appear at global scope.
-/// If the destination unit is a base unit or a unit that contains
-/// only one base unit which is raised to the first power (e.g. feet->meters)
-/// the reverse (meters->feet in this example) need not be defined explicitly.
-#define BOOST_UNITS_DEFINE_CONVERSION_FACTOR(Source, Destination, type_, value_) \
- namespace boost { \
- namespace units { \
- template<> \
- struct select_base_unit_converter< \
- unscale<Source>::type, \
- unscale<reduce_unit<Destination::unit_type>::type>::type \
- > \
- { \
- typedef Source source_type; \
- typedef reduce_unit<Destination::unit_type>::type destination_type; \
- }; \
- template<> \
- struct base_unit_converter<Source, reduce_unit<Destination::unit_type>::type> \
- { \
- BOOST_STATIC_CONSTEXPR bool is_defined = true; \
- typedef type_ type; \
- static BOOST_CONSTEXPR type value() { return(value_); } \
- }; \
- } \
- } \
- void boost_units_require_semicolon()
-
-/// Defines the conversion factor from a base unit to any other base
-/// unit with the same dimensions. Params should be a Boost.Preprocessor
-/// Seq of template parameters, such as (class T1)(class T2)
-/// All uses of must appear at global scope. The reverse conversion will
-/// be defined automatically. This macro is a little dangerous, because,
-/// unlike the non-template form, it will silently fail if either base
-/// unit is scaled. This is probably not an issue if both the source
-/// and destination types depend on the template parameters, but be aware
-/// that a generic conversion to kilograms is not going to work.
-#define BOOST_UNITS_DEFINE_CONVERSION_FACTOR_TEMPLATE(Params, Source, Destination, type_, value_) \
- namespace boost { \
- namespace units { \
- template<BOOST_PP_SEQ_ENUM(Params)> \
- struct base_unit_converter< \
- Source, \
- BOOST_UNITS_MAKE_HETEROGENEOUS_UNIT(Destination, typename Source::dimension_type)\
- > \
- { \
- BOOST_STATIC_CONSTEXPR bool is_defined = true; \
- typedef type_ type; \
- static BOOST_CONSTEXPR type value() { return(value_); } \
- }; \
- } \
- } \
- void boost_units_require_semicolon()
-
-/// Specifies the default conversion to be applied when
-/// no direct conversion is available.
-/// Source is a base unit. Dest is any unit with the
-/// same dimensions.
-#define BOOST_UNITS_DEFAULT_CONVERSION(Source, Dest) \
- namespace boost { \
- namespace units { \
- template<> \
- struct unscaled_get_default_conversion<unscale<Source>::type> \
- { \
- BOOST_STATIC_CONSTEXPR bool is_defined = true; \
- typedef Dest::unit_type type; \
- }; \
- } \
- } \
- void boost_units_require_semicolon()
-
-/// Specifies the default conversion to be applied when
-/// no direct conversion is available.
-/// Params is a PP Sequence of template arguments.
-/// Source is a base unit. Dest is any unit with the
-/// same dimensions. The source must not be a scaled
-/// base unit.
-#define BOOST_UNITS_DEFAULT_CONVERSION_TEMPLATE(Params, Source, Dest) \
- namespace boost { \
- namespace units { \
- template<BOOST_PP_SEQ_ENUM(Params)> \
- struct unscaled_get_default_conversion<Source> \
- { \
- BOOST_STATIC_CONSTEXPR bool is_defined = true; \
- typedef typename Dest::unit_type type; \
- }; \
- } \
- } \
- void boost_units_require_semicolon()
-
-/// INTERNAL ONLY
-/// Users should not create their units in namespace boost::units.
-/// If we want to make this public it needs to allow better control over
-/// the namespaces. --SJW.
-/// template that defines a base_unit and conversion to another dimensionally-consistent unit
-#define BOOST_UNITS_DEFINE_BASE_UNIT_WITH_CONVERSIONS(namespace_, name_, name_string_, symbol_string_, factor, unit, id)\
-namespace boost { \
-namespace units { \
-namespace namespace_ { \
-struct name_ ## _base_unit \
- : base_unit<name_ ## _base_unit, unit::dimension_type, id> { \
- static BOOST_CONSTEXPR const char* name() { return(name_string_); } \
- static BOOST_CONSTEXPR const char* symbol() { return(symbol_string_); } \
-}; \
-} \
-} \
-} \
-BOOST_UNITS_DEFINE_CONVERSION_FACTOR(namespace_::name_ ## _base_unit, unit, double, factor); \
-BOOST_UNITS_DEFAULT_CONVERSION(namespace_::name_ ## _base_unit, unit)
-
-/// Find the conversion factor between two units.
-template<class FromUnit,class ToUnit>
-inline
-BOOST_CONSTEXPR
-typename one_to_double_type<
- typename detail::conversion_factor_helper<FromUnit, ToUnit>::type
->::type
-conversion_factor(const FromUnit&,const ToUnit&)
-{
- return(one_to_double(detail::conversion_factor_helper<FromUnit, ToUnit>::value()));
-}
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CONVERSION_HPP
diff --git a/contrib/restricted/boost/boost/units/derived_dimension.hpp b/contrib/restricted/boost/boost/units/derived_dimension.hpp
deleted file mode 100644
index 54cc46a3b1..0000000000
--- a/contrib/restricted/boost/boost/units/derived_dimension.hpp
+++ /dev/null
@@ -1,208 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_DERIVED_DIMENSION_HPP
-
-#include <boost/units/dim.hpp>
-#include <boost/units/dimension.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/detail/dimension_list.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// A utility class for defining composite dimensions with integer powers.
-template<class DT1 = dimensionless_type,long E1 = 0,
- class DT2 = dimensionless_type,long E2 = 0,
- class DT3 = dimensionless_type,long E3 = 0,
- class DT4 = dimensionless_type,long E4 = 0,
- class DT5 = dimensionless_type,long E5 = 0,
- class DT6 = dimensionless_type,long E6 = 0,
- class DT7 = dimensionless_type,long E7 = 0,
- class DT8 = dimensionless_type,long E8 = 0>
-struct derived_dimension
-{
-#ifdef BOOST_UNITS_DOXYGEN
- typedef detail::unspecified type;
-#else
- typedef typename
- make_dimension_list< list< dim< DT1,static_rational<E1> >,
- list< dim< DT2,static_rational<E2> >,
- list< dim< DT3,static_rational<E3> >,
- list< dim< DT4,static_rational<E4> >,
- list< dim< DT5,static_rational<E5> >,
- list< dim< DT6,static_rational<E6> >,
- list< dim< DT7,static_rational<E7> >,
- list< dim< DT8,static_rational<E8> >, dimensionless_type > > > > > > > > >::type type;
-#endif
-};
-
-/// INTERNAL ONLY
-template<class DT1,long E1>
-struct derived_dimension<
- DT1, E1,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0>
-{
- typedef typename
- make_dimension_list< list< dim< DT1,static_rational<E1> >, dimensionless_type > >::type type;
-};
-
-/// INTERNAL ONLY
-template<class DT1,long E1,
- class DT2,long E2>
-struct derived_dimension<
- DT1, E1,
- DT2, E2,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0>
-{
- typedef typename
- make_dimension_list< list< dim< DT1,static_rational<E1> >,
- list< dim< DT2,static_rational<E2> >, dimensionless_type > > >::type type;
-};
-
-/// INTERNAL ONLY
-template<class DT1,long E1,
- class DT2,long E2,
- class DT3,long E3>
-struct derived_dimension<
- DT1, E1,
- DT2, E2,
- DT3, E3,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0>
-{
- typedef typename
- make_dimension_list< list< dim< DT1,static_rational<E1> >,
- list< dim< DT2,static_rational<E2> >,
- list< dim< DT3,static_rational<E3> >, dimensionless_type > > > >::type type;
-};
-
-/// INTERNAL ONLY
-template<class DT1,long E1,
- class DT2,long E2,
- class DT3,long E3,
- class DT4,long E4>
-struct derived_dimension<
- DT1, E1,
- DT2, E2,
- DT3, E3,
- DT4, E4,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0>
-{
- typedef typename
- make_dimension_list< list< dim< DT1,static_rational<E1> >,
- list< dim< DT2,static_rational<E2> >,
- list< dim< DT3,static_rational<E3> >,
- list< dim< DT4,static_rational<E4> >, dimensionless_type > > > > >::type type;
-};
-
-/// INTERNAL ONLY
-template<class DT1,long E1,
- class DT2,long E2,
- class DT3,long E3,
- class DT4,long E4,
- class DT5,long E5>
-struct derived_dimension<
- DT1, E1,
- DT2, E2,
- DT3, E3,
- DT4, E4,
- DT5, E5,
- dimensionless_type,0,
- dimensionless_type,0,
- dimensionless_type,0>
-{
- typedef typename
- make_dimension_list< list< dim< DT1,static_rational<E1> >,
- list< dim< DT2,static_rational<E2> >,
- list< dim< DT3,static_rational<E3> >,
- list< dim< DT4,static_rational<E4> >,
- list< dim< DT5,static_rational<E5> >, dimensionless_type > > > > > >::type type;
-};
-
-/// INTERNAL ONLY
-template<class DT1,long E1,
- class DT2,long E2,
- class DT3,long E3,
- class DT4,long E4,
- class DT5,long E5,
- class DT6,long E6>
-struct derived_dimension<
- DT1, E1,
- DT2, E2,
- DT3, E3,
- DT4, E4,
- DT5, E5,
- DT6, E6,
- dimensionless_type,0,
- dimensionless_type,0>
-{
- typedef typename
- make_dimension_list< list< dim< DT1,static_rational<E1> >,
- list< dim< DT2,static_rational<E2> >,
- list< dim< DT3,static_rational<E3> >,
- list< dim< DT4,static_rational<E4> >,
- list< dim< DT5,static_rational<E5> >,
- list< dim< DT6,static_rational<E6> >, dimensionless_type > > > > > > >::type type;
-};
-
-/// INTERNAL ONLY
-template<class DT1,long E1,
- class DT2,long E2,
- class DT3,long E3,
- class DT4,long E4,
- class DT5,long E5,
- class DT6,long E6,
- class DT7,long E7>
-struct derived_dimension<
- DT1, E1,
- DT2, E2,
- DT3, E3,
- DT4, E4,
- DT5, E5,
- DT6, E6,
- DT7, E7,
- dimensionless_type,0>
-{
- typedef typename
- make_dimension_list< list< dim< DT1,static_rational<E1> >,
- list< dim< DT2,static_rational<E2> >,
- list< dim< DT3,static_rational<E3> >,
- list< dim< DT4,static_rational<E4> >,
- list< dim< DT5,static_rational<E5> >,
- list< dim< DT6,static_rational<E6> >,
- list< dim< DT7,static_rational<E7> >, dimensionless_type > > > > > > > >::type type;
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/detail/absolute_impl.hpp b/contrib/restricted/boost/boost/units/detail/absolute_impl.hpp
deleted file mode 100644
index ffd8b215b8..0000000000
--- a/contrib/restricted/boost/boost/units/detail/absolute_impl.hpp
+++ /dev/null
@@ -1,104 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ABSOLUTE_IMPL_HPP
-#define BOOST_UNITS_ABSOLUTE_IMPL_HPP
-
-#include <iosfwd>
-
-#include <boost/units/config.hpp>
-#include <boost/units/conversion.hpp>
-#include <boost/units/heterogeneous_system.hpp>
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// INTERNAL ONLY
-template<class D, class S>
-struct reduce_unit<absolute<unit<D, S> > >
-{
- typedef absolute<typename reduce_unit<unit<D, S> >::type> type;
-};
-
-namespace detail {
-
-struct undefined_affine_conversion_base {
- BOOST_STATIC_CONSTEXPR bool is_defined = false;
-};
-
-} // namespace detail
-
-/// INTERNAL ONLY
-template<class From, class To>
-struct affine_conversion_helper : detail::undefined_affine_conversion_base { };
-
-namespace detail {
-
-template<bool IsDefined, bool ReverseIsDefined>
-struct affine_conversion_impl;
-
-template<bool ReverseIsDefined>
-struct affine_conversion_impl<true, ReverseIsDefined>
-{
- template<class Unit1, class Unit2, class T0, class T1>
- struct apply {
- static BOOST_CONSTEXPR T1 value(const T0& t0)
- {
- return(
- t0 *
- conversion_factor(Unit1(), Unit2()) +
- affine_conversion_helper<typename reduce_unit<Unit1>::type, typename reduce_unit<Unit2>::type>::value());
- }
- };
-};
-
-template<>
-struct affine_conversion_impl<false, true>
-{
- template<class Unit1, class Unit2, class T0, class T1>
- struct apply
- {
- static BOOST_CONSTEXPR T1 value(const T0& t0)
- {
- return(
- (t0 - affine_conversion_helper<typename reduce_unit<Unit2>::type, typename reduce_unit<Unit1>::type>::value()) *
- conversion_factor(Unit1(), Unit2()));
- }
- };
-};
-
-} // namespace detail
-
-/// INTERNAL ONLY
-template<class Unit1, class T1, class Unit2, class T2>
-struct conversion_helper<quantity<absolute<Unit1>, T1>, quantity<absolute<Unit2>, T2> >
-{
- typedef quantity<absolute<Unit1>, T1> from_quantity_type;
- typedef quantity<absolute<Unit2>, T2> to_quantity_type;
- static BOOST_CONSTEXPR to_quantity_type convert(const from_quantity_type& source)
- {
- return(
- to_quantity_type::from_value(
- detail::affine_conversion_impl<
- affine_conversion_helper<typename reduce_unit<Unit1>::type, typename reduce_unit<Unit2>::type>::is_defined,
- affine_conversion_helper<typename reduce_unit<Unit2>::type, typename reduce_unit<Unit1>::type>::is_defined
- >::template apply<Unit1, Unit2, T1, T2>::value(source.value())
- )
- );
- }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ABSOLUTE_IMPL_HPP
diff --git a/contrib/restricted/boost/boost/units/detail/cmath_impl.hpp b/contrib/restricted/boost/boost/units/detail/cmath_impl.hpp
deleted file mode 100644
index d5bec14f43..0000000000
--- a/contrib/restricted/boost/boost/units/detail/cmath_impl.hpp
+++ /dev/null
@@ -1,154 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CMATH_IMPL_HPP
-#define BOOST_UNITS_CMATH_IMPL_HPP
-
-#include <boost/config.hpp>
-#include <boost/math/special_functions/fpclassify.hpp>
-
-namespace boost {
-namespace units {
-namespace detail {
-
-template<class Y>
-inline bool isgreater BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
-{
- if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false;
- else return v1 > v2;
-}
-
-template<class Y>
-inline bool isgreaterequal BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
-{
- if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false;
- else return v1 >= v2;
-}
-
-template<class Y>
-inline bool isless BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
-{
- if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false;
- else return v1 < v2;
-}
-
-template<class Y>
-inline bool islessequal BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
-{
- if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false;
- else return v1 <= v2;
-}
-
-template<class Y>
-inline bool islessgreater BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
-{
- if((boost::math::isnan)(v1) || (boost::math::isnan)(v2)) return false;
- else return v1 < v2 || v1 > v2;
-}
-
-template<class Y>
-inline bool isunordered BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
-{
- return (boost::math::isnan)(v1) || (boost::math::isnan)(v2);
-}
-
-template<class Y>
-inline Y fdim BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
-{
- if((boost::math::isnan)(v1)) return v1;
- else if((boost::math::isnan)(v2)) return v2;
- else if(v1 > v2) return(v1 - v2);
- else return(Y(0));
-}
-
-#if 0
-
-template<class T>
-struct fma_issue_warning {
- enum { value = false };
-};
-
-template<class Y>
-inline Y fma(const Y& v1,const Y& v2,const Y& v3)
-{
- //this implementation does *not* meet the
- //requirement of infinite intermediate precision
- BOOST_STATIC_WARNING((fma_issue_warning<Y>::value));
-
- return v1 * v2 + v3;
-}
-
-#endif
-
-template<class Y>
-inline Y fmax BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
-{
- if((boost::math::isnan)(v1)) return(v2);
- else if((boost::math::isnan)(v2)) return(v1);
- else if(v1 > v2) return(v1);
- else return(v2);
-}
-
-template<class Y>
-inline Y fmin BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& v1,const Y& v2)
-{
- if((boost::math::isnan)(v1)) return(v2);
- else if((boost::math::isnan)(v2)) return(v1);
- else if(v1 < v2) return(v1);
- else return(v2);
-}
-
-//template<class Y>
-//inline long long llrint(const Y& val)
-//{
-// return static_cast<long long>(rint(val));
-//}
-//
-//template<class Y>
-//inline long long llround(const Y& val)
-//{
-// return static_cast<long long>(round(val));
-//}
-
-#if 0
-
-template<class Y>
-inline Y nearbyint(const Y& val)
-{
- //this is not really correct.
- //the result should be according to the
- //current rounding mode.
- using boost::math::round;
- return round(val);
-}
-
-template<class Y>
-inline Y rint(const Y& val)
-{
- //I don't feel like trying to figure out
- //how to raise a floating pointer exception
- return nearbyint(val);
-}
-
-#endif
-
-template<class Y>
-inline Y trunc BOOST_PREVENT_MACRO_SUBSTITUTION(const Y& val)
-{
- if(val > 0) return std::floor(val);
- else if(val < 0) return std::ceil(val);
- else return val;
-}
-
-}
-}
-}
-
-#endif // BOOST_UNITS_CMATH_IMPL_HPP
diff --git a/contrib/restricted/boost/boost/units/detail/conversion_impl.hpp b/contrib/restricted/boost/boost/units/detail/conversion_impl.hpp
deleted file mode 100644
index f3cc19579e..0000000000
--- a/contrib/restricted/boost/boost/units/detail/conversion_impl.hpp
+++ /dev/null
@@ -1,452 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DETAIL_CONVERSION_IMPL_HPP
-#define BOOST_UNITS_DETAIL_CONVERSION_IMPL_HPP
-
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/divides.hpp>
-#include <boost/preprocessor/seq/enum.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-#include <boost/units/heterogeneous_system.hpp>
-#include <boost/units/homogeneous_system.hpp>
-#include <boost/units/reduce_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/detail/dimension_list.hpp>
-#include <boost/units/detail/heterogeneous_conversion.hpp>
-#include <boost/units/detail/one.hpp>
-#include <boost/units/detail/static_rational_power.hpp>
-#include <boost/units/detail/unscale.hpp>
-
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-template<class Source, class Dest>
-struct conversion_factor_helper;
-
-template<class Source, class Dest>
-struct call_base_unit_converter;
-
-}
-
-/// INTERNAL ONLY
-struct undefined_base_unit_converter_base {
- BOOST_STATIC_CONSTEXPR bool is_defined = false;
-};
-
-/// INTERNAL ONLY
-struct no_default_conversion {
- BOOST_STATIC_CONSTEXPR bool is_defined = false;
-};
-
-/// INTERNAL ONLY
-template<class BaseUnit>
-struct unscaled_get_default_conversion : no_default_conversion { };
-
-/// INTERNAL ONLY
-template<bool is_defined>
-struct unscaled_get_default_conversion_impl;
-
-/// INTERNAL ONLY
-template<>
-struct unscaled_get_default_conversion_impl<true>
-{
- template<class T>
- struct apply
- {
- typedef typename unscaled_get_default_conversion<typename unscale<T>::type>::type type;
- };
-};
-
-/// INTERNAL ONLY
-template<>
-struct unscaled_get_default_conversion_impl<false>
-{
- template<class T>
- struct apply
- {
- typedef typename T::unit_type type;
- };
-};
-
-/// INTERNAL ONLY
-template<class BaseUnit>
-struct get_default_conversion
-{
- typedef typename unscaled_get_default_conversion_impl<
- unscaled_get_default_conversion<typename unscale<BaseUnit>::type>::is_defined
- >::template apply<BaseUnit>::type type;
-};
-
-/// INTERNAL ONLY
-template<class Source, class Destination>
-struct select_base_unit_converter
-{
- typedef Source source_type;
- typedef Destination destination_type;
-};
-
-/// INTERNAL ONLY
-template<class Source, class Dest>
-struct base_unit_converter_base : undefined_base_unit_converter_base {
-};
-
-/// INTERNAL ONLY
-template<class Source>
-struct base_unit_converter_base<Source, BOOST_UNITS_MAKE_HETEROGENEOUS_UNIT(Source, typename Source::dimension_type)>
-{
- BOOST_STATIC_CONSTEXPR bool is_defined = true;
- typedef one type;
- static BOOST_CONSTEXPR type value() {
- return(one());
- }
-};
-
-/// INTERNAL ONLY
-template<class Source, class Dest>
-struct base_unit_converter : base_unit_converter_base<Source, Dest> { };
-
-namespace detail {
-
-template<class Source, class Dest>
-struct do_call_base_unit_converter {
- typedef select_base_unit_converter<typename unscale<Source>::type, typename unscale<Dest>::type> selector;
- typedef typename selector::source_type source_type;
- typedef typename selector::destination_type destination_type;
- typedef base_unit_converter<source_type, destination_type> converter;
- typedef typename mpl::divides<typename get_scale_list<Source>::type, typename get_scale_list<source_type>::type>::type source_factor;
- typedef typename mpl::divides<typename get_scale_list<Dest>::type, typename get_scale_list<destination_type>::type>::type destination_factor;
- typedef typename mpl::divides<source_factor, destination_factor>::type factor;
- typedef eval_scale_list<factor> eval_factor;
- typedef typename multiply_typeof_helper<typename converter::type, typename eval_factor::type>::type type;
- static BOOST_CONSTEXPR type value()
- {
- return(converter::value() * eval_factor::value());
- }
-};
-
-template<bool forward_is_defined, bool reverse_is_defined>
-struct call_base_unit_converter_base_unit_impl;
-
-template<>
-struct call_base_unit_converter_base_unit_impl<true, true>
-{
- template<class Source, class Dest>
- struct apply
- : do_call_base_unit_converter<Source, typename Dest::unit_type>
- {
- };
-};
-
-template<>
-struct call_base_unit_converter_base_unit_impl<true, false>
-{
- template<class Source, class Dest>
- struct apply
- : do_call_base_unit_converter<Source, typename Dest::unit_type>
- {
- };
-};
-
-template<>
-struct call_base_unit_converter_base_unit_impl<false, true>
-{
- template<class Source, class Dest>
- struct apply
- {
- typedef do_call_base_unit_converter<Dest, typename Source::unit_type> converter;
- typedef typename divide_typeof_helper<one, typename converter::type>::type type;
- static BOOST_CONSTEXPR type value() {
- return(one() / converter::value());
- }
- };
-};
-
-template<>
-struct call_base_unit_converter_base_unit_impl<false, false>
-{
- template<class Source, class Dest>
- struct apply
- {
- typedef typename reduce_unit<typename get_default_conversion<Source>::type>::type new_source;
- typedef typename reduce_unit<typename get_default_conversion<Dest>::type>::type new_dest;
- typedef call_base_unit_converter<Source, new_source> start;
- typedef detail::conversion_factor_helper<
- new_source,
- new_dest
- > conversion;
- typedef call_base_unit_converter<Dest, new_dest> end;
- typedef typename divide_typeof_helper<
- typename multiply_typeof_helper<
- typename start::type,
- typename conversion::type
- >::type,
- typename end::type
- >::type type;
- static BOOST_CONSTEXPR type value() {
- return(start::value() * conversion::value() / end::value());
- }
- };
-};
-
-template<int N>
-struct get_default_conversion_impl
-{
- template<class Begin>
- struct apply
- {
- typedef typename Begin::item source_pair;
- typedef typename source_pair::value_type exponent;
- typedef typename source_pair::tag_type source;
- typedef typename reduce_unit<typename get_default_conversion<source>::type>::type new_source;
- typedef typename get_default_conversion_impl<N-1>::template apply<typename Begin::next> next_iteration;
- typedef typename multiply_typeof_helper<typename power_typeof_helper<new_source, exponent>::type, typename next_iteration::unit_type>::type unit_type;
- typedef call_base_unit_converter<source, new_source> conversion;
- typedef typename multiply_typeof_helper<typename conversion::type, typename next_iteration::type>::type type;
- static BOOST_CONSTEXPR type value() {
- return(static_rational_power<exponent>(conversion::value()) * next_iteration::value());
- }
- };
-};
-
-template<>
-struct get_default_conversion_impl<0>
-{
- template<class Begin>
- struct apply
- {
- typedef unit<dimensionless_type, heterogeneous_system<heterogeneous_system_impl<dimensionless_type, dimensionless_type, no_scale> > > unit_type;
- typedef one type;
- static BOOST_CONSTEXPR one value() {
- return(one());
- }
- };
-};
-
-template<bool is_defined>
-struct call_base_unit_converter_impl;
-
-template<>
-struct call_base_unit_converter_impl<true>
-{
- template<class Source, class Dest>
- struct apply
- : do_call_base_unit_converter<Source, Dest>
- {
- };
-};
-
-template<>
-struct call_base_unit_converter_impl<false>
-{
- template<class Source, class Dest>
- struct apply {
- typedef typename reduce_unit<typename get_default_conversion<Source>::type>::type new_source;
- typedef typename Dest::system_type::type system_list;
- typedef typename get_default_conversion_impl<system_list::size::value>::template apply<system_list> impl;
- typedef typename impl::unit_type new_dest;
- typedef call_base_unit_converter<Source, new_source> start;
- typedef conversion_factor_helper<new_source, new_dest> conversion;
- typedef typename divide_typeof_helper<
- typename multiply_typeof_helper<
- typename start::type,
- typename conversion::type
- >::type,
- typename impl::type
- >::type type;
- static BOOST_CONSTEXPR type value() {
- return(start::value() * conversion::value() / impl::value());
- }
- };
-};
-
-#define BOOST_UNITS_DETAIL_BASE_UNIT_CONVERTER_IS_DEFINED(Source, Dest)\
- base_unit_converter<\
- typename select_base_unit_converter<typename unscale<Source>::type, typename unscale<Dest>::type>::source_type,\
- typename select_base_unit_converter<typename unscale<Source>::type, typename unscale<Dest>::type>::destination_type\
- >::is_defined
-
-template<class Source, class Dest>
-struct call_base_unit_converter : call_base_unit_converter_impl<BOOST_UNITS_DETAIL_BASE_UNIT_CONVERTER_IS_DEFINED(Source, Dest)>::template apply<Source, Dest>
-{
-};
-
-template<class Source, class Dest>
-struct call_base_unit_converter<Source, BOOST_UNITS_MAKE_HETEROGENEOUS_UNIT(Dest, typename Source::dimension_type)> :
- call_base_unit_converter_base_unit_impl<
- BOOST_UNITS_DETAIL_BASE_UNIT_CONVERTER_IS_DEFINED(Source, typename Dest::unit_type),
- BOOST_UNITS_DETAIL_BASE_UNIT_CONVERTER_IS_DEFINED(Dest, typename Source::unit_type)
- >::template apply<Source, Dest>
-{
-};
-
-template<int N>
-struct conversion_impl
-{
- template<class Begin, class DestinationSystem>
- struct apply
- {
- typedef typename conversion_impl<N-1>::template apply<
- typename Begin::next,
- DestinationSystem
- > next_iteration;
- typedef typename Begin::item unit_pair;
- typedef typename unit_pair::tag_type unit;
- typedef typename unit::dimension_type dimensions;
- typedef typename reduce_unit<units::unit<dimensions, DestinationSystem> >::type reduced_unit;
- typedef detail::call_base_unit_converter<unit, reduced_unit> converter;
- typedef typename multiply_typeof_helper<typename converter::type, typename next_iteration::type>::type type;
- static BOOST_CONSTEXPR type value() { return(static_rational_power<typename unit_pair::value_type>(converter::value()) * next_iteration::value()); }
- };
-};
-
-template<>
-struct conversion_impl<0>
-{
- template<class Begin, class DestinationSystem>
- struct apply
- {
- typedef one type;
- static BOOST_CONSTEXPR type value() { return(one()); }
- };
-};
-
-} // namespace detail
-
-/// forward to conversion_factor (intentionally allowing ADL)
-/// INTERNAL ONLY
-template<class Unit1, class T1, class Unit2, class T2>
-struct conversion_helper<quantity<Unit1, T1>, quantity<Unit2, T2> >
-{
- /// INTERNAL ONLY
- typedef quantity<Unit2, T2> destination_type;
- static BOOST_CONSTEXPR destination_type convert(const quantity<Unit1, T1>& source)
- {
- return(destination_type::from_value(static_cast<T2>(source.value() * conversion_factor(Unit1(), Unit2()))));
- }
-};
-
-namespace detail {
-
-template<class Source, class Dest>
-struct conversion_factor_helper;
-
-template<class D, class L1, class L2>
-struct conversion_factor_helper<unit<D, homogeneous_system<L1> >, unit<D, homogeneous_system<L2> > >
- : conversion_factor_helper<
- typename reduce_unit<unit<D, homogeneous_system<L1> > >::type,
- typename reduce_unit<unit<D, homogeneous_system<L2> > >::type
- >
-{
- //typedef typename reduce_unit<unit<D, homogeneous_system<L1> > >::type source_unit;
- //typedef typename source_unit::system_type::type unit_list;
- //typedef typename detail::conversion_impl<unit_list::size::value>::template apply<
- // unit_list,
- // homogeneous_system<L2>
- //> impl;
- //typedef typename impl::type type;
- //static BOOST_CONSTEXPR type value()
- //{
- // return(impl::value());
- //}
-};
-
-template<class D, class L1, class L2>
-struct conversion_factor_helper<unit<D, heterogeneous_system<L1> >, unit<D, homogeneous_system<L2> > >
- : conversion_factor_helper<
- typename reduce_unit<unit<D, heterogeneous_system<L1> > >::type,
- typename reduce_unit<unit<D, homogeneous_system<L2> > >::type
- >
-{
- //typedef typename detail::conversion_impl<L1::type::size::value>::template apply<
- // typename L1::type,
- // homogeneous_system<L2>
- //> impl;
- //typedef eval_scale_list<typename L1::scale> scale;
- //typedef typename multiply_typeof_helper<typename impl::type, typename scale::type>::type type;
- //static BOOST_CONSTEXPR type value()
- //{
- // return(impl::value() * scale::value());
- //}
-};
-
-// There is no simple algorithm for doing this conversion
-// other than just defining it as the reverse of the
-// heterogeneous->homogeneous case
-template<class D, class L1, class L2>
-struct conversion_factor_helper<unit<D, homogeneous_system<L1> >, unit<D, heterogeneous_system<L2> > >
- : conversion_factor_helper<
- typename reduce_unit<unit<D, homogeneous_system<L1> > >::type,
- typename reduce_unit<unit<D, heterogeneous_system<L2> > >::type
- >
-{
- //typedef typename detail::conversion_impl<L2::type::size::value>::template apply<
- // typename L2::type,
- // homogeneous_system<L1>
- //> impl;
- //typedef eval_scale_list<typename L2::scale> scale;
- //typedef typename multiply_typeof_helper<typename impl::type, typename scale::type>::type type;
- //static BOOST_CONSTEXPR type value()
- //{
- // return(one() / (impl::value() * scale::value()));
- //}
-};
-
-/// Requires that all possible conversions
-/// between base units are defined.
-template<class D, class S1, class S2>
-struct conversion_factor_helper<unit<D, heterogeneous_system<S1> >, unit<D, heterogeneous_system<S2> > >
-{
- /// INTERNAL ONLY
- typedef typename detail::extract_base_units<S1::type::size::value>::template apply<
- typename S1::type,
- dimensionless_type
- >::type from_base_units;
- /// INTERNAL ONLY
- typedef typename detail::extract_base_units<S2::type::size::value>::template apply<
- typename S2::type,
- from_base_units
- >::type all_base_units;
- /// INTERNAL ONLY
- typedef typename detail::make_homogeneous_system<all_base_units>::type system;
- typedef typename detail::conversion_impl<S1::type::size::value>::template apply<
- typename S1::type,
- system
- > conversion1;
- typedef typename detail::conversion_impl<S2::type::size::value>::template apply<
- typename S2::type,
- system
- > conversion2;
- typedef eval_scale_list<typename mpl::divides<typename S1::scale, typename S2::scale>::type> scale;
- typedef typename multiply_typeof_helper<
- typename conversion1::type,
- typename divide_typeof_helper<typename scale::type, typename conversion2::type>::type
- >::type type;
- static BOOST_CONSTEXPR type value()
- {
- return(conversion1::value() * (scale::value() / conversion2::value()));
- }
-};
-
-} // namespace detail
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CONVERSION_IMPL_HPP
diff --git a/contrib/restricted/boost/boost/units/detail/dim_impl.hpp b/contrib/restricted/boost/boost/units/detail/dim_impl.hpp
deleted file mode 100644
index 85792b8acb..0000000000
--- a/contrib/restricted/boost/boost/units/detail/dim_impl.hpp
+++ /dev/null
@@ -1,90 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DIM_IMPL_HPP
-#define BOOST_UNITS_DIM_IMPL_HPP
-
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/less.hpp>
-
-#include <boost/units/units_fwd.hpp>
-
-/// \file
-/// \brief Class encapsulating a dimension tag/value pair
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-struct dim_tag;
-
-}
-
-}
-
-namespace mpl {
-
-/// Less than comparison for sorting @c dim.
-template<>
-struct less_impl<boost::units::detail::dim_tag, boost::units::detail::dim_tag>
-{
- template<class T0, class T1>
- struct apply : mpl::less<typename T0::tag_type, typename T1::tag_type> {};
-};
-
-}
-
-namespace units {
-
-template<class Tag, class Exponent>
-struct dim;
-
-template<long N, long D>
-class static_rational;
-
-namespace detail {
-
-/// Extract @c tag_type from a @c dim.
-template<typename T>
-struct get_tag
-{
- typedef typename T::tag_type type;
-};
-
-/// Extract @c value_type from a @c dim.
-template<typename T>
-struct get_value
-{
- typedef typename T::value_type type;
-};
-
-/// Determine if a @c dim is empty (has a zero exponent).
-template<class T>
-struct is_empty_dim;
-
-template<typename T>
-struct is_empty_dim< dim<T, static_rational<0, 1> > > :
- mpl::true_
-{ };
-
-template<typename T, typename V>
-struct is_empty_dim< dim<T, V> > :
- mpl::false_
-{ };
-
-} // namespace detail
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_DIM_IMPL_HPP
diff --git a/contrib/restricted/boost/boost/units/detail/dimension_impl.hpp b/contrib/restricted/boost/boost/units/detail/dimension_impl.hpp
deleted file mode 100644
index dbe77afef7..0000000000
--- a/contrib/restricted/boost/boost/units/detail/dimension_impl.hpp
+++ /dev/null
@@ -1,347 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DIMENSION_IMPL_HPP
-#define BOOST_UNITS_DIMENSION_IMPL_HPP
-
-#include <boost/mpl/begin_end.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/list.hpp>
-#include <boost/mpl/next.hpp>
-#include <boost/mpl/size.hpp>
-#include <boost/mpl/less.hpp>
-
-#include <boost/units/config.hpp>
-#include <boost/units/dimensionless_type.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/detail/dimension_list.hpp>
-#include <boost/units/detail/push_front_if.hpp>
-#include <boost/units/detail/push_front_or_add.hpp>
-
-/// \file
-/// \brief Core class and metaprogramming utilities for compile-time dimensional analysis.
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-template<int N>
-struct insertion_sort_dims_insert;
-
-template<bool is_greater>
-struct insertion_sort_dims_comparison_impl;
-
-// have to recursively add the element to the next sequence.
-template<>
-struct insertion_sort_dims_comparison_impl<true> {
- template<class Begin, int N, class T>
- struct apply {
- typedef list<
- typename Begin::item,
- typename insertion_sort_dims_insert<N - 1>::template apply<
- typename Begin::next,
- T
- >::type
- > type;
- };
-};
-
-// either prepend the current element or join it to
-// the first remaining element of the sequence.
-template<>
-struct insertion_sort_dims_comparison_impl<false> {
- template<class Begin, int N, class T>
- struct apply {
- typedef typename push_front_or_add<Begin, T>::type type;
- };
-};
-
-template<int N>
-struct insertion_sort_dims_insert {
- template<class Begin, class T>
- struct apply {
- typedef typename insertion_sort_dims_comparison_impl<mpl::less<typename Begin::item, T>::value>::template apply<
- Begin,
- N,
- T
- >::type type;
- };
-};
-
-template<>
-struct insertion_sort_dims_insert<0> {
- template<class Begin, class T>
- struct apply {
- typedef list<T, dimensionless_type> type;
- };
-};
-
-template<int N>
-struct insertion_sort_dims_mpl_sequence {
- template<class Begin>
- struct apply {
- typedef typename insertion_sort_dims_mpl_sequence<N - 1>::template apply<typename mpl::next<Begin>::type>::type next;
- typedef typename insertion_sort_dims_insert<(next::size::value)>::template apply<next, typename mpl::deref<Begin>::type>::type type;
- };
-};
-
-template<>
-struct insertion_sort_dims_mpl_sequence<0> {
- template<class Begin>
- struct apply {
- typedef dimensionless_type type;
- };
-};
-
-template<int N>
-struct insertion_sort_dims_impl {
- template<class Begin>
- struct apply {
- typedef typename insertion_sort_dims_impl<N - 1>::template apply<typename Begin::next>::type next;
- typedef typename insertion_sort_dims_insert<(next::size::value)>::template apply<next, typename Begin::item>::type type;
- };
-};
-
-template<>
-struct insertion_sort_dims_impl<0> {
- template<class Begin>
- struct apply {
- typedef dimensionless_type type;
- };
-};
-
-template<class T>
-struct sort_dims
-{
- typedef typename insertion_sort_dims_mpl_sequence<mpl::size<T>::value>::template apply<typename mpl::begin<T>::type>::type type;
-};
-
-
-template<class T, class Next>
-struct sort_dims<list<T, Next> >
-{
- typedef typename insertion_sort_dims_impl<list<T, Next>::size::value>::template apply<list<T, Next> >::type type;
-};
-
-/// sorted sequences can be merged in linear time
-template<bool less, bool greater>
-struct merge_dimensions_func;
-
-template<int N1, int N2>
-struct merge_dimensions_impl;
-
-template<>
-struct merge_dimensions_func<true, false>
-{
- template<typename Begin1, typename Begin2, int N1, int N2>
- struct apply
- {
- typedef list<
- typename Begin1::item,
- typename merge_dimensions_impl<N1 - 1, N2>::template apply<
- typename Begin1::next,
- Begin2
- >::type
- > type;
- };
-};
-
-template<>
-struct merge_dimensions_func<false, true> {
- template<typename Begin1, typename Begin2, int N1, int N2>
- struct apply
- {
- typedef list<
- typename Begin2::item,
- typename merge_dimensions_impl<N2 - 1, N1>::template apply<
- typename Begin2::next,
- Begin1
- >::type
- > type;
- };
-};
-
-template<>
-struct merge_dimensions_func<false, false> {
- template<typename Begin1, typename Begin2, int N1, int N2>
- struct apply
- {
- typedef typename mpl::plus<typename Begin1::item, typename Begin2::item>::type combined;
- typedef typename push_front_if<!is_empty_dim<combined>::value>::template apply<
- typename merge_dimensions_impl<N1 - 1, N2 - 1>::template apply<
- typename Begin1::next,
- typename Begin2::next
- >::type,
- combined
- >::type type;
- };
-};
-
-template<int N1, int N2>
-struct merge_dimensions_impl {
- template<typename Begin1, typename Begin2>
- struct apply
- {
- typedef typename Begin1::item dim1;
- typedef typename Begin2::item dim2;
-
- typedef typename merge_dimensions_func<(mpl::less<dim1,dim2>::value == true),
- (mpl::less<dim2,dim1>::value == true)>::template apply<
- Begin1,
- Begin2,
- N1,
- N2
- >::type type;
- };
-};
-
-template<typename Sequence1, typename Sequence2>
-struct merge_dimensions
-{
- typedef typename detail::merge_dimensions_impl<Sequence1::size::value,
- Sequence2::size::value>::template
- apply<
- Sequence1,
- Sequence2
- >::type type;
-};
-
-template<int N>
-struct iterator_to_list
-{
- template<typename Begin>
- struct apply
- {
- typedef list<
- typename Begin::item,
- typename iterator_to_list<N - 1>::template apply<
- typename Begin::next
- >::type
- > type;
- };
-};
-
-template<>
-struct iterator_to_list<0>
-{
- template<typename Begin>
- struct apply {
- typedef dimensionless_type type;
- };
-};
-
-template<int N>
-struct merge_dimensions_impl<N, 0>
-{
- template<typename Begin1, typename Begin2>
- struct apply
- {
- typedef typename iterator_to_list<N>::template apply<Begin1>::type type;
- };
-};
-
-template<int N>
-struct merge_dimensions_impl<0, N>
-{
- template<typename Begin1, typename Begin2>
- struct apply
- {
- typedef typename iterator_to_list<N>::template apply<Begin2>::type type;
- };
-};
-
-template<>
-struct merge_dimensions_impl<0, 0>
-{
- template<typename Begin1, typename Begin2>
- struct apply
- {
- typedef dimensionless_type type;
- };
-};
-
-template<int N>
-struct static_inverse_impl
-{
- template<typename Begin>
- struct apply {
- typedef list<
- typename mpl::negate<typename Begin::item>::type,
- typename static_inverse_impl<N - 1>::template apply<
- typename Begin::next
- >::type
- > type;
- };
-};
-
-template<>
-struct static_inverse_impl<0>
-{
- template<typename Begin>
- struct apply
- {
- typedef dimensionless_type type;
- };
-};
-
-template<int N>
-struct static_power_impl
-{
- template<typename Begin, typename Ex>
- struct apply
- {
- typedef list<
- typename mpl::times<typename Begin::item, Ex>::type,
- typename detail::static_power_impl<N - 1>::template apply<typename Begin::next, Ex>::type
- > type;
- };
-};
-
-template<>
-struct static_power_impl<0>
-{
- template<typename Begin, typename Ex>
- struct apply
- {
- typedef dimensionless_type type;
- };
-};
-
-template<int N>
-struct static_root_impl {
- template<class Begin, class Ex>
- struct apply {
- typedef list<
- typename mpl::divides<typename Begin::item, Ex>::type,
- typename detail::static_root_impl<N - 1>::template apply<typename Begin::next, Ex>::type
- > type;
- };
-};
-
-template<>
-struct static_root_impl<0> {
- template<class Begin, class Ex>
- struct apply
- {
- typedef dimensionless_type type;
- };
-};
-
-} // namespace detail
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_DIMENSION_IMPL_HPP
diff --git a/contrib/restricted/boost/boost/units/detail/dimension_list.hpp b/contrib/restricted/boost/boost/units/detail/dimension_list.hpp
deleted file mode 100644
index fc05547765..0000000000
--- a/contrib/restricted/boost/boost/units/detail/dimension_list.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DIMENSION_LIST_HPP
-#define BOOST_UNITS_DIMENSION_LIST_HPP
-
-#include <boost/mpl/next.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/mpl/push_front_fwd.hpp>
-#include <boost/mpl/pop_front_fwd.hpp>
-#include <boost/mpl/size_fwd.hpp>
-#include <boost/mpl/begin_end_fwd.hpp>
-#include <boost/mpl/front_fwd.hpp>
-
-#include <boost/units/config.hpp>
-
-namespace boost {
-
-namespace units {
-
-struct dimensionless_type;
-
-namespace detail {
-
-struct dimension_list_tag { };
-
-} // namespace detail
-
-template<class Item, class Next>
-struct list
-{
- typedef detail::dimension_list_tag tag;
- typedef list type;
- typedef Item item;
- typedef Next next;
- typedef typename mpl::next<typename Next::size>::type size;
-};
-
-} // namespace units
-
-namespace mpl {
-
-// INTERNAL ONLY
-template<>
-struct size_impl<units::detail::dimension_list_tag>
-{
- template<class L> struct apply : public L::size { };
-};
-
-// INTERNAL ONLY
-template<>
-struct begin_impl<units::detail::dimension_list_tag>
-{
- template<class L>
- struct apply
- {
- typedef L type;
- };
-};
-
-// INTERNAL ONLY
-template<>
-struct end_impl<units::detail::dimension_list_tag>
-{
- template<class L>
- struct apply
- {
- typedef units::dimensionless_type type;
- };
-};
-
-// INTERNAL ONLY
-template<>
-struct push_front_impl<units::detail::dimension_list_tag>
-{
- template<class L, class T>
- struct apply
- {
- typedef units::list<T, L> type;
- };
-};
-
-// INTERNAL ONLY
-template<>
-struct pop_front_impl<units::detail::dimension_list_tag>
-{
- template<class L>
- struct apply
- {
- typedef typename L::next type;
- };
-};
-
-// INTERNAL ONLY
-template<>
-struct front_impl<units::detail::dimension_list_tag>
-{
- template<class L>
- struct apply
- {
- typedef typename L::item type;
- };
-};
-
-// INTERNAL ONLY
-template<class Item, class Next>
-struct deref<units::list<Item, Next> >
-{
- typedef Item type;
-};
-
-} // namespace mpl
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::list, 2)
-
-#endif
-
-#include <boost/units/dimensionless_type.hpp>
-
-#endif // BOOST_UNITS_DIMENSION_LIST_HPP
diff --git a/contrib/restricted/boost/boost/units/detail/dimensionless_unit.hpp b/contrib/restricted/boost/boost/units/detail/dimensionless_unit.hpp
deleted file mode 100644
index 291bec43ba..0000000000
--- a/contrib/restricted/boost/boost/units/detail/dimensionless_unit.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DETAIL_DIMENSIONLESS_UNIT_HPP
-#define BOOST_UNITS_DETAIL_DIMENSIONLESS_UNIT_HPP
-
-#include <boost/mpl/bool.hpp>
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-namespace units {
-
-template<class T>
-struct heterogeneous_system;
-
-template<class T>
-struct homogeneous_system;
-
-template<class T1, class T2, class Scale>
-struct heterogeneous_system_impl;
-
-typedef boost::units::heterogeneous_system<
- boost::units::heterogeneous_system_impl<
- boost::units::dimensionless_type,
- boost::units::dimensionless_type,
- boost::units::dimensionless_type
- >
-> heterogeneous_dimensionless_system;
-
-namespace detail {
-
-template<class System>
-struct void_if_dimensionless {
- typedef int type;
-};
-
-template<class T>
-struct void_if_dimensionless<boost::units::homogeneous_system<T> > {
- typedef void type;
-};
-
-template<>
-struct void_if_dimensionless<heterogeneous_dimensionless_system> {
- typedef void type;
-};
-
-template<class System, class Test = void>
-struct void_if_heterogeneous {
- typedef void type;
-};
-
-template<class System>
-struct void_if_heterogeneous<System, typename void_if_dimensionless<System>::type> {
- typedef int type;
-};
-
-template<class System, class Enable=void>
-struct is_dimensionless_system : mpl::false_ {};
-
-template<class System>
-struct is_dimensionless_system<System, typename void_if_dimensionless<System>::type> : mpl::true_ {};
-
-#define BOOST_UNITS_DIMENSIONLESS_UNIT(T)\
- boost::units::unit<\
- boost::units::dimensionless_type,\
- T,\
- typename ::boost::units::detail::void_if_dimensionless<T>::type\
- >
-
-#define BOOST_UNITS_HETEROGENEOUS_DIMENSIONLESS_UNIT(T)\
- boost::units::unit<\
- boost::units::dimensionless_type,\
- T,\
- typename ::boost::units::detail::void_if_heterogeneous<T>::type\
- >
-
-}
-}
-}
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/detail/heterogeneous_conversion.hpp b/contrib/restricted/boost/boost/units/detail/heterogeneous_conversion.hpp
deleted file mode 100644
index bfdf9876d4..0000000000
--- a/contrib/restricted/boost/boost/units/detail/heterogeneous_conversion.hpp
+++ /dev/null
@@ -1,309 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DETAIL_HETEROGENEOUS_CONVERSION_HPP
-#define BOOST_UNITS_DETAIL_HETEROGENEOUS_CONVERSION_HPP
-
-#include <boost/mpl/minus.hpp>
-#include <boost/mpl/times.hpp>
-
-#include <boost/units/static_rational.hpp>
-#include <boost/units/homogeneous_system.hpp>
-#include <boost/units/detail/linear_algebra.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-struct solve_end {
- template<class Begin, class Y>
- struct apply {
- typedef dimensionless_type type;
- };
-};
-
-struct no_solution {};
-
-template<class X1, class X2, class Next>
-struct solve_normal {
- template<class Begin, class Y>
- struct apply {
- typedef typename Begin::next next;
- typedef list<
- typename mpl::minus<
- typename mpl::times<X1, Y>::type,
- typename mpl::times<X2, typename Begin::item>::type
- >::type,
- typename Next::template apply<next, Y>::type
- > type;
- };
-};
-
-template<class Next>
-struct solve_leading_zeroes {
- template<class Begin>
- struct apply {
- typedef list<
- typename Begin::item,
- typename Next::template apply<typename Begin::next>::type
- > type;
- };
- typedef solve_leading_zeroes type;
-};
-
-template<>
-struct solve_leading_zeroes<no_solution> {
- typedef no_solution type;
-};
-
-template<class Next>
-struct solve_first_non_zero {
- template<class Begin>
- struct apply {
- typedef typename Next::template apply<
- typename Begin::next,
- typename Begin::item
- >::type type;
- };
-};
-
-template<class Next>
-struct solve_internal_zero {
- template<class Begin, class Y>
- struct apply {
- typedef list<
- typename Begin::item,
- typename Next::template apply<typename Begin::next, Y>::type
- > type;
- };
-};
-
-template<class T>
-struct make_solve_list_internal_zero {
- template<class Next, class X>
- struct apply {
- typedef solve_normal<T, X, Next> type;
- };
-};
-
-template<>
-struct make_solve_list_internal_zero<static_rational<0> > {
- template<class Next, class X>
- struct apply {
- typedef solve_internal_zero<Next> type;
- };
-};
-
-template<int N>
-struct make_solve_list_normal {
- template<class Begin, class X>
- struct apply {
- typedef typename make_solve_list_internal_zero<
- typename Begin::item
- >::template apply<
- typename make_solve_list_normal<N-1>::template apply<typename Begin::next, X>::type,
- X
- >::type type;
- };
-};
-
-template<>
-struct make_solve_list_normal<0> {
- template<class Begin, class X>
- struct apply {
- typedef solve_end type;
- };
-};
-
-template<int N>
-struct make_solve_list_leading_zeroes;
-
-template<class T>
-struct make_solve_list_first_non_zero {
- template<class Begin, int N>
- struct apply {
- typedef solve_first_non_zero<
- typename make_solve_list_normal<N-1>::template apply<
- typename Begin::next,
- typename Begin::item
- >::type
- > type;
- };
-};
-
-template<>
-struct make_solve_list_first_non_zero<static_rational<0> > {
- template<class Begin, int N>
- struct apply {
- typedef typename solve_leading_zeroes<
- typename make_solve_list_leading_zeroes<N-1>::template apply<
- typename Begin::next
- >::type
- >::type type;
- };
-};
-
-template<int N>
-struct make_solve_list_leading_zeroes {
- template<class Begin>
- struct apply {
- typedef typename make_solve_list_first_non_zero<typename Begin::item>::template apply<Begin, N>::type type;
- };
-};
-
-template<>
-struct make_solve_list_leading_zeroes<0> {
- template<class Begin>
- struct apply {
- typedef no_solution type;
- };
-};
-
-template<int N>
-struct try_add_unit_impl {
- template<class Begin, class L>
- struct apply {
- typedef typename try_add_unit_impl<N-1>::template apply<typename Begin::next, L>::type next;
- typedef typename Begin::item::template apply<next>::type type;
- BOOST_STATIC_ASSERT((next::size::value - 1 == type::size::value));
- };
-};
-
-template<>
-struct try_add_unit_impl<0> {
- template<class Begin, class L>
- struct apply {
- typedef L type;
- };
-};
-
-template<int N>
-struct make_homogeneous_system_impl;
-
-template<class T, bool is_done>
-struct make_homogeneous_system_func;
-
-template<class T>
-struct make_homogeneous_system_func<T, false> {
- template<class Begin, class Current, class Units, class Dimensions, int N>
- struct apply {
- typedef typename make_homogeneous_system_impl<N-1>::template apply<
- typename Begin::next,
- list<T, Current>,
- list<typename Begin::item, Units>,
- Dimensions
- >::type type;
- };
-};
-
-template<class T>
-struct make_homogeneous_system_func<T, true> {
- template<class Begin, class Current, class Units, class Dimensions, int N>
- struct apply {
- typedef list<typename Begin::item, Units> type;
- };
-};
-
-template<>
-struct make_homogeneous_system_func<no_solution, false> {
- template<class Begin, class Current, class Units, class Dimensions, int N>
- struct apply {
- typedef typename make_homogeneous_system_impl<N-1>::template apply<
- typename Begin::next,
- Current,
- Units,
- Dimensions
- >::type type;
- };
-};
-
-template<>
-struct make_homogeneous_system_func<no_solution, true> {
- template<class Begin, class Current, class Units, class Dimensions, int N>
- struct apply {
- typedef typename make_homogeneous_system_impl<N-1>::template apply<
- typename Begin::next,
- Current,
- Units,
- Dimensions
- >::type type;
- };
-};
-
-template<int N>
-struct make_homogeneous_system_impl {
- template<class Begin, class Current, class Units, class Dimensions>
- struct apply {
- typedef typename expand_dimensions<Dimensions::size::value>::template apply<
- Dimensions,
- typename Begin::item::dimension_type
- >::type dimensions;
- typedef typename try_add_unit_impl<Current::size::value>::template apply<Current, dimensions>::type new_element;
- typedef typename make_solve_list_leading_zeroes<new_element::size::value>::template apply<new_element>::type new_func;
- typedef typename make_homogeneous_system_func<
- new_func,
- ((Current::size::value)+1) == (Dimensions::size::value)
- >::template apply<Begin, Current, Units, Dimensions, N>::type type;
- };
-};
-
-template<>
-struct make_homogeneous_system_impl<0> {
- template<class Begin, class Current, class Units, class Dimensions>
- struct apply {
- typedef Units type;
- };
-};
-
-template<class Units>
-struct make_homogeneous_system {
- typedef typename find_base_dimensions<Units>::type base_dimensions;
- typedef homogeneous_system<
- typename insertion_sort<
- typename make_homogeneous_system_impl<
- Units::size::value
- >::template apply<
- Units,
- dimensionless_type,
- dimensionless_type,
- base_dimensions
- >::type
- >::type
- > type;
-};
-
-template<int N>
-struct extract_base_units {
- template<class Begin, class T>
- struct apply {
- typedef list<
- typename Begin::item::tag_type,
- typename extract_base_units<N-1>::template apply<typename Begin::next, T>::type
- > type;
- };
-};
-
-template<>
-struct extract_base_units<0> {
- template<class Begin, class T>
- struct apply {
- typedef T type;
- };
-};
-
-}
-
-}
-
-}
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/detail/linear_algebra.hpp b/contrib/restricted/boost/boost/units/detail/linear_algebra.hpp
deleted file mode 100644
index 17ed34bd1b..0000000000
--- a/contrib/restricted/boost/boost/units/detail/linear_algebra.hpp
+++ /dev/null
@@ -1,1060 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DETAIL_LINEAR_ALGEBRA_HPP
-#define BOOST_UNITS_DETAIL_LINEAR_ALGEBRA_HPP
-
-#include <boost/units/static_rational.hpp>
-#include <boost/mpl/next.hpp>
-#include <boost/mpl/arithmetic.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/assert.hpp>
-
-#include <boost/units/dim.hpp>
-#include <boost/units/dimensionless_type.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/detail/dimension_list.hpp>
-#include <boost/units/detail/sort.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-// typedef list<rational> equation;
-
-template<int N>
-struct eliminate_from_pair_of_equations_impl;
-
-template<class E1, class E2>
-struct eliminate_from_pair_of_equations;
-
-template<int N>
-struct elimination_impl;
-
-template<bool is_zero, bool element_is_last>
-struct elimination_skip_leading_zeros_impl;
-
-template<class Equation, class Vars>
-struct substitute;
-
-template<int N>
-struct substitute_impl;
-
-template<bool is_end>
-struct solve_impl;
-
-template<class T>
-struct solve;
-
-template<int N>
-struct check_extra_equations_impl;
-
-template<int N>
-struct normalize_units_impl;
-
-struct inconsistent {};
-
-// generally useful utilies.
-
-template<int N>
-struct divide_equation {
- template<class Begin, class Divisor>
- struct apply {
- typedef list<typename mpl::divides<typename Begin::item, Divisor>::type, typename divide_equation<N - 1>::template apply<typename Begin::next, Divisor>::type> type;
- };
-};
-
-template<>
-struct divide_equation<0> {
- template<class Begin, class Divisor>
- struct apply {
- typedef dimensionless_type type;
- };
-};
-
-// eliminate_from_pair_of_equations takes a pair of
-// equations and eliminates the first variable.
-//
-// equation eliminate_from_pair_of_equations(equation l1, equation l2) {
-// rational x1 = l1.front();
-// rational x2 = l2.front();
-// return(transform(pop_front(l1), pop_front(l2), _1 * x2 - _2 * x1));
-// }
-
-template<int N>
-struct eliminate_from_pair_of_equations_impl {
- template<class Begin1, class Begin2, class X1, class X2>
- struct apply {
- typedef list<
- typename mpl::minus<
- typename mpl::times<typename Begin1::item, X2>::type,
- typename mpl::times<typename Begin2::item, X1>::type
- >::type,
- typename eliminate_from_pair_of_equations_impl<N - 1>::template apply<
- typename Begin1::next,
- typename Begin2::next,
- X1,
- X2
- >::type
- > type;
- };
-};
-
-template<>
-struct eliminate_from_pair_of_equations_impl<0> {
- template<class Begin1, class Begin2, class X1, class X2>
- struct apply {
- typedef dimensionless_type type;
- };
-};
-
-template<class E1, class E2>
-struct eliminate_from_pair_of_equations {
- typedef E1 begin1;
- typedef E2 begin2;
- typedef typename eliminate_from_pair_of_equations_impl<(E1::size::value - 1)>::template apply<
- typename begin1::next,
- typename begin2::next,
- typename begin1::item,
- typename begin2::item
- >::type type;
-};
-
-
-
-// Stage 1. Determine which dimensions should
-// have dummy base units. For this purpose
-// row reduce the matrix.
-
-template<int N>
-struct make_zero_vector {
- typedef list<static_rational<0>, typename make_zero_vector<N - 1>::type> type;
-};
-template<>
-struct make_zero_vector<0> {
- typedef dimensionless_type type;
-};
-
-template<int Column, int TotalColumns>
-struct create_row_of_identity {
- typedef list<static_rational<0>, typename create_row_of_identity<Column - 1, TotalColumns - 1>::type> type;
-};
-template<int TotalColumns>
-struct create_row_of_identity<0, TotalColumns> {
- typedef list<static_rational<1>, typename make_zero_vector<TotalColumns - 1>::type> type;
-};
-template<int Column>
-struct create_row_of_identity<Column, 0> {
- // error
-};
-
-template<int RemainingRows>
-struct determine_extra_equations_impl;
-
-template<bool first_is_zero, bool is_last>
-struct determine_extra_equations_skip_zeros_impl;
-
-// not the last row and not zero.
-template<>
-struct determine_extra_equations_skip_zeros_impl<false, false> {
- template<class RowsBegin, int RemainingRows, int CurrentColumn, int TotalColumns, class Result>
- struct apply {
- // remove the equation being eliminated against from the set of equations.
- typedef typename determine_extra_equations_impl<RemainingRows - 1>::template apply<typename RowsBegin::next, typename RowsBegin::item>::type next_equations;
- // since this column was present, strip it out.
- typedef Result type;
- };
-};
-
-// the last row but not zero.
-template<>
-struct determine_extra_equations_skip_zeros_impl<false, true> {
- template<class RowsBegin, int RemainingRows, int CurrentColumn, int TotalColumns, class Result>
- struct apply {
- // remove this equation.
- typedef dimensionless_type next_equations;
- // since this column was present, strip it out.
- typedef Result type;
- };
-};
-
-
-// the first columns is zero but it is not the last column.
-// continue with the same loop.
-template<>
-struct determine_extra_equations_skip_zeros_impl<true, false> {
- template<class RowsBegin, int RemainingRows, int CurrentColumn, int TotalColumns, class Result>
- struct apply {
- typedef typename RowsBegin::next::item next_row;
- typedef typename determine_extra_equations_skip_zeros_impl<
- next_row::item::Numerator == 0,
- RemainingRows == 2 // the next one will be the last.
- >::template apply<
- typename RowsBegin::next,
- RemainingRows - 1,
- CurrentColumn,
- TotalColumns,
- Result
- > next;
- typedef list<typename RowsBegin::item::next, typename next::next_equations> next_equations;
- typedef typename next::type type;
- };
-};
-
-// all the elements in this column are zero.
-template<>
-struct determine_extra_equations_skip_zeros_impl<true, true> {
- template<class RowsBegin, int RemainingRows, int CurrentColumn, int TotalColumns, class Result>
- struct apply {
- typedef list<typename RowsBegin::item::next, dimensionless_type> next_equations;
- typedef list<typename create_row_of_identity<CurrentColumn, TotalColumns>::type, Result> type;
- };
-};
-
-template<int RemainingRows>
-struct determine_extra_equations_impl {
- template<class RowsBegin, class EliminateAgainst>
- struct apply {
- typedef list<
- typename eliminate_from_pair_of_equations<typename RowsBegin::item, EliminateAgainst>::type,
- typename determine_extra_equations_impl<RemainingRows-1>::template apply<typename RowsBegin::next, EliminateAgainst>::type
- > type;
- };
-};
-
-template<>
-struct determine_extra_equations_impl<0> {
- template<class RowsBegin, class EliminateAgainst>
- struct apply {
- typedef dimensionless_type type;
- };
-};
-
-template<int RemainingColumns, bool is_done>
-struct determine_extra_equations {
- template<class RowsBegin, int TotalColumns, class Result>
- struct apply {
- typedef typename RowsBegin::item top_row;
- typedef typename determine_extra_equations_skip_zeros_impl<
- top_row::item::Numerator == 0,
- RowsBegin::size::value == 1
- >::template apply<
- RowsBegin,
- RowsBegin::size::value,
- TotalColumns - RemainingColumns,
- TotalColumns,
- Result
- > column_info;
- typedef typename determine_extra_equations<
- RemainingColumns - 1,
- column_info::next_equations::size::value == 0
- >::template apply<
- typename column_info::next_equations,
- TotalColumns,
- typename column_info::type
- >::type type;
- };
-};
-
-template<int RemainingColumns>
-struct determine_extra_equations<RemainingColumns, true> {
- template<class RowsBegin, int TotalColumns, class Result>
- struct apply {
- typedef typename determine_extra_equations<RemainingColumns - 1, true>::template apply<
- RowsBegin,
- TotalColumns,
- list<typename create_row_of_identity<TotalColumns - RemainingColumns, TotalColumns>::type, Result>
- >::type type;
- };
-};
-
-template<>
-struct determine_extra_equations<0, true> {
- template<class RowsBegin, int TotalColumns, class Result>
- struct apply {
- typedef Result type;
- };
-};
-
-// Stage 2
-// invert the matrix using Gauss-Jordan elimination
-
-
-template<bool is_zero, bool is_last>
-struct invert_strip_leading_zeroes;
-
-template<int N>
-struct invert_handle_after_pivot_row;
-
-// When processing column N, none of the first N rows
-// can be the pivot column.
-template<int N>
-struct invert_handle_inital_rows {
- template<class RowsBegin, class IdentityBegin>
- struct apply {
- typedef typename invert_handle_inital_rows<N - 1>::template apply<
- typename RowsBegin::next,
- typename IdentityBegin::next
- > next;
- typedef typename RowsBegin::item current_row;
- typedef typename IdentityBegin::item current_identity_row;
- typedef typename next::pivot_row pivot_row;
- typedef typename next::identity_pivot_row identity_pivot_row;
- typedef list<
- typename eliminate_from_pair_of_equations_impl<(current_row::size::value) - 1>::template apply<
- typename current_row::next,
- pivot_row,
- typename current_row::item,
- static_rational<1>
- >::type,
- typename next::new_matrix
- > new_matrix;
- typedef list<
- typename eliminate_from_pair_of_equations_impl<(current_identity_row::size::value)>::template apply<
- current_identity_row,
- identity_pivot_row,
- typename current_row::item,
- static_rational<1>
- >::type,
- typename next::identity_result
- > identity_result;
- };
-};
-
-// This handles the switch to searching for a pivot column.
-// The pivot row will be propagated up in the typedefs
-// pivot_row and identity_pivot_row. It is inserted here.
-template<>
-struct invert_handle_inital_rows<0> {
- template<class RowsBegin, class IdentityBegin>
- struct apply {
- typedef typename RowsBegin::item current_row;
- typedef typename invert_strip_leading_zeroes<
- (current_row::item::Numerator == 0),
- (RowsBegin::size::value == 1)
- >::template apply<
- RowsBegin,
- IdentityBegin
- > next;
- // results
- typedef list<typename next::pivot_row, typename next::new_matrix> new_matrix;
- typedef list<typename next::identity_pivot_row, typename next::identity_result> identity_result;
- typedef typename next::pivot_row pivot_row;
- typedef typename next::identity_pivot_row identity_pivot_row;
- };
-};
-
-// The first internal element which is not zero.
-template<>
-struct invert_strip_leading_zeroes<false, false> {
- template<class RowsBegin, class IdentityBegin>
- struct apply {
- typedef typename RowsBegin::item current_row;
- typedef typename current_row::item current_value;
- typedef typename divide_equation<(current_row::size::value - 1)>::template apply<typename current_row::next, current_value>::type new_equation;
- typedef typename divide_equation<(IdentityBegin::item::size::value)>::template apply<typename IdentityBegin::item, current_value>::type transformed_identity_equation;
- typedef typename invert_handle_after_pivot_row<(RowsBegin::size::value - 1)>::template apply<
- typename RowsBegin::next,
- typename IdentityBegin::next,
- new_equation,
- transformed_identity_equation
- > next;
-
- // results
- // Note that we don't add the pivot row to the
- // results here, because it needs to propagated up
- // to the diagonal.
- typedef typename next::new_matrix new_matrix;
- typedef typename next::identity_result identity_result;
- typedef new_equation pivot_row;
- typedef transformed_identity_equation identity_pivot_row;
- };
-};
-
-// The one and only non-zero element--at the end
-template<>
-struct invert_strip_leading_zeroes<false, true> {
- template<class RowsBegin, class IdentityBegin>
- struct apply {
- typedef typename RowsBegin::item current_row;
- typedef typename current_row::item current_value;
- typedef typename divide_equation<(current_row::size::value - 1)>::template apply<typename current_row::next, current_value>::type new_equation;
- typedef typename divide_equation<(IdentityBegin::item::size::value)>::template apply<typename IdentityBegin::item, current_value>::type transformed_identity_equation;
-
- // results
- // Note that we don't add the pivot row to the
- // results here, because it needs to propagated up
- // to the diagonal.
- typedef dimensionless_type identity_result;
- typedef dimensionless_type new_matrix;
- typedef new_equation pivot_row;
- typedef transformed_identity_equation identity_pivot_row;
- };
-};
-
-// One of the initial zeroes
-template<>
-struct invert_strip_leading_zeroes<true, false> {
- template<class RowsBegin, class IdentityBegin>
- struct apply {
- typedef typename RowsBegin::item current_row;
- typedef typename RowsBegin::next::item next_row;
- typedef typename invert_strip_leading_zeroes<
- next_row::item::Numerator == 0,
- RowsBegin::size::value == 2
- >::template apply<
- typename RowsBegin::next,
- typename IdentityBegin::next
- > next;
- typedef typename IdentityBegin::item current_identity_row;
- // these are propagated up.
- typedef typename next::pivot_row pivot_row;
- typedef typename next::identity_pivot_row identity_pivot_row;
- typedef list<
- typename eliminate_from_pair_of_equations_impl<(current_row::size::value - 1)>::template apply<
- typename current_row::next,
- pivot_row,
- typename current_row::item,
- static_rational<1>
- >::type,
- typename next::new_matrix
- > new_matrix;
- typedef list<
- typename eliminate_from_pair_of_equations_impl<(current_identity_row::size::value)>::template apply<
- current_identity_row,
- identity_pivot_row,
- typename current_row::item,
- static_rational<1>
- >::type,
- typename next::identity_result
- > identity_result;
- };
-};
-
-// the last element, and is zero.
-// Should never happen.
-template<>
-struct invert_strip_leading_zeroes<true, true> {
-};
-
-template<int N>
-struct invert_handle_after_pivot_row {
- template<class RowsBegin, class IdentityBegin, class MatrixPivot, class IdentityPivot>
- struct apply {
- typedef typename invert_handle_after_pivot_row<N - 1>::template apply<
- typename RowsBegin::next,
- typename IdentityBegin::next,
- MatrixPivot,
- IdentityPivot
- > next;
- typedef typename RowsBegin::item current_row;
- typedef typename IdentityBegin::item current_identity_row;
- typedef MatrixPivot pivot_row;
- typedef IdentityPivot identity_pivot_row;
-
- // results
- typedef list<
- typename eliminate_from_pair_of_equations_impl<(current_row::size::value - 1)>::template apply<
- typename current_row::next,
- pivot_row,
- typename current_row::item,
- static_rational<1>
- >::type,
- typename next::new_matrix
- > new_matrix;
- typedef list<
- typename eliminate_from_pair_of_equations_impl<(current_identity_row::size::value)>::template apply<
- current_identity_row,
- identity_pivot_row,
- typename current_row::item,
- static_rational<1>
- >::type,
- typename next::identity_result
- > identity_result;
- };
-};
-
-template<>
-struct invert_handle_after_pivot_row<0> {
- template<class RowsBegin, class IdentityBegin, class MatrixPivot, class IdentityPivot>
- struct apply {
- typedef dimensionless_type new_matrix;
- typedef dimensionless_type identity_result;
- };
-};
-
-template<int N>
-struct invert_impl {
- template<class RowsBegin, class IdentityBegin>
- struct apply {
- typedef typename invert_handle_inital_rows<RowsBegin::size::value - N>::template apply<RowsBegin, IdentityBegin> process_column;
- typedef typename invert_impl<N - 1>::template apply<
- typename process_column::new_matrix,
- typename process_column::identity_result
- >::type type;
- };
-};
-
-template<>
-struct invert_impl<0> {
- template<class RowsBegin, class IdentityBegin>
- struct apply {
- typedef IdentityBegin type;
- };
-};
-
-template<int N>
-struct make_identity {
- template<int Size>
- struct apply {
- typedef list<typename create_row_of_identity<Size - N, Size>::type, typename make_identity<N - 1>::template apply<Size>::type> type;
- };
-};
-
-template<>
-struct make_identity<0> {
- template<int Size>
- struct apply {
- typedef dimensionless_type type;
- };
-};
-
-template<class Matrix>
-struct make_square_and_invert {
- typedef typename Matrix::item top_row;
- typedef typename determine_extra_equations<(top_row::size::value), false>::template apply<
- Matrix, // RowsBegin
- top_row::size::value, // TotalColumns
- Matrix // Result
- >::type invertible;
- typedef typename invert_impl<invertible::size::value>::template apply<
- invertible,
- typename make_identity<invertible::size::value>::template apply<invertible::size::value>::type
- >::type type;
-};
-
-
-// find_base_dimensions takes a list of
-// base_units and returns a sorted list
-// of all the base_dimensions they use.
-//
-// list<base_dimension> find_base_dimensions(list<base_unit> l) {
-// set<base_dimension> dimensions;
-// for_each(base_unit unit : l) {
-// for_each(dim d : unit.dimension_type) {
-// dimensions = insert(dimensions, d.tag_type);
-// }
-// }
-// return(sort(dimensions, _1 > _2, front_inserter(list<base_dimension>())));
-// }
-
-typedef char set_no;
-struct set_yes { set_no dummy[2]; };
-
-template<class T>
-struct wrap {};
-
-struct set_end {
- static set_no lookup(...);
- typedef mpl::long_<0> size;
-};
-
-template<class T, class Next>
-struct set : Next {
- using Next::lookup;
- static set_yes lookup(wrap<T>*);
- typedef T item;
- typedef Next next;
- typedef typename mpl::next<typename Next::size>::type size;
-};
-
-template<bool has_key>
-struct set_insert;
-
-template<>
-struct set_insert<true> {
- template<class Set, class T>
- struct apply {
- typedef Set type;
- };
-};
-
-template<>
-struct set_insert<false> {
- template<class Set, class T>
- struct apply {
- typedef set<T, Set> type;
- };
-};
-
-template<class Set, class T>
-struct has_key {
- BOOST_STATIC_CONSTEXPR long size = sizeof(Set::lookup((wrap<T>*)0));
- BOOST_STATIC_CONSTEXPR bool value = (size == sizeof(set_yes));
-};
-
-template<int N>
-struct find_base_dimensions_impl_impl {
- template<class Begin, class S>
- struct apply {
- typedef typename find_base_dimensions_impl_impl<N-1>::template apply<
- typename Begin::next,
- S
- >::type next;
-
- typedef typename set_insert<
- (has_key<next, typename Begin::item::tag_type>::value)
- >::template apply<
- next,
- typename Begin::item::tag_type
- >::type type;
- };
-};
-
-template<>
-struct find_base_dimensions_impl_impl<0> {
- template<class Begin, class S>
- struct apply {
- typedef S type;
- };
-};
-
-template<int N>
-struct find_base_dimensions_impl {
- template<class Begin>
- struct apply {
- typedef typename find_base_dimensions_impl_impl<(Begin::item::dimension_type::size::value)>::template apply<
- typename Begin::item::dimension_type,
- typename find_base_dimensions_impl<N-1>::template apply<typename Begin::next>::type
- >::type type;
- };
-};
-
-template<>
-struct find_base_dimensions_impl<0> {
- template<class Begin>
- struct apply {
- typedef set_end type;
- };
-};
-
-template<class T>
-struct find_base_dimensions {
- typedef typename insertion_sort<
- typename find_base_dimensions_impl<
- (T::size::value)
- >::template apply<T>::type
- >::type type;
-};
-
-// calculate_base_dimension_coefficients finds
-// the coefficients corresponding to the first
-// base_dimension in each of the dimension_lists.
-// It returns two values. The first result
-// is a list of the coefficients. The second
-// is a list with all the incremented iterators.
-// When we encounter a base_dimension that is
-// missing from a dimension_list, we do not
-// increment the iterator and we set the
-// coefficient to zero.
-
-template<bool has_dimension>
-struct calculate_base_dimension_coefficients_func;
-
-template<>
-struct calculate_base_dimension_coefficients_func<true> {
- template<class T>
- struct apply {
- typedef typename T::item::value_type type;
- typedef typename T::next next;
- };
-};
-
-template<>
-struct calculate_base_dimension_coefficients_func<false> {
- template<class T>
- struct apply {
- typedef static_rational<0> type;
- typedef T next;
- };
-};
-
-// begins_with_dimension returns true iff its first
-// parameter is a valid iterator which yields its
-// second parameter when dereferenced.
-
-template<class Iterator>
-struct begins_with_dimension {
- template<class Dim>
- struct apply :
- boost::is_same<
- Dim,
- typename Iterator::item::tag_type
- > {};
-};
-
-template<>
-struct begins_with_dimension<dimensionless_type> {
- template<class Dim>
- struct apply : mpl::false_ {};
-};
-
-template<int N>
-struct calculate_base_dimension_coefficients_impl {
- template<class BaseUnitDimensions,class Dim,class T>
- struct apply {
- typedef typename calculate_base_dimension_coefficients_func<
- begins_with_dimension<typename BaseUnitDimensions::item>::template apply<
- Dim
- >::value
- >::template apply<
- typename BaseUnitDimensions::item
- > result;
- typedef typename calculate_base_dimension_coefficients_impl<N-1>::template apply<
- typename BaseUnitDimensions::next,
- Dim,
- list<typename result::type, T>
- > next_;
- typedef typename next_::type type;
- typedef list<typename result::next, typename next_::next> next;
- };
-};
-
-template<>
-struct calculate_base_dimension_coefficients_impl<0> {
- template<class Begin, class BaseUnitDimensions, class T>
- struct apply {
- typedef T type;
- typedef dimensionless_type next;
- };
-};
-
-// add_zeroes pushs N zeroes onto the
-// front of a list.
-//
-// list<rational> add_zeroes(list<rational> l, int N) {
-// if(N == 0) {
-// return(l);
-// } else {
-// return(push_front(add_zeroes(l, N-1), 0));
-// }
-// }
-
-template<int N>
-struct add_zeroes_impl {
- // If you get an error here and your base units are
- // in fact linearly independent, please report it.
- BOOST_MPL_ASSERT_MSG((N > 0), base_units_are_probably_not_linearly_independent, (void));
- template<class T>
- struct apply {
- typedef list<
- static_rational<0>,
- typename add_zeroes_impl<N-1>::template apply<T>::type
- > type;
- };
-};
-
-template<>
-struct add_zeroes_impl<0> {
- template<class T>
- struct apply {
- typedef T type;
- };
-};
-
-// expand_dimensions finds the exponents of
-// a set of dimensions in a dimension_list.
-// the second parameter is assumed to be
-// a superset of the base_dimensions of
-// the first parameter.
-//
-// list<rational> expand_dimensions(dimension_list, list<base_dimension>);
-
-template<int N>
-struct expand_dimensions {
- template<class Begin, class DimensionIterator>
- struct apply {
- typedef typename calculate_base_dimension_coefficients_func<
- begins_with_dimension<DimensionIterator>::template apply<typename Begin::item>::value
- >::template apply<DimensionIterator> result;
- typedef list<
- typename result::type,
- typename expand_dimensions<N-1>::template apply<typename Begin::next, typename result::next>::type
- > type;
- };
-};
-
-template<>
-struct expand_dimensions<0> {
- template<class Begin, class DimensionIterator>
- struct apply {
- typedef dimensionless_type type;
- };
-};
-
-template<int N>
-struct create_unit_matrix {
- template<class Begin, class Dimensions>
- struct apply {
- typedef typename create_unit_matrix<N - 1>::template apply<typename Begin::next, Dimensions>::type next;
- typedef list<typename expand_dimensions<Dimensions::size::value>::template apply<Dimensions, typename Begin::item::dimension_type>::type, next> type;
- };
-};
-
-template<>
-struct create_unit_matrix<0> {
- template<class Begin, class Dimensions>
- struct apply {
- typedef dimensionless_type type;
- };
-};
-
-template<class T>
-struct normalize_units {
- typedef typename find_base_dimensions<T>::type dimensions;
- typedef typename create_unit_matrix<(T::size::value)>::template apply<
- T,
- dimensions
- >::type matrix;
- typedef typename make_square_and_invert<matrix>::type type;
- BOOST_STATIC_CONSTEXPR long extra = (type::size::value) - (T::size::value);
-};
-
-// multiply_add_units computes M x V
-// where M is a matrix and V is a horizontal
-// vector
-//
-// list<rational> multiply_add_units(list<list<rational> >, list<rational>);
-
-template<int N>
-struct multiply_add_units_impl {
- template<class Begin1, class Begin2 ,class X>
- struct apply {
- typedef list<
- typename mpl::plus<
- typename mpl::times<
- typename Begin2::item,
- X
- >::type,
- typename Begin1::item
- >::type,
- typename multiply_add_units_impl<N-1>::template apply<
- typename Begin1::next,
- typename Begin2::next,
- X
- >::type
- > type;
- };
-};
-
-template<>
-struct multiply_add_units_impl<0> {
- template<class Begin1, class Begin2 ,class X>
- struct apply {
- typedef dimensionless_type type;
- };
-};
-
-template<int N>
-struct multiply_add_units {
- template<class Begin1, class Begin2>
- struct apply {
- typedef typename multiply_add_units_impl<
- (Begin2::item::size::value)
- >::template apply<
- typename multiply_add_units<N-1>::template apply<
- typename Begin1::next,
- typename Begin2::next
- >::type,
- typename Begin2::item,
- typename Begin1::item
- >::type type;
- };
-};
-
-template<>
-struct multiply_add_units<1> {
- template<class Begin1, class Begin2>
- struct apply {
- typedef typename add_zeroes_impl<
- (Begin2::item::size::value)
- >::template apply<dimensionless_type>::type type1;
- typedef typename multiply_add_units_impl<
- (Begin2::item::size::value)
- >::template apply<
- type1,
- typename Begin2::item,
- typename Begin1::item
- >::type type;
- };
-};
-
-
-// strip_zeroes erases the first N elements of a list if
-// they are all zero, otherwise returns inconsistent
-//
-// list strip_zeroes(list l, int N) {
-// if(N == 0) {
-// return(l);
-// } else if(l.front == 0) {
-// return(strip_zeroes(pop_front(l), N-1));
-// } else {
-// return(inconsistent);
-// }
-// }
-
-template<int N>
-struct strip_zeroes_impl;
-
-template<class T>
-struct strip_zeroes_func {
- template<class L, int N>
- struct apply {
- typedef inconsistent type;
- };
-};
-
-template<>
-struct strip_zeroes_func<static_rational<0> > {
- template<class L, int N>
- struct apply {
- typedef typename strip_zeroes_impl<N-1>::template apply<typename L::next>::type type;
- };
-};
-
-template<int N>
-struct strip_zeroes_impl {
- template<class T>
- struct apply {
- typedef typename strip_zeroes_func<typename T::item>::template apply<T, N>::type type;
- };
-};
-
-template<>
-struct strip_zeroes_impl<0> {
- template<class T>
- struct apply {
- typedef T type;
- };
-};
-
-// Given a list of base_units, computes the
-// exponents of each base unit for a given
-// dimension.
-//
-// list<rational> calculate_base_unit_exponents(list<base_unit> units, dimension_list dimensions);
-
-template<class T>
-struct is_base_dimension_unit {
- typedef mpl::false_ type;
- typedef void base_dimension_type;
-};
-template<class T>
-struct is_base_dimension_unit<list<dim<T, static_rational<1> >, dimensionless_type> > {
- typedef mpl::true_ type;
- typedef T base_dimension_type;
-};
-
-template<int N>
-struct is_simple_system_impl {
- template<class Begin, class Prev>
- struct apply {
- typedef is_base_dimension_unit<typename Begin::item::dimension_type> test;
- typedef mpl::and_<
- typename test::type,
- mpl::less<Prev, typename test::base_dimension_type>,
- typename is_simple_system_impl<N-1>::template apply<
- typename Begin::next,
- typename test::base_dimension_type
- >
- > type;
- BOOST_STATIC_CONSTEXPR bool value = (type::value);
- };
-};
-
-template<>
-struct is_simple_system_impl<0> {
- template<class Begin, class Prev>
- struct apply : mpl::true_ {
- };
-};
-
-template<class T>
-struct is_simple_system {
- typedef T Begin;
- typedef is_base_dimension_unit<typename Begin::item::dimension_type> test;
- typedef typename mpl::and_<
- typename test::type,
- typename is_simple_system_impl<
- T::size::value - 1
- >::template apply<
- typename Begin::next::type,
- typename test::base_dimension_type
- >
- >::type type;
- BOOST_STATIC_CONSTEXPR bool value = type::value;
-};
-
-template<bool>
-struct calculate_base_unit_exponents_impl;
-
-template<>
-struct calculate_base_unit_exponents_impl<true> {
- template<class T, class Dimensions>
- struct apply {
- typedef typename expand_dimensions<(T::size::value)>::template apply<
- typename find_base_dimensions<T>::type,
- Dimensions
- >::type type;
- };
-};
-
-template<>
-struct calculate_base_unit_exponents_impl<false> {
- template<class T, class Dimensions>
- struct apply {
- // find the units that correspond to each base dimension
- typedef normalize_units<T> base_solutions;
- // pad the dimension with zeroes so it can just be a
- // list of numbers, making the multiplication easy
- // e.g. if the arguments are list<pound, foot> and
- // list<mass,time^-2> then this step will
- // yield list<0,1,-2>
- typedef typename expand_dimensions<(base_solutions::dimensions::size::value)>::template apply<
- typename base_solutions::dimensions,
- Dimensions
- >::type dimensions;
- // take the unit corresponding to each base unit
- // multiply each of its exponents by the exponent
- // of the base_dimension in the result and sum.
- typedef typename multiply_add_units<dimensions::size::value>::template apply<
- dimensions,
- typename base_solutions::type
- >::type units;
- // Now, verify that the dummy units really
- // cancel out and remove them.
- typedef typename strip_zeroes_impl<base_solutions::extra>::template apply<units>::type type;
- };
-};
-
-template<class T, class Dimensions>
-struct calculate_base_unit_exponents {
- typedef typename calculate_base_unit_exponents_impl<is_simple_system<T>::value>::template apply<T, Dimensions>::type type;
-};
-
-} // namespace detail
-
-} // namespace units
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/detail/one.hpp b/contrib/restricted/boost/boost/units/detail/one.hpp
deleted file mode 100644
index 1643e6a662..0000000000
--- a/contrib/restricted/boost/boost/units/detail/one.hpp
+++ /dev/null
@@ -1,117 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DETAIL_ONE_HPP
-#define BOOST_UNITS_DETAIL_ONE_HPP
-
-#include <boost/units/operators.hpp>
-
-namespace boost {
-
-namespace units {
-
-struct one { BOOST_CONSTEXPR one() {} };
-
-// workaround for pathscale.
-inline BOOST_CONSTEXPR one make_one() {
- return(one());
-}
-
-template<class T>
-struct multiply_typeof_helper<one, T>
-{
- typedef T type;
-};
-
-template<class T>
-struct multiply_typeof_helper<T, one>
-{
- typedef T type;
-};
-
-template<>
-struct multiply_typeof_helper<one, one>
-{
- typedef one type;
-};
-
-template<class T>
-inline BOOST_CONSTEXPR T operator*(const one&, const T& t)
-{
- return(t);
-}
-
-template<class T>
-inline BOOST_CONSTEXPR T operator*(const T& t, const one&)
-{
- return(t);
-}
-
-inline BOOST_CONSTEXPR one operator*(const one&, const one&)
-{
- return(one());
-}
-
-template<class T>
-struct divide_typeof_helper<T, one>
-{
- typedef T type;
-};
-
-template<class T>
-struct divide_typeof_helper<one, T>
-{
- typedef T type;
-};
-
-template<>
-struct divide_typeof_helper<one, one>
-{
- typedef one type;
-};
-
-template<class T>
-inline BOOST_CONSTEXPR T operator/(const T& t, const one&)
-{
- return(t);
-}
-
-template<class T>
-inline BOOST_CONSTEXPR T operator/(const one&, const T& t)
-{
- return(1/t);
-}
-
-inline BOOST_CONSTEXPR one operator/(const one&, const one&)
-{
- return(one());
-}
-
-template<class T>
-inline BOOST_CONSTEXPR bool operator>(const boost::units::one&, const T& t) {
- return(1 > t);
-}
-
-template<class T>
-BOOST_CONSTEXPR T one_to_double(const T& t) { return t; }
-
-inline BOOST_CONSTEXPR double one_to_double(const one&) { return 1.0; }
-
-template<class T>
-struct one_to_double_type { typedef T type; };
-
-template<>
-struct one_to_double_type<one> { typedef double type; };
-
-} // namespace units
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/detail/ordinal.hpp b/contrib/restricted/boost/boost/units/detail/ordinal.hpp
deleted file mode 100644
index eaf5bde316..0000000000
--- a/contrib/restricted/boost/boost/units/detail/ordinal.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DETAIL_ORDINAL_HPP_INCLUDED
-#define BOOST_UNITS_DETAIL_ORDINAL_HPP_INCLUDED
-
-#include <boost/mpl/less.hpp>
-#include <boost/mpl/bool.hpp>
-
-namespace boost {
-namespace units {
-
-namespace detail {
-
-struct ordinal_tag {};
-
-}
-
-template<int N>
-struct ordinal {
- typedef detail::ordinal_tag tag;
- BOOST_STATIC_CONSTEXPR long value = N;
-};
-
-template<int N>
-BOOST_CONSTEXPR_OR_CONST long ordinal<N>::value;
-
-}
-
-namespace mpl {
-
-template<>
-struct less_impl<units::detail::ordinal_tag, units::detail::ordinal_tag> {
- template<class T1, class T2>
- struct apply : bool_<(T1::value) < (T2::value)> {};
-};
-
-}
-
-}
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/detail/prevent_redefinition.hpp b/contrib/restricted/boost/boost/units/detail/prevent_redefinition.hpp
deleted file mode 100644
index 1f23575370..0000000000
--- a/contrib/restricted/boost/boost/units/detail/prevent_redefinition.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DETAIL_PREVENT_REDEFINITION_HPP
-#define BOOST_UNITS_DETAIL_PREVENT_REDEFINITION_HPP
-
-#include <boost/mpl/long.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-struct no { BOOST_CONSTEXPR no() : dummy() {} char dummy; };
-struct yes { no dummy[2]; };
-
-template<bool> struct ordinal_has_already_been_defined;
-
-template<>
-struct ordinal_has_already_been_defined<true> { };
-
-template<>
-struct ordinal_has_already_been_defined<false> { typedef void type; };
-
-}
-
-/// This must be in namespace boost::units so that ADL
-/// will work. we need a mangled name because it must
-/// be found by ADL
-/// INTERNAL ONLY
-template<class T>
-BOOST_CONSTEXPR
-detail::no
-boost_units_is_registered(const T&)
-{ return(detail::no()); }
-
-/// INTERNAL ONLY
-template<class T>
-BOOST_CONSTEXPR
-detail::no
-boost_units_unit_is_registered(const T&)
-{ return(detail::no()); }
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_PREVENT_ORDINAL_REDEFINITION_IMPL_HPP
diff --git a/contrib/restricted/boost/boost/units/detail/push_front_if.hpp b/contrib/restricted/boost/boost/units/detail/push_front_if.hpp
deleted file mode 100644
index b924a24c6b..0000000000
--- a/contrib/restricted/boost/boost/units/detail/push_front_if.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DETAIL_PUSH_FRONT_IF_HPP
-#define BOOST_UNITS_DETAIL_PUSH_FRONT_IF_HPP
-
-namespace boost {
-
-namespace units {
-
-template<class T, class Next>
-struct list;
-
-namespace detail {
-
-template<bool>
-struct push_front_if;
-
-template<>
-struct push_front_if<true> {
- template<class L, class T>
- struct apply {
- typedef list<T, L> type;
- };
-};
-
-template<>
-struct push_front_if<false> {
- template<class L, class T>
- struct apply {
- typedef L type;
- };
-};
-
-}
-
-}
-
-}
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/detail/push_front_or_add.hpp b/contrib/restricted/boost/boost/units/detail/push_front_or_add.hpp
deleted file mode 100644
index a3092da766..0000000000
--- a/contrib/restricted/boost/boost/units/detail/push_front_or_add.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DETAIL_PUSH_FRONT_OR_ADD_HPP
-#define BOOST_UNITS_DETAIL_PUSH_FRONT_OR_ADD_HPP
-
-#include <boost/mpl/plus.hpp>
-#include <boost/mpl/front.hpp>
-#include <boost/mpl/push_front.hpp>
-#include <boost/mpl/pop_front.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/detail/push_front_if.hpp>
-
-namespace boost {
-
-namespace units {
-
-template<class Item, class Next>
-struct list;
-
-namespace detail {
-
-template<class T>
-struct is_empty_dim;
-
-/// add an instantiation of dim to Sequence.
-template<bool>
-struct push_front_or_add_impl;
-
-template<>
-struct push_front_or_add_impl<true>
-{
- template<typename Sequence, typename T>
- struct apply
- {
- typedef typename mpl::plus<T, typename Sequence::item>::type item;
- typedef typename push_front_if<!is_empty_dim<item>::value>::template apply<
- typename Sequence::next,
- item
- > type;
- };
-};
-
-template<>
-struct push_front_or_add_impl<false>
-{
- template<typename Sequence, typename T>
- struct apply
- {
- typedef list<T, Sequence> type;
- };
-};
-
-template<typename Sequence, typename T>
-struct push_front_or_add
-{
- typedef typename push_front_or_add_impl<boost::is_same<typename T::tag_type, typename Sequence::item::tag_type>::value>::template apply<
- Sequence,
- T
- >::type type;
-};
-
-template<typename T>
-struct push_front_or_add<dimensionless_type, T>
-{
- typedef list<T, dimensionless_type> type;
-};
-
-} // namespace detail
-
-} // namespace units
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/detail/sort.hpp b/contrib/restricted/boost/boost/units/detail/sort.hpp
deleted file mode 100644
index 389adfe6ec..0000000000
--- a/contrib/restricted/boost/boost/units/detail/sort.hpp
+++ /dev/null
@@ -1,109 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DETAIL_SORT_HPP
-#define BOOST_UNITS_DETAIL_SORT_HPP
-
-#include <boost/mpl/size.hpp>
-#include <boost/mpl/begin.hpp>
-#include <boost/mpl/next.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/mpl/push_front.hpp>
-#include <boost/mpl/less.hpp>
-
-#include <boost/units/dimensionless_type.hpp>
-#include <boost/units/detail/dimension_list.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-template<int N>
-struct insertion_sort_insert;
-
-template<bool is_greater>
-struct insertion_sort_comparison_impl;
-
-// have to recursively add the element to the next sequence.
-template<>
-struct insertion_sort_comparison_impl<true> {
- template<class Begin, int N, class T>
- struct apply {
- typedef list<
- typename Begin::item,
- typename insertion_sort_insert<N - 1>::template apply<
- typename Begin::next,
- T
- >::type
- > type;
- };
-};
-
-// prepend the current element
-template<>
-struct insertion_sort_comparison_impl<false> {
- template<class Begin, int N, class T>
- struct apply {
- typedef list<T, Begin> type;
- };
-};
-
-template<int N>
-struct insertion_sort_insert {
- template<class Begin, class T>
- struct apply {
- typedef typename insertion_sort_comparison_impl<mpl::less<typename Begin::item, T>::value>::template apply<
- Begin,
- N,
- T
- >::type type;
- };
-};
-
-template<>
-struct insertion_sort_insert<0> {
- template<class Begin, class T>
- struct apply {
- typedef list<T, dimensionless_type> type;
- };
-};
-
-template<int N>
-struct insertion_sort_impl {
- template<class Begin>
- struct apply {
- typedef typename insertion_sort_impl<N - 1>::template apply<typename Begin::next>::type next;
- typedef typename insertion_sort_insert<(next::size::value)>::template apply<next, typename Begin::item>::type type;
- };
-};
-
-template<>
-struct insertion_sort_impl<0> {
- template<class Begin>
- struct apply {
- typedef dimensionless_type type;
- };
-};
-
-template<class T>
-struct insertion_sort
-{
- typedef typename insertion_sort_impl<T::size::value>::template apply<T>::type type;
-};
-
-} // namespace detail
-
-} // namespace units
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/detail/static_rational_power.hpp b/contrib/restricted/boost/boost/units/detail/static_rational_power.hpp
deleted file mode 100644
index e8e62c757a..0000000000
--- a/contrib/restricted/boost/boost/units/detail/static_rational_power.hpp
+++ /dev/null
@@ -1,201 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DETAIL_STATIC_RATIONAL_POWER_HPP
-#define BOOST_UNITS_DETAIL_STATIC_RATIONAL_POWER_HPP
-
-#include <boost/config/no_tr1/cmath.hpp>
-
-#include <boost/units/detail/one.hpp>
-#include <boost/units/operators.hpp>
-
-namespace boost {
-
-namespace units {
-
-template<long N,long D>
-class static_rational;
-
-namespace detail {
-
-namespace typeof_pow_adl_barrier {
-
-using std::pow;
-
-template<class Y>
-struct typeof_pow
-{
-#if defined(BOOST_UNITS_HAS_BOOST_TYPEOF)
- BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, pow(typeof_::make<Y>(), 0.0))
- typedef typename nested::type type;
-#elif defined(BOOST_UNITS_HAS_MWERKS_TYPEOF)
- typedef __typeof__(pow(typeof_::make<Y>(), 0.0)) type;
-#elif defined(BOOST_UNITS_HAS_GNU_TYPEOF)
- typedef typeof(pow(typeof_::make<Y>(), 0.0)) type;
-#else
- typedef Y type;
-#endif
-};
-
-}
-
-template<class R, class Y>
-struct static_rational_power_impl
-{
- typedef typename typeof_pow_adl_barrier::typeof_pow<Y>::type type;
- static BOOST_CONSTEXPR type call(const Y& y)
- {
- using std::pow;
- return(pow(y, static_cast<double>(R::Numerator) / static_cast<double>(R::Denominator)));
- }
-};
-
-template<class R>
-struct static_rational_power_impl<R, one>
-{
- typedef one type;
- static BOOST_CONSTEXPR one call(const one&)
- {
- return(one());
- }
-};
-
-template<long N>
-struct static_rational_power_impl<static_rational<N, 1>, one>
-{
- typedef one type;
- static BOOST_CONSTEXPR one call(const one&)
- {
- return(one());
- }
-};
-
-template<long N, bool = (N % 2 == 0)>
-struct static_int_power_impl;
-
-template<long N>
-struct static_int_power_impl<N, true>
-{
- template<class Y, class R>
- struct apply
- {
- typedef typename multiply_typeof_helper<Y, Y>::type square_type;
- typedef typename static_int_power_impl<(N >> 1)>::template apply<square_type, R> next;
- typedef typename next::type type;
- static BOOST_CONSTEXPR type call(const Y& y, const R& r)
- {
- return(next::call(static_cast<square_type>(y * y), r));
- }
- };
-};
-
-template<long N>
-struct static_int_power_impl<N, false>
-{
- template<class Y, class R>
- struct apply
- {
- typedef typename multiply_typeof_helper<Y, Y>::type square_type;
- typedef typename multiply_typeof_helper<Y, R>::type new_r;
- typedef typename static_int_power_impl<(N >> 1)>::template apply<square_type, new_r> next;
- typedef typename next::type type;
- static BOOST_CONSTEXPR type call(const Y& y, const R& r)
- {
- return(next::call(static_cast<Y>(y * y), y * r));
- }
- };
-};
-
-template<>
-struct static_int_power_impl<1, false>
-{
- template<class Y, class R>
- struct apply
- {
- typedef typename multiply_typeof_helper<Y, R>::type type;
- static BOOST_CONSTEXPR type call(const Y& y, const R& r)
- {
- return(y * r);
- }
- };
-};
-
-template<>
-struct static_int_power_impl<0, true>
-{
- template<class Y, class R>
- struct apply
- {
- typedef R type;
- static BOOST_CONSTEXPR R call(const Y&, const R& r)
- {
- return(r);
- }
- };
-};
-
-template<int N, bool = (N < 0)>
-struct static_int_power_sign_impl;
-
-template<int N>
-struct static_int_power_sign_impl<N, false>
-{
- template<class Y>
- struct apply
- {
- typedef typename static_int_power_impl<N>::template apply<Y, one> impl;
- typedef typename impl::type type;
- static BOOST_CONSTEXPR type call(const Y& y)
- {
- return(impl::call(y, one()));
- }
- };
-};
-
-template<int N>
-struct static_int_power_sign_impl<N, true>
-{
- template<class Y>
- struct apply
- {
- typedef typename static_int_power_impl<-N>::template apply<Y, one> impl;
- typedef typename divide_typeof_helper<one, typename impl::type>::type type;
- static BOOST_CONSTEXPR type call(const Y& y)
- {
- return(one()/impl::call(y, one()));
- }
- };
-};
-
-template<long N, class Y>
-struct static_rational_power_impl<static_rational<N, 1>, Y>
-{
- typedef typename static_int_power_sign_impl<N>::template apply<Y> impl;
- typedef typename impl::type type;
- static BOOST_CONSTEXPR type call(const Y& y)
- {
- return(impl::call(y));
- }
-};
-
-template<class R, class Y>
-BOOST_CONSTEXPR
-typename detail::static_rational_power_impl<R, Y>::type static_rational_power(const Y& y)
-{
- return(detail::static_rational_power_impl<R, Y>::call(y));
-}
-
-} // namespace detail
-
-} // namespace units
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/detail/unscale.hpp b/contrib/restricted/boost/boost/units/detail/unscale.hpp
deleted file mode 100644
index e221756b11..0000000000
--- a/contrib/restricted/boost/boost/units/detail/unscale.hpp
+++ /dev/null
@@ -1,249 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DETAIL_UNSCALE_HPP_INCLUDED
-#define BOOST_UNITS_DETAIL_UNSCALE_HPP_INCLUDED
-
-#include <string>
-
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/size.hpp>
-#include <boost/mpl/begin.hpp>
-#include <boost/mpl/next.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/mpl/plus.hpp>
-#include <boost/mpl/times.hpp>
-#include <boost/mpl/negate.hpp>
-#include <boost/mpl/less.hpp>
-
-#include <boost/units/config.hpp>
-#include <boost/units/dimension.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/detail/one.hpp>
-
-namespace boost {
-
-namespace units {
-
-template<class T>
-struct heterogeneous_system;
-
-template<class T, class D, class Scale>
-struct heterogeneous_system_impl;
-
-template<class T, class E>
-struct heterogeneous_system_dim;
-
-template<class S, class Scale>
-struct scaled_base_unit;
-
-/// removes all scaling from a unit or a base unit.
-template<class T>
-struct unscale
-{
-#ifndef BOOST_UNITS_DOXYGEN
- typedef T type;
-#else
- typedef detail::unspecified type;
-#endif
-};
-
-/// INTERNAL ONLY
-template<class S, class Scale>
-struct unscale<scaled_base_unit<S, Scale> >
-{
- typedef typename unscale<S>::type type;
-};
-
-/// INTERNAL ONLY
-template<class D, class S>
-struct unscale<unit<D, S> >
-{
- typedef unit<D, typename unscale<S>::type> type;
-};
-
-/// INTERNAL ONLY
-template<class Scale>
-struct scale_list_dim;
-
-/// INTERNAL ONLY
-template<class T>
-struct get_scale_list
-{
- typedef dimensionless_type type;
-};
-
-/// INTERNAL ONLY
-template<class S, class Scale>
-struct get_scale_list<scaled_base_unit<S, Scale> >
-{
- typedef typename mpl::times<list<scale_list_dim<Scale>, dimensionless_type>, typename get_scale_list<S>::type>::type type;
-};
-
-/// INTERNAL ONLY
-template<class D, class S>
-struct get_scale_list<unit<D, S> >
-{
- typedef typename get_scale_list<S>::type type;
-};
-
-/// INTERNAL ONLY
-struct scale_dim_tag {};
-
-/// INTERNAL ONLY
-template<class Scale>
-struct scale_list_dim : Scale
-{
- typedef scale_dim_tag tag;
- typedef scale_list_dim type;
-};
-
-} // namespace units
-
-#ifndef BOOST_UNITS_DOXYGEN
-
-namespace mpl {
-
-/// INTERNAL ONLY
-template<>
-struct less_impl<boost::units::scale_dim_tag, boost::units::scale_dim_tag>
-{
- template<class T0, class T1>
- struct apply : mpl::bool_<((T0::base) < (T1::base))> {};
-};
-
-}
-
-#endif
-
-namespace units {
-
-namespace detail {
-
-template<class Scale>
-struct is_empty_dim<scale_list_dim<Scale> > : mpl::false_ {};
-
-template<long N>
-struct is_empty_dim<scale_list_dim<scale<N, static_rational<0, 1> > > > : mpl::true_ {};
-
-template<int N>
-struct eval_scale_list_impl
-{
- template<class Begin>
- struct apply
- {
- typedef typename eval_scale_list_impl<N-1>::template apply<typename Begin::next> next_iteration;
- typedef typename multiply_typeof_helper<typename next_iteration::type, typename Begin::item::value_type>::type type;
- static BOOST_CONSTEXPR type value()
- {
- return(next_iteration::value() * Begin::item::value());
- }
- };
-};
-
-template<>
-struct eval_scale_list_impl<0>
-{
- template<class Begin>
- struct apply
- {
- typedef one type;
- static BOOST_CONSTEXPR one value()
- {
- return(one());
- }
- };
-};
-
-}
-
-/// INTERNAL ONLY
-template<class T>
-struct eval_scale_list : detail::eval_scale_list_impl<T::size::value>::template apply<T> {};
-
-} // namespace units
-
-#ifndef BOOST_UNITS_DOXYGEN
-
-namespace mpl {
-
-/// INTERNAL ONLY
-template<>
-struct plus_impl<boost::units::scale_dim_tag, boost::units::scale_dim_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef boost::units::scale_list_dim<
- boost::units::scale<
- (T0::base),
- typename mpl::plus<typename T0::exponent, typename T1::exponent>::type
- >
- > type;
- };
-};
-
-/// INTERNAL ONLY
-template<>
-struct negate_impl<boost::units::scale_dim_tag>
-{
- template<class T0>
- struct apply
- {
- typedef boost::units::scale_list_dim<
- boost::units::scale<
- (T0::base),
- typename mpl::negate<typename T0::exponent>::type
- >
- > type;
- };
-};
-
-/// INTERNAL ONLY
-template<>
-struct times_impl<boost::units::scale_dim_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef boost::units::scale_list_dim<
- boost::units::scale<
- (T0::base),
- typename mpl::times<typename T0::exponent, T1>::type
- >
- > type;
- };
-};
-
-/// INTERNAL ONLY
-template<>
-struct divides_impl<boost::units::scale_dim_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef boost::units::scale_list_dim<
- boost::units::scale<
- (T0::base),
- typename mpl::divides<typename T0::exponent, T1>::type
- >
- > type;
- };
-};
-
-} // namespace mpl
-
-#endif
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/detail/utility.hpp b/contrib/restricted/boost/boost/units/detail/utility.hpp
deleted file mode 100644
index 1ffa3dc21a..0000000000
--- a/contrib/restricted/boost/boost/units/detail/utility.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_UTILITY_HPP
-#define BOOST_UNITS_UTILITY_HPP
-
-#include <typeinfo>
-#include <string>
-#include <boost/core/demangle.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-inline
-std::string
-demangle(const char* name)
-{
- std::string demangled = core::demangle(name);
-
- const std::string::size_type prefix_len = sizeof("boost::units::") - 1;
- std::string::size_type i = 0;
- for (;;)
- {
- std::string::size_type pos = demangled.find("boost::units::", i, prefix_len);
- if (pos == std::string::npos)
- break;
-
- demangled.erase(pos, prefix_len);
- i = pos;
- }
-
- return demangled;
-}
-
-} // namespace detail
-
-template<class L>
-inline std::string simplify_typename(const L& /*source*/)
-{
- return detail::demangle(typeid(L).name());
-}
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_UTILITY_HPP
diff --git a/contrib/restricted/boost/boost/units/dim.hpp b/contrib/restricted/boost/boost/units/dim.hpp
deleted file mode 100644
index eb2813139e..0000000000
--- a/contrib/restricted/boost/boost/units/dim.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DIM_HPP
-#define BOOST_UNITS_DIM_HPP
-
-#include <boost/static_assert.hpp>
-
-#include <boost/type_traits/is_same.hpp>
-
-#include <boost/mpl/arithmetic.hpp>
-
-#include <boost/units/config.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/detail/dim_impl.hpp>
-
-/// \file dim.hpp
-/// \brief Handling of fundamental dimension/exponent pairs.
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-struct dim_tag { };
-
-}
-
-/// \brief Dimension tag/exponent pair for a single fundamental dimension.
-///
-/// \details
-/// The dim class represents a single dimension tag/dimension exponent pair.
-/// That is, @c dim<tag_type,value_type> is a pair where @c tag_type represents the
-/// fundamental dimension being represented and @c value_type represents the
-/// exponent of that fundamental dimension as a @c static_rational. @c tag_type must
-/// be a derived from a specialization of @c base_dimension.
-/// Specialization of the following Boost.MPL metafunctions are provided
-///
-/// - @c mpl::plus for two @c dims
-/// - @c mpl::minus for two @c dims
-/// - @c mpl::negate for a @c dim
-///
-/// These metafunctions all operate on the exponent, and require
-/// that the @c dim operands have the same base dimension tag.
-/// In addition, multiplication and division by @c static_rational
-/// is supported.
-///
-/// - @c mpl::times for a @c static_rational and a @c dim in either order
-/// - @c mpl::divides for a @c static_rational and a @c dim in either order
-///
-/// These metafunctions likewise operate on the exponent only.
-template<typename T,typename V>
-struct dim
-{
- typedef dim type;
- typedef detail::dim_tag tag;
- typedef T tag_type;
- typedef V value_type;
-};
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::dim, 2)
-
-#endif
-
-#ifndef BOOST_UNITS_DOXYGEN
-
-namespace boost {
-
-namespace mpl {
-
-// define MPL operators acting on dim<T,V>
-
-template<>
-struct plus_impl<boost::units::detail::dim_tag,boost::units::detail::dim_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- BOOST_STATIC_ASSERT((boost::is_same<typename T0::tag_type,typename T1::tag_type>::value == true));
- typedef boost::units::dim<typename T0::tag_type, typename mpl::plus<typename T0::value_type, typename T1::value_type>::type> type;
- };
-};
-
-template<>
-struct minus_impl<boost::units::detail::dim_tag,boost::units::detail::dim_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- BOOST_STATIC_ASSERT((boost::is_same<typename T0::tag_type,typename T1::tag_type>::value == true));
- typedef boost::units::dim<typename T0::tag_type, typename mpl::minus<typename T0::value_type, typename T1::value_type>::type> type;
- };
-};
-
-template<>
-struct times_impl<boost::units::detail::dim_tag,boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef boost::units::dim<typename T0::tag_type, typename mpl::times<typename T0::value_type, T1>::type> type;
- };
-};
-
-template<>
-struct times_impl<boost::units::detail::static_rational_tag,boost::units::detail::dim_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef boost::units::dim<typename T1::tag_type, typename mpl::times<T0, typename T1::value_type>::type> type;
- };
-};
-
-template<>
-struct divides_impl<boost::units::detail::dim_tag,boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef boost::units::dim<typename T0::tag_type, typename mpl::divides<typename T0::value_type, T1>::type> type;
- };
-};
-
-template<>
-struct divides_impl<boost::units::detail::static_rational_tag,boost::units::detail::dim_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef boost::units::dim<typename T1::tag_type, typename mpl::divides<T0, typename T1::value_type>::type> type;
- };
-};
-
-template<>
-struct negate_impl<boost::units::detail::dim_tag>
-{
- template<class T0>
- struct apply
- {
- typedef boost::units::dim<typename T0::tag_type,typename mpl::negate<typename T0::value_type>::type> type;
- };
-};
-
-} // namespace mpl
-
-} // namespace boost
-
-#endif
-
-#endif // BOOST_UNITS_DIM_HPP
diff --git a/contrib/restricted/boost/boost/units/dimension.hpp b/contrib/restricted/boost/boost/units/dimension.hpp
deleted file mode 100644
index 90334a17df..0000000000
--- a/contrib/restricted/boost/boost/units/dimension.hpp
+++ /dev/null
@@ -1,150 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DIMENSION_HPP
-#define BOOST_UNITS_DIMENSION_HPP
-
-#include <boost/static_assert.hpp>
-
-#include <boost/type_traits/is_same.hpp>
-
-#include <boost/mpl/arithmetic.hpp>
-
-#include <boost/units/static_rational.hpp>
-#include <boost/units/detail/dimension_list.hpp>
-#include <boost/units/detail/dimension_impl.hpp>
-
-/// \file
-/// \brief Core metaprogramming utilities for compile-time dimensional analysis.
-
-namespace boost {
-
-namespace units {
-
-/// Reduce dimension list to cardinal form. This algorithm collapses duplicate
-/// base dimension tags and sorts the resulting list by the tag ordinal value.
-/// Dimension lists that resolve to the same dimension are guaranteed to be
-/// represented by an identical type.
-///
-/// The argument should be an MPL forward sequence containing instances
-/// of the @c dim template.
-///
-/// The result is also an MPL forward sequence. It also supports the
-/// following metafunctions to allow use as a dimension.
-///
-/// - @c mpl::plus is defined only on two equal dimensions and returns the argument unchanged.
-/// - @c mpl::minus is defined only for two equal dimensions and returns the argument unchanged.
-/// - @c mpl::negate will return its argument unchanged.
-/// - @c mpl::times is defined for any dimensions and adds corresponding exponents.
-/// - @c mpl::divides is defined for any dimensions and subtracts the exponents of the
-/// right had argument from the corresponding exponents of the left had argument.
-/// Missing base dimension tags are assumed to have an exponent of zero.
-/// - @c static_power takes a dimension and a static_rational and multiplies all
-/// the exponents of the dimension by the static_rational.
-/// - @c static_root takes a dimension and a static_rational and divides all
-/// the exponents of the dimension by the static_rational.
-template<typename Seq>
-struct make_dimension_list
-{
- typedef typename detail::sort_dims<Seq>::type type;
-};
-
-/// Raise a dimension list to a scalar power.
-template<typename DL,typename Ex>
-struct static_power
-{
- typedef typename detail::static_power_impl<DL::size::value>::template apply<
- DL,
- Ex
- >::type type;
-};
-
-/// Take a scalar root of a dimension list.
-template<typename DL,typename Rt>
-struct static_root
-{
- typedef typename detail::static_root_impl<DL::size::value>::template apply<
- DL,
- Rt
- >::type type;
-};
-
-} // namespace units
-
-#ifndef BOOST_UNITS_DOXYGEN
-
-namespace mpl {
-
-template<>
-struct plus_impl<boost::units::detail::dimension_list_tag,boost::units::detail::dimension_list_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- BOOST_STATIC_ASSERT((boost::is_same<T0,T1>::value == true));
- typedef T0 type;
- };
-};
-
-template<>
-struct minus_impl<boost::units::detail::dimension_list_tag,boost::units::detail::dimension_list_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- BOOST_STATIC_ASSERT((boost::is_same<T0,T1>::value == true));
- typedef T0 type;
- };
-};
-
-template<>
-struct times_impl<boost::units::detail::dimension_list_tag,boost::units::detail::dimension_list_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef typename boost::units::detail::merge_dimensions<T0,T1>::type type;
- };
-};
-
-template<>
-struct divides_impl<boost::units::detail::dimension_list_tag,boost::units::detail::dimension_list_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef typename boost::units::detail::merge_dimensions<
- T0,
- typename boost::units::detail::static_inverse_impl<
- T1::size::value
- >::template apply<
- T1
- >::type
- >::type type;
- };
-};
-
-template<>
-struct negate_impl<boost::units::detail::dimension_list_tag>
-{
- template<class T0>
- struct apply
- {
- typedef T0 type;
- };
-};
-
-} // namespace mpl
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_UNITS_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/dimensionless_quantity.hpp b/contrib/restricted/boost/boost/units/dimensionless_quantity.hpp
deleted file mode 100644
index 7ac6bfb97b..0000000000
--- a/contrib/restricted/boost/boost/units/dimensionless_quantity.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DIMENSIONLESS_QUANTITY_HPP
-#define BOOST_UNITS_DIMENSIONLESS_QUANTITY_HPP
-
-///
-/// \file
-/// \brief Utility class to simplify construction of dimensionless quantities.
-///
-
-#include <boost/units/dimensionless_unit.hpp>
-#include <boost/units/quantity.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// Utility class to simplify construction of dimensionless quantities.
-template<class System,class Y>
-struct dimensionless_quantity
-{
- typedef quantity<typename dimensionless_unit<System>::type,Y> type;
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_DIMENSIONLESS_QUANTITY_HPP
diff --git a/contrib/restricted/boost/boost/units/dimensionless_type.hpp b/contrib/restricted/boost/boost/units/dimensionless_type.hpp
deleted file mode 100644
index c8dae9f7c0..0000000000
--- a/contrib/restricted/boost/boost/units/dimensionless_type.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DIMENSIONLESS_TYPE_HPP
-#define BOOST_UNITS_DIMENSIONLESS_TYPE_HPP
-
-///
-/// \file
-/// \brief Dimension lists in which all exponents resolve to zero reduce to @c dimensionless_type.
-///
-
-#include <boost/mpl/long.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/mpl/arithmetic.hpp>
-
-#include <boost/units/config.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-struct dimension_list_tag;
-
-}
-
-/// Dimension lists in which all exponents resolve to zero reduce to @c dimensionless_type.
-struct dimensionless_type
-{
- typedef dimensionless_type type;
- typedef detail::dimension_list_tag tag;
- typedef mpl::long_<0> size;
-};
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::dimensionless_type)
-
-#endif
-
-#endif // BOOST_UNITS_DIMENSIONLESS_TYPE_HPP
diff --git a/contrib/restricted/boost/boost/units/dimensionless_unit.hpp b/contrib/restricted/boost/boost/units/dimensionless_unit.hpp
deleted file mode 100644
index 8e6368f8a5..0000000000
--- a/contrib/restricted/boost/boost/units/dimensionless_unit.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DIMENSIONLESS_UNIT_HPP
-#define BOOST_UNITS_DIMENSIONLESS_UNIT_HPP
-
-///
-/// \file
-/// \brief Utility class to simplify construction of dimensionless units in a system.
-///
-
-#include <boost/units/dimensionless_type.hpp>
-#include <boost/units/unit.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// Utility class to simplify construction of dimensionless units in a system.
-template<class System>
-struct dimensionless_unit
-{
- typedef unit<dimensionless_type,System> type;
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_DIMENSIONLESS_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/get_dimension.hpp b/contrib/restricted/boost/boost/units/get_dimension.hpp
deleted file mode 100644
index c0a7ab916c..0000000000
--- a/contrib/restricted/boost/boost/units/get_dimension.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_GET_DIMENSION_HPP
-#define BOOST_UNITS_GET_DIMENSION_HPP
-
-///
-/// \file
-/// \brief Get the dimension of a unit, absolute unit and quantity.
-/// \details
-///
-
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-template<class T>
-struct get_dimension {};
-
-/// Get the dimension of a unit.
-template<class Dim,class System>
-struct get_dimension< unit<Dim,System> >
-{
- typedef Dim type;
-};
-
-/// Get the dimension of an absolute unit.
-template<class Unit>
-struct get_dimension< absolute<Unit> >
-{
- typedef typename get_dimension<Unit>::type type;
-};
-
-/// Get the dimension of a quantity.
-template<class Unit,class Y>
-struct get_dimension< quantity<Unit,Y> >
-{
- typedef typename get_dimension<Unit>::type type;
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_GET_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/get_system.hpp b/contrib/restricted/boost/boost/units/get_system.hpp
deleted file mode 100644
index ce4e59f951..0000000000
--- a/contrib/restricted/boost/boost/units/get_system.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_GET_SYSTEM_HPP
-#define BOOST_UNITS_GET_SYSTEM_HPP
-
-/// \file
-/// \brief Get the system of a unit, absolute unit or quantity.
-
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-template<class T>
-struct get_system {};
-
-/// Get the system of a unit.
-template<class Dim,class System>
-struct get_system< unit<Dim,System> >
-{
- typedef System type;
-};
-
-/// Get the system of an absolute unit.
-template<class Unit>
-struct get_system< absolute<Unit> >
-{
- typedef typename get_system<Unit>::type type;
-};
-
-/// Get the system of a quantity.
-template<class Unit,class Y>
-struct get_system< quantity<Unit,Y> >
-{
- typedef typename get_system<Unit>::type type;
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_GET_SYSTEM_HPP
diff --git a/contrib/restricted/boost/boost/units/heterogeneous_system.hpp b/contrib/restricted/boost/boost/units/heterogeneous_system.hpp
deleted file mode 100644
index 966797aa24..0000000000
--- a/contrib/restricted/boost/boost/units/heterogeneous_system.hpp
+++ /dev/null
@@ -1,428 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_HETEROGENEOUS_SYSTEM_HPP
-#define BOOST_UNITS_HETEROGENEOUS_SYSTEM_HPP
-
-/// \file
-/// \brief A heterogeneous system is a sorted list of base unit/exponent pairs.
-
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/plus.hpp>
-#include <boost/mpl/times.hpp>
-#include <boost/mpl/divides.hpp>
-#include <boost/mpl/negate.hpp>
-#include <boost/mpl/less.hpp>
-#include <boost/mpl/size.hpp>
-#include <boost/mpl/begin.hpp>
-#include <boost/mpl/next.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/mpl/front.hpp>
-#include <boost/mpl/push_front.hpp>
-#include <boost/mpl/pop_front.hpp>
-#include <boost/mpl/assert.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-#include <boost/units/config.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/dimension.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/detail/push_front_if.hpp>
-#include <boost/units/detail/push_front_or_add.hpp>
-#include <boost/units/detail/linear_algebra.hpp>
-#include <boost/units/detail/unscale.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-// A normal system is a sorted list of base units.
-// A heterogeneous system is a sorted list of base unit/exponent pairs.
-// As long as we don't need to convert heterogeneous systems
-// directly everything is cool.
-
-template<class T>
-struct is_zero : mpl::false_ {};
-
-template<>
-struct is_zero<static_rational<0> > : mpl::true_ {};
-
-} // namespace detail
-
-/// INTERNAL ONLY
-template<class L, class Dimensions, class Scale>
-struct heterogeneous_system_impl
-{
- typedef L type;
- typedef Dimensions dimensions;
- typedef Scale scale;
-};
-
-/// INTERNAL ONLY
-typedef dimensionless_type no_scale;
-
-/// A system that can represent any possible combination
-/// of units at the expense of not preserving information
-/// about how it was created. Do not create specializations
-/// of this template directly. Instead use @c reduce_unit and
-/// @c base_unit<...>::unit_type.
-template<class T>
-struct heterogeneous_system : T {};
-
-/// INTERNAL ONLY
-struct heterogeneous_system_dim_tag {};
-
-/// INTERNAL ONLY
-template<class Unit, class Exponent>
-struct heterogeneous_system_dim
-{
- typedef heterogeneous_system_dim_tag tag;
- typedef heterogeneous_system_dim type;
- typedef Unit tag_type;
- typedef Exponent value_type;
-};
-
-/// INTERNAL ONLY
-#define BOOST_UNITS_MAKE_HETEROGENEOUS_UNIT(BaseUnit, Dimensions) \
- boost::units::unit< \
- Dimensions, \
- boost::units::heterogeneous_system< \
- boost::units::heterogeneous_system_impl< \
- boost::units::list< \
- boost::units::heterogeneous_system_dim< \
- BaseUnit, \
- boost::units::static_rational<1> \
- >, \
- boost::units::dimensionless_type \
- >, \
- Dimensions, \
- boost::units::no_scale \
- > \
- > \
- >
-
-} // namespace units
-
-} // namespace boost
-
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::heterogeneous_system_impl, (class)(class)(class))
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::heterogeneous_system, (class))
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::heterogeneous_system_dim, (class)(class))
-
-#endif
-
-namespace boost {
-
-namespace mpl {
-
-/// INTERNAL ONLY
-template<>
-struct less_impl<boost::units::heterogeneous_system_dim_tag, boost::units::heterogeneous_system_dim_tag>
-{
- template<class T0, class T1>
- struct apply : mpl::less<typename T0::tag_type, typename T1::tag_type> {};
-};
-
-}
-
-namespace units {
-
-namespace detail {
-
-template<class Unit1, class Exponent1>
-struct is_empty_dim<heterogeneous_system_dim<Unit1,Exponent1> > : detail::is_zero<Exponent1> {};
-
-} // namespace detail
-
-} // namespace units
-
-namespace mpl {
-
-/// INTERNAL ONLY
-template<>
-struct plus_impl<boost::units::heterogeneous_system_dim_tag, boost::units::heterogeneous_system_dim_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef boost::units::heterogeneous_system_dim<
- typename T0::tag_type,
- typename mpl::plus<typename T0::value_type,typename T1::value_type>::type
- > type;
- };
-};
-
-/// INTERNAL ONLY
-template<>
-struct times_impl<boost::units::heterogeneous_system_dim_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef boost::units::heterogeneous_system_dim<
- typename T0::tag_type,
- typename mpl::times<typename T0::value_type,T1>::type
- > type;
- };
-};
-
-/// INTERNAL ONLY
-template<>
-struct divides_impl<boost::units::heterogeneous_system_dim_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef boost::units::heterogeneous_system_dim<
- typename T0::tag_type,
- typename mpl::divides<typename T0::value_type,T1>::type
- > type;
- };
-};
-
-/// INTERNAL ONLY
-template<>
-struct negate_impl<boost::units::heterogeneous_system_dim_tag>
-{
- template<class T>
- struct apply
- {
- typedef boost::units::heterogeneous_system_dim<typename T::tag_type, typename mpl::negate<typename T::value_type>::type> type;
- };
-};
-
-} // namespace mpl
-
-namespace units {
-
-namespace detail {
-
-template<int N>
-struct make_heterogeneous_system_impl
-{
- template<class UnitsBegin, class ExponentsBegin>
- struct apply
- {
- typedef typename push_front_if<!(is_zero<typename ExponentsBegin::item>::value)>::template apply<
- typename make_heterogeneous_system_impl<N-1>::template apply<
- typename UnitsBegin::next,
- typename ExponentsBegin::next
- >::type,
- heterogeneous_system_dim<typename UnitsBegin::item, typename ExponentsBegin::item>
- >::type type;
- };
-};
-
-template<>
-struct make_heterogeneous_system_impl<0>
-{
- template<class UnitsBegin, class ExponentsBegin>
- struct apply
- {
- typedef dimensionless_type type;
- };
-};
-
-template<class Dimensions, class System>
-struct make_heterogeneous_system
-{
- typedef typename calculate_base_unit_exponents<typename System::type, Dimensions>::type exponents;
- BOOST_MPL_ASSERT_MSG((!boost::is_same<exponents, inconsistent>::value), the_specified_dimension_is_not_representible_in_the_given_system, (types<Dimensions, System>));
- typedef typename make_heterogeneous_system_impl<System::type::size::value>::template apply<
- typename System::type,
- exponents
- >::type unit_list;
- typedef heterogeneous_system<heterogeneous_system_impl<unit_list, Dimensions, no_scale> > type;
-};
-
-template<class Dimensions, class T>
-struct make_heterogeneous_system<Dimensions, heterogeneous_system<T> >
-{
- typedef heterogeneous_system<T> type;
-};
-
-template<class T0, class T1>
-struct multiply_systems
-{
- typedef heterogeneous_system<
- heterogeneous_system_impl<
- typename mpl::times<typename T0::type, typename T1::type>::type,
- typename mpl::times<typename T0::dimensions, typename T1::dimensions>::type,
- typename mpl::times<typename T0::scale, typename T1::scale>::type
- >
- > type;
-};
-
-template<class T0, class T1>
-struct divide_systems
-{
- typedef heterogeneous_system<
- heterogeneous_system_impl<
- typename mpl::divides<typename T0::type, typename T1::type>::type,
- typename mpl::divides<typename T0::dimensions, typename T1::dimensions>::type,
- typename mpl::divides<typename T0::scale, typename T1::scale>::type
- >
- > type;
-};
-
-} // namespace detail
-
-/// INTERNAL ONLY
-template<class S, long N, long D>
-struct static_power<heterogeneous_system<S>, static_rational<N,D> >
-{
- typedef heterogeneous_system<
- heterogeneous_system_impl<
- typename static_power<typename S::type, static_rational<N,D> >::type,
- typename static_power<typename S::dimensions, static_rational<N,D> >::type,
- typename static_power<typename S::scale, static_rational<N,D> >::type
- >
- > type;
-};
-
-/// INTERNAL ONLY
-template<class S, long N, long D>
-struct static_root<heterogeneous_system<S>, static_rational<N,D> >
-{
- typedef heterogeneous_system<
- heterogeneous_system_impl<
- typename static_root<typename S::type, static_rational<N,D> >::type,
- typename static_root<typename S::dimensions, static_rational<N,D> >::type,
- typename static_root<typename S::scale, static_rational<N,D> >::type
- >
- > type;
-};
-
-namespace detail {
-
-template<int N>
-struct unscale_heterogeneous_system_impl
-{
- template<class Begin>
- struct apply
- {
- typedef typename push_front_or_add<
- typename unscale_heterogeneous_system_impl<N-1>::template apply<
- typename Begin::next
- >::type,
- typename unscale<typename Begin::item>::type
- >::type type;
- };
-};
-
-template<>
-struct unscale_heterogeneous_system_impl<0>
-{
- template<class Begin>
- struct apply
- {
- typedef dimensionless_type type;
- };
-};
-
-} // namespace detail
-
-/// Unscale all the base units. e.g
-/// km s -> m s
-/// cm km -> m^2
-/// INTERNAL ONLY
-template<class T>
-struct unscale<heterogeneous_system<T> >
-{
- typedef heterogeneous_system<
- heterogeneous_system_impl<
- typename detail::unscale_heterogeneous_system_impl<
- T::type::size::value
- >::template apply<
- typename T::type
- >::type,
- typename T::dimensions,
- no_scale
- >
- > type;
-};
-
-/// INTERNAL ONLY
-template<class Unit, class Exponent>
-struct unscale<heterogeneous_system_dim<Unit, Exponent> >
-{
- typedef heterogeneous_system_dim<typename unscale<Unit>::type, Exponent> type;
-};
-
-namespace detail {
-
-template<int N>
-struct get_scale_list_of_heterogeneous_system_impl
-{
- template<class Begin>
- struct apply
- {
- typedef typename mpl::times<
- typename get_scale_list_of_heterogeneous_system_impl<N-1>::template apply<
- typename Begin::next
- >::type,
- typename get_scale_list<typename Begin::item>::type
- >::type type;
- };
-};
-
-template<>
-struct get_scale_list_of_heterogeneous_system_impl<0>
-{
- template<class Begin>
- struct apply
- {
- typedef dimensionless_type type;
- };
-};
-
-} // namespace detail
-
-/// INTERNAL ONLY
-template<class T>
-struct get_scale_list<heterogeneous_system<T> >
-{
- typedef typename mpl::times<
- typename detail::get_scale_list_of_heterogeneous_system_impl<
- T::type::size::value
- >::template apply<typename T::type>::type,
- typename T::scale
- >::type type;
-};
-
-/// INTERNAL ONLY
-template<class Unit, class Exponent>
-struct get_scale_list<heterogeneous_system_dim<Unit, Exponent> >
-{
- typedef typename static_power<typename get_scale_list<Unit>::type, Exponent>::type type;
-};
-
-namespace detail {
-
-template<class System, class Dimension>
-struct check_system : mpl::false_ {};
-
-template<class System, class Dimension, class Scale>
-struct check_system<heterogeneous_system<heterogeneous_system_impl<System, Dimension, Scale> >, Dimension> : mpl::true_ {};
-
-} // namespace detail
-
-} // namespace units
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/homogeneous_system.hpp b/contrib/restricted/boost/boost/units/homogeneous_system.hpp
deleted file mode 100644
index aa3b056891..0000000000
--- a/contrib/restricted/boost/boost/units/homogeneous_system.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_HOMOGENEOUS_SYSTEM_HPP_INCLUDED
-#define BOOST_UNITS_HOMOGENEOUS_SYSTEM_HPP_INCLUDED
-
-#include <boost/mpl/bool.hpp>
-
-#include <boost/units/config.hpp>
-#include <boost/units/static_rational.hpp>
-
-#ifdef BOOST_UNITS_CHECK_HOMOGENEOUS_UNITS
-
-#include <boost/type_traits/is_same.hpp>
-#include <boost/mpl/not.hpp>
-
-#include <boost/units/detail/linear_algebra.hpp>
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-/// A system that can uniquely represent any unit
-/// which can be composed from a linearly independent set
-/// of base units. It is safe to rebind a unit with
-/// such a system to different dimensions.
-///
-/// Do not construct this template directly. Use
-/// make_system instead.
-template<class L>
-struct homogeneous_system {
- /// INTERNAL ONLY
- typedef L type;
-};
-
-template<class T, class E>
-struct static_power;
-
-template<class T, class R>
-struct static_root;
-
-/// INTERNAL ONLY
-template<class L, long N, long D>
-struct static_power<homogeneous_system<L>, static_rational<N,D> >
-{
- typedef homogeneous_system<L> type;
-};
-
-/// INTERNAL ONLY
-template<class L, long N, long D>
-struct static_root<homogeneous_system<L>, static_rational<N,D> >
-{
- typedef homogeneous_system<L> type;
-};
-
-namespace detail {
-
-template<class System, class Dimensions>
-struct check_system;
-
-#ifdef BOOST_UNITS_CHECK_HOMOGENEOUS_UNITS
-
-template<class L, class Dimensions>
-struct check_system<homogeneous_system<L>, Dimensions> :
- boost::mpl::not_<
- boost::is_same<
- typename calculate_base_unit_exponents<
- L,
- Dimensions
- >::type,
- inconsistent
- >
- > {};
-
-#else
-
-template<class L, class Dimensions>
-struct check_system<homogeneous_system<L>, Dimensions> : mpl::true_ {};
-
-#endif
-
-} // namespace detail
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::homogeneous_system, (class))
-
-#endif
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/io.hpp b/contrib/restricted/boost/boost/units/io.hpp
deleted file mode 100644
index 346eb720af..0000000000
--- a/contrib/restricted/boost/boost/units/io.hpp
+++ /dev/null
@@ -1,1080 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2010 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IO_HPP
-#define BOOST_UNITS_IO_HPP
-
-#if defined(__GNUC__)
- #pragma GCC system_header
-#endif
-
-/// \file
-/// \brief Stream input and output for rationals, units and quantities.
-/// \details Functions and manipulators for output and input of units and quantities.
-/// symbol and name format, and engineering and binary autoprefix.
-/// Serialization output is also supported.
-
-#include <cassert>
-#include <cmath>
-#include <string>
-#include <iosfwd>
-#include <ios>
-#include <sstream>
-
-#include <boost/assert.hpp>
-#include <boost/serialization/nvp.hpp>
-
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/heterogeneous_system.hpp>
-#include <boost/units/make_scaled_unit.hpp>
-#include <boost/units/quantity.hpp>
-#include <boost/units/scale.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/unit.hpp>
-#include <boost/units/detail/utility.hpp>
-
-namespace boost {
-
-namespace serialization {
-
-/// Boost Serialization library support for units.
-template<class Archive,class System,class Dim>
-inline void serialize(Archive& /*ar*/,boost::units::unit<Dim,System>&,const unsigned int /*version*/)
-{ }
-
-/// Boost Serialization library support for quantities.
-template<class Archive,class Unit,class Y>
-inline void serialize(Archive& ar,boost::units::quantity<Unit,Y>& q,const unsigned int /*version*/)
-{
- ar & boost::serialization::make_nvp("value", units::quantity_cast<Y&>(q));
-}
-
-} // namespace serialization
-
-namespace units {
-
-// get string representation of arbitrary type.
-template<class T> std::string to_string(const T& t)
-{
- std::stringstream sstr;
-
- sstr << t;
-
- return sstr.str();
-}
-
-/// get string representation of integral-valued @c static_rational.
-template<integer_type N> std::string to_string(const static_rational<N>&)
-{
- return to_string(N);
-}
-
-/// get string representation of @c static_rational.
-template<integer_type N, integer_type D> std::string to_string(const static_rational<N,D>&)
-{
- return '(' + to_string(N) + '/' + to_string(D) + ')';
-}
-
-/// Write @c static_rational to @c std::basic_ostream.
-template<class Char, class Traits, integer_type N, integer_type D>
-inline std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os,const static_rational<N,D>& r)
-{
- os << to_string(r);
- return os;
-}
-
-/// traits template for unit names.
-template<class BaseUnit>
-struct base_unit_info
-{
- /// INTERNAL ONLY
- typedef void base_unit_info_primary_template;
- /// The full name of the unit (returns BaseUnit::name() by default)
- static std::string name()
- {
- return(BaseUnit::name());
- }
- /// The symbol for the base unit (Returns BaseUnit::symbol() by default)
- static std::string symbol()
- {
- return(BaseUnit::symbol()); /// \returns BaseUnit::symbol(), for example "m"
- }
-};
-
-/// \enum format_mode format of output of units, for example "m" or "meter".
-enum format_mode
-{
- symbol_fmt = 0, /// default - reduces unit names to known symbols for both base and derived units.
- name_fmt = 1, /// output full unit names for base and derived units, for example "meter".
- raw_fmt = 2, /// output only symbols for base units (but not derived units), for example "m".
- typename_fmt = 3, /// output demangled typenames (useful only for diagnosis).
- fmt_mask = 3 /// Bits used for format.
-};
-
-/// \enum autoprefix_mode automatic scaling and prefix (controlled by value of quantity) a, if any,
-enum autoprefix_mode
-{
- autoprefix_none = 0, /// No automatic prefix.
- autoprefix_engineering = 4, /// Scale and prefix with 10^3 multiples, 1234.5 m output as 1.2345 km.
- autoprefix_binary = 8, /// Scale and prefix with 2^10 (1024) multiples, 1024 as 1 kb.
- autoprefix_mask = 12 /// Bits used for autoprefix.
-};
-
-namespace detail {
-
-template<bool>
-struct xalloc_key_holder
-{
- static int value;
- static bool initialized;
-};
-
-template<bool b>
-int xalloc_key_holder<b>::value = 0;
-
-template<bool b>
-bool xalloc_key_holder<b>::initialized = 0;
-
-struct xalloc_key_initializer_t
-{
- xalloc_key_initializer_t()
- {
- if (!xalloc_key_holder<true>::initialized)
- {
- xalloc_key_holder<true>::value = std::ios_base::xalloc();
- xalloc_key_holder<true>::initialized = true;
- }
- }
-};
-
-namespace /**/ {
-
-xalloc_key_initializer_t xalloc_key_initializer;
-
-} // namespace
-
-} // namespace detail
-
-/// returns flags controlling output.
-inline long get_flags(std::ios_base& ios, long mask)
-{
- return(ios.iword(detail::xalloc_key_holder<true>::value) & mask);
-}
-
-/// Set new flags controlling output format.
-inline void set_flags(std::ios_base& ios, long new_flags, long mask)
-{
- BOOST_ASSERT((~mask & new_flags) == 0);
- long& flags = ios.iword(detail::xalloc_key_holder<true>::value);
- flags = (flags & ~mask) | new_flags;
-}
-
-/// returns flags controlling output format.
-inline format_mode get_format(std::ios_base& ios)
-{
- return(static_cast<format_mode>((get_flags)(ios, fmt_mask)));
-}
-
-/// Set new flags controlling output format.
-inline void set_format(std::ios_base& ios, format_mode new_mode)
-{
- (set_flags)(ios, new_mode, fmt_mask);
-}
-
-/// Set new flags for type_name output format.
-inline std::ios_base& typename_format(std::ios_base& ios)
-{
- (set_format)(ios, typename_fmt);
- return(ios);
-}
-
-/// set new flag for raw format output, for example "m".
-inline std::ios_base& raw_format(std::ios_base& ios)
-{
- (set_format)(ios, raw_fmt);
- return(ios);
-}
-
-/// set new format flag for symbol output, for example "m".
-inline std::ios_base& symbol_format(std::ios_base& ios)
-{
- (set_format)(ios, symbol_fmt);
- return(ios);
-}
-
-/// set new format for name output, for example "meter".
-inline std::ios_base& name_format(std::ios_base& ios)
-{
- (set_format)(ios, name_fmt);
- return(ios);
-}
-
-/// get autoprefix flags for output.
-inline autoprefix_mode get_autoprefix(std::ios_base& ios)
-{
- return static_cast<autoprefix_mode>((get_flags)(ios, autoprefix_mask));
-}
-
-/// Get format for output.
-inline void set_autoprefix(std::ios_base& ios, autoprefix_mode new_mode)
-{
- (set_flags)(ios, new_mode, autoprefix_mask);
-}
-
-/// Clear autoprefix flags.
-inline std::ios_base& no_prefix(std::ios_base& ios)
-{
- (set_autoprefix)(ios, autoprefix_none);
- return ios;
-}
-
-/// Set flag for engineering prefix, so 1234.5 m displays as "1.2345 km".
-inline std::ios_base& engineering_prefix(std::ios_base& ios)
-{
- (set_autoprefix)(ios, autoprefix_engineering);
- return ios;
-}
-
-/// Set flag for binary prefix, so 1024 byte displays as "1 Kib".
-inline std::ios_base& binary_prefix(std::ios_base& ios)
-{
- (set_autoprefix)(ios, autoprefix_binary);
- return ios;
-}
-
-namespace detail {
-
-/// \return exponent string like "^1/2".
-template<integer_type N, integer_type D>
-inline std::string exponent_string(const static_rational<N,D>& r)
-{
- return '^' + to_string(r);
-}
-
-/// \return empty exponent string for integer rational like 2.
-template<>
-inline std::string exponent_string(const static_rational<1>&)
-{
- return "";
-}
-
-template<class T>
-inline std::string base_unit_symbol_string(const T&)
-{
- return base_unit_info<typename T::tag_type>::symbol() + exponent_string(typename T::value_type());
-}
-
-template<class T>
-inline std::string base_unit_name_string(const T&)
-{
- return base_unit_info<typename T::tag_type>::name() + exponent_string(typename T::value_type());
-}
-
-// stringify with symbols.
-template<int N>
-struct symbol_string_impl
-{
- template<class Begin>
- struct apply
- {
- typedef typename symbol_string_impl<N-1>::template apply<typename Begin::next> next;
- static void value(std::string& str)
- {
- str += base_unit_symbol_string(typename Begin::item()) + ' ';
- next::value(str);
- }
- };
-};
-
-template<>
-struct symbol_string_impl<1>
-{
- template<class Begin>
- struct apply
- {
- static void value(std::string& str)
- {
- str += base_unit_symbol_string(typename Begin::item());
- }
- };
-};
-
-template<>
-struct symbol_string_impl<0>
-{
- template<class Begin>
- struct apply
- {
- static void value(std::string& str)
- {
- // better shorthand for dimensionless?
- str += "dimensionless";
- }
- };
-};
-
-template<int N>
-struct scale_symbol_string_impl
-{
- template<class Begin>
- struct apply
- {
- static void value(std::string& str)
- {
- str += Begin::item::symbol();
- scale_symbol_string_impl<N - 1>::template apply<typename Begin::next>::value(str);
- }
- };
-};
-
-template<>
-struct scale_symbol_string_impl<0>
-{
- template<class Begin>
- struct apply
- {
- static void value(std::string&) { }
- };
-};
-
-// stringify with names.
-template<int N>
-struct name_string_impl
-{
- template<class Begin>
- struct apply
- {
- typedef typename name_string_impl<N-1>::template apply<typename Begin::next> next;
- static void value(std::string& str)
- {
- str += base_unit_name_string(typename Begin::item()) + ' ';
- next::value(str);
- }
- };
-};
-
-template<>
-struct name_string_impl<1>
-{
- template<class Begin>
- struct apply
- {
- static void value(std::string& str)
- {
- str += base_unit_name_string(typename Begin::item());
- }
- };
-};
-
-template<>
-struct name_string_impl<0>
-{
- template<class Begin>
- struct apply
- {
- static void value(std::string& str)
- {
- str += "dimensionless";
- }
- };
-};
-
-template<int N>
-struct scale_name_string_impl
-{
- template<class Begin>
- struct apply
- {
- static void value(std::string& str)
- {
- str += Begin::item::name();
- scale_name_string_impl<N - 1>::template apply<typename Begin::next>::value(str);
- }
- };
-};
-
-template<>
-struct scale_name_string_impl<0>
-{
- template<class Begin>
- struct apply
- {
- static void value(std::string&) { }
- };
-};
-
-} // namespace detail
-
-namespace detail {
-
-// These two overloads of symbol_string and name_string will
-// will pick up homogeneous_systems. They simply call the
-// appropriate function with a heterogeneous_system.
-template<class Dimension,class System, class SubFormatter>
-inline std::string
-to_string_impl(const unit<Dimension,System>&, SubFormatter f)
-{
- return f(typename reduce_unit<unit<Dimension, System> >::type());
-}
-
-/// INTERNAL ONLY
-// this overload picks up heterogeneous units that are not scaled.
-template<class Dimension,class Units, class Subformatter>
-inline std::string
-to_string_impl(const unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, dimensionless_type> > >&, Subformatter f)
-{
- std::string str;
- f.template append_units_to<Units>(str);
- return(str);
-}
-
-// This overload is a special case for heterogeneous_system which
-// is really unitless
-/// INTERNAL ONLY
-template<class Subformatter>
-inline std::string
-to_string_impl(const unit<dimensionless_type, heterogeneous_system<heterogeneous_system_impl<dimensionless_type, dimensionless_type, dimensionless_type> > >&, Subformatter)
-{
- return("dimensionless");
-}
-
-// this overload deals with heterogeneous_systems which are unitless
-// but scaled.
-/// INTERNAL ONLY
-template<class Scale, class Subformatter>
-inline std::string
-to_string_impl(const unit<dimensionless_type, heterogeneous_system<heterogeneous_system_impl<dimensionless_type, dimensionless_type, Scale> > >&, Subformatter f)
-{
- std::string str;
- f.template append_scale_to<Scale>(str);
- return(str);
-}
-
-// this overload deals with scaled units.
-/// INTERNAL ONLY
-template<class Dimension,class Units,class Scale, class Subformatter>
-inline std::string
-to_string_impl(const unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, Scale> > >&, Subformatter f)
-{
- std::string str;
-
- f.template append_scale_to<Scale>(str);
-
- std::string without_scale = f(unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, dimensionless_type> > >());
-
- if (f.is_default_string(without_scale, unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, dimensionless_type> > >()))
- {
- str += "(";
- str += without_scale;
- str += ")";
- }
- else
- {
- str += without_scale;
- }
-
- return(str);
-}
-
-// This overload catches scaled units that have a single base unit
-// raised to the first power. It causes si::nano * si::meters to not
-// put parentheses around the meters. i.e. nm rather than n(m)
-/// INTERNAL ONLY
-template<class Dimension,class Unit,class Scale, class Subformatter>
-inline std::string
-to_string_impl(const unit<Dimension, heterogeneous_system<heterogeneous_system_impl<list<heterogeneous_system_dim<Unit, static_rational<1> >,dimensionless_type>, Dimension, Scale> > >&, Subformatter f)
-{
- std::string str;
-
- f.template append_scale_to<Scale>(str);
- str += f(unit<Dimension, heterogeneous_system<heterogeneous_system_impl<list<heterogeneous_system_dim<Unit, static_rational<1> >, dimensionless_type>, Dimension, dimensionless_type> > >());
-
- return(str);
-}
-
-// This overload is necessary to disambiguate.
-// it catches units that are unscaled and have a single
-// base unit raised to the first power. It is treated the
-// same as any other unscaled unit.
-/// INTERNAL ONLY
-template<class Dimension,class Unit,class Subformatter>
-inline std::string
-to_string_impl(const unit<Dimension, heterogeneous_system<heterogeneous_system_impl<list<heterogeneous_system_dim<Unit, static_rational<1> >,dimensionless_type>, Dimension, dimensionless_type> > >&, Subformatter f)
-{
- std::string str;
- f.template append_units_to<list<heterogeneous_system_dim<Unit, static_rational<1> >,dimensionless_type> >(str);
- return(str);
-}
-
-// This overload catches scaled units that have a single scaled base unit
-// raised to the first power. It moves that scaling on the base unit
-// to the unit level scaling and recurses. By doing this we make sure that
-// si::milli * si::kilograms will print g rather than mkg.
-//
-// This transformation will not be applied if base_unit_info is specialized
-// for the scaled base unit.
-//
-/// INTERNAL ONLY
-template<class Dimension,class Unit,class UnitScale, class Scale, class Subformatter>
-inline std::string
-to_string_impl(
- const unit<
- Dimension,
- heterogeneous_system<
- heterogeneous_system_impl<
- list<heterogeneous_system_dim<scaled_base_unit<Unit, UnitScale>, static_rational<1> >, dimensionless_type>,
- Dimension,
- Scale
- >
- >
- >&,
- Subformatter f,
- typename base_unit_info<scaled_base_unit<Unit, UnitScale> >::base_unit_info_primary_template* = 0)
-{
- return(f(
- unit<
- Dimension,
- heterogeneous_system<
- heterogeneous_system_impl<
- list<heterogeneous_system_dim<Unit, static_rational<1> >, dimensionless_type>,
- Dimension,
- typename mpl::times<Scale, list<scale_list_dim<UnitScale>, dimensionless_type> >::type
- >
- >
- >()));
-}
-
-// this overload disambuguates between the overload for an unscaled unit
-// and the overload for a scaled base unit raised to the first power.
-/// INTERNAL ONLY
-template<class Dimension,class Unit,class UnitScale,class Subformatter>
-inline std::string
-to_string_impl(
- const unit<
- Dimension,
- heterogeneous_system<
- heterogeneous_system_impl<
- list<heterogeneous_system_dim<scaled_base_unit<Unit, UnitScale>, static_rational<1> >, dimensionless_type>,
- Dimension,
- dimensionless_type
- >
- >
- >&,
- Subformatter f,
- typename base_unit_info<scaled_base_unit<Unit, UnitScale> >::base_unit_info_primary_template* = 0)
-{
- std::string str;
- f.template append_units_to<list<heterogeneous_system_dim<scaled_base_unit<Unit, UnitScale>, static_rational<1> >, dimensionless_type> >(str);
- return(str);
-}
-
-struct format_raw_symbol_impl {
- template<class Units>
- void append_units_to(std::string& str) {
- detail::symbol_string_impl<Units::size::value>::template apply<Units>::value(str);
- }
- template<class Scale>
- void append_scale_to(std::string& str) {
- detail::scale_symbol_string_impl<Scale::size::value>::template apply<Scale>::value(str);
- }
- template<class Unit>
- std::string operator()(const Unit& u) {
- return(to_string_impl(u, *this));
- }
- template<class Unit>
- bool is_default_string(const std::string&, const Unit&) {
- return(true);
- }
-};
-
-struct format_symbol_impl : format_raw_symbol_impl {
- template<class Unit>
- std::string operator()(const Unit& u) {
- return(symbol_string(u));
- }
- template<class Unit>
- bool is_default_string(const std::string& str, const Unit& u) {
- return(str == to_string_impl(u, format_raw_symbol_impl()));
- }
-};
-
-struct format_raw_name_impl {
- template<class Units>
- void append_units_to(std::string& str) {
- detail::name_string_impl<(Units::size::value)>::template apply<Units>::value(str);
- }
- template<class Scale>
- void append_scale_to(std::string& str) {
- detail::scale_name_string_impl<Scale::size::value>::template apply<Scale>::value(str);
- }
- template<class Unit>
- std::string operator()(const Unit& u) {
- return(to_string_impl(u, *this));
- }
- template<class Unit>
- bool is_default_string(const std::string&, const Unit&) {
- return(true);
- }
-};
-
-struct format_name_impl : format_raw_name_impl {
- template<class Unit>
- std::string operator()(const Unit& u) {
- return(name_string(u));
- }
- template<class Unit>
- bool is_default_string(const std::string& str, const Unit& u) {
- return(str == to_string_impl(u, format_raw_name_impl()));
- }
-};
-
-template<class Char, class Traits>
-inline void do_print(std::basic_ostream<Char, Traits>& os, const std::string& s)
-{
- os << s.c_str();
-}
-
-inline void do_print(std::ostream& os, const std::string& s)
-{
- os << s;
-}
-
-template<class Char, class Traits>
-inline void do_print(std::basic_ostream<Char, Traits>& os, const char* s)
-{
- os << s;
-}
-
-// For automatically applying the appropriate prefixes.
-
-}
-
-#ifdef BOOST_UNITS_DOXYGEN
-
-/// ADL customization point for automatic prefixing.
-/// Returns a non-negative value. Implemented as std::abs
-/// for built-in types.
-template<class T>
-double autoprefix_norm(const T& arg);
-
-#else
-
-template<class T, bool C = boost::is_arithmetic<T>::value>
-struct autoprefix_norm_impl;
-
-template<class T>
-struct autoprefix_norm_impl<T, true>
-{
- typedef double type;
- static BOOST_CONSTEXPR double call(const T& arg) { return std::abs(arg); }
-};
-
-template<class T>
-struct autoprefix_norm_impl<T, false>
-{
- typedef one type;
- static BOOST_CONSTEXPR one call(const T&) { return one(); }
-};
-
-template<class T>
-BOOST_CONSTEXPR
-typename autoprefix_norm_impl<T>::type autoprefix_norm(const T& arg)
-{
- return autoprefix_norm_impl<T>::call(arg);
-}
-
-#endif
-
-namespace detail {
-
-template<class End, class Prev, class T, class F>
-BOOST_CONSTEXPR
-bool find_matching_scale_impl(End, End, Prev, T, double, F)
-{
- return false;
-}
-
-template<class Begin, class End, class Prev, class T, class F>
-BOOST_CXX14_CONSTEXPR
-bool find_matching_scale_impl(Begin, End end, Prev prev, T t, double x, F f)
-{
- if(Begin::item::value() > x) {
- f(prev, t);
- return true;
- } else {
- return detail::find_matching_scale_impl(
- typename Begin::next(),
- end,
- typename Begin::item(),
- t,
- x,
- f
- );
- }
-}
-
-template<class End, class T, class F>
-BOOST_CONSTEXPR
-bool find_matching_scale_i(End, End, T, double, F)
-{
- return false;
-}
-
-template<class Begin, class End, class T, class F>
-BOOST_CXX14_CONSTEXPR
-bool find_matching_scale_i(Begin, End end, T t, double x, F f)
-{
- if(Begin::item::value() > x) {
- return false;
- } else {
- return detail::find_matching_scale_impl(typename Begin::next(), end, typename Begin::item(), t, x, f);
- }
-}
-
-template<class Scales, class T, class F>
-BOOST_CXX14_CONSTEXPR
-bool find_matching_scale(T t, double x, F f)
-{
- return detail::find_matching_scale_i(Scales(), dimensionless_type(), t, x, f);
-}
-
-typedef list<scale<10, static_rational<-24> >,
- list<scale<10, static_rational<-21> >,
- list<scale<10, static_rational<-18> >,
- list<scale<10, static_rational<-15> >,
- list<scale<10, static_rational<-12> >,
- list<scale<10, static_rational<-9> >,
- list<scale<10, static_rational<-6> >,
- list<scale<10, static_rational<-3> >,
- list<scale<10, static_rational<0> >,
- list<scale<10, static_rational<3> >,
- list<scale<10, static_rational<6> >,
- list<scale<10, static_rational<9> >,
- list<scale<10, static_rational<12> >,
- list<scale<10, static_rational<15> >,
- list<scale<10, static_rational<18> >,
- list<scale<10, static_rational<21> >,
- list<scale<10, static_rational<24> >,
- list<scale<10, static_rational<27> >,
- dimensionless_type> > > > > > > > > > > > > > > > > > engineering_prefixes;
-
-typedef list<scale<2, static_rational<10> >,
- list<scale<2, static_rational<20> >,
- list<scale<2, static_rational<30> >,
- list<scale<2, static_rational<40> >,
- list<scale<2, static_rational<50> >,
- list<scale<2, static_rational<60> >,
- list<scale<2, static_rational<70> >,
- list<scale<2, static_rational<80> >,
- list<scale<2, static_rational<90> >,
- dimensionless_type> > > > > > > > > binary_prefixes;
-
-template<class Os, class Quantity>
-struct print_default_t {
- typedef void result_type;
- void operator()() const
- {
- *os << q->value() << ' ' << typename Quantity::unit_type();
- }
- Os* os;
- const Quantity* q;
-};
-
-template<class Os, class Quantity>
-print_default_t<Os, Quantity> print_default(Os& os, const Quantity& q)
-{
- print_default_t<Os, Quantity> result = { &os, &q };
- return result;
-}
-
-template<class Os>
-struct print_scale_t {
- typedef void result_type;
- template<class Prefix, class T>
- void operator()(Prefix, const T& t) const
- {
- *prefixed = true;
- *os << t / Prefix::value() << ' ';
- switch(units::get_format(*os)) {
- case name_fmt: do_print(*os, Prefix::name()); break;
- case raw_fmt:
- case symbol_fmt: do_print(*os, Prefix::symbol()); break;
- case typename_fmt: do_print(*os, units::simplify_typename(Prefix())); *os << ' '; break;
- }
- }
- template<long N, class T>
- void operator()(scale<N, static_rational<0> >, const T& t) const
- {
- *prefixed = false;
- *os << t << ' ';
- }
- Os* os;
- bool* prefixed;
-};
-
-template<class Os>
-print_scale_t<Os> print_scale(Os& os, bool& prefixed)
-{
- print_scale_t<Os> result = { &os, &prefixed };
- return result;
-}
-
-// puts parentheses around a unit
-/// INTERNAL ONLY
-template<class Dimension,class Units,class Scale, class Subformatter>
-inline std::string
-maybe_parenthesize(const unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, Scale> > >&, Subformatter f)
-{
- std::string str;
-
- std::string without_scale = f(unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, dimensionless_type> > >());
-
- if (f.is_default_string(without_scale, unit<Dimension, heterogeneous_system<heterogeneous_system_impl<Units, Dimension, dimensionless_type> > >()))
- {
- str += "(";
- str += without_scale;
- str += ")";
- }
- else
- {
- str += without_scale;
- }
-
- return(str);
-}
-
-// This overload catches scaled units that have a single base unit
-// raised to the first power. It causes si::nano * si::meters to not
-// put parentheses around the meters. i.e. nm rather than n(m)
-/// INTERNAL ONLY
-template<class Dimension,class Unit,class Scale, class Subformatter>
-inline std::string
-maybe_parenthesize(const unit<Dimension, heterogeneous_system<heterogeneous_system_impl<list<heterogeneous_system_dim<Unit, static_rational<1> >,dimensionless_type>, Dimension, Scale> > >&, Subformatter f)
-{
- return f(unit<Dimension, heterogeneous_system<heterogeneous_system_impl<list<heterogeneous_system_dim<Unit, static_rational<1> >, dimensionless_type>, Dimension, dimensionless_type> > >());
-}
-
-template<class Prefixes, class CharT, class Traits, class Unit, class T, class F>
-void do_print_prefixed_impl(std::basic_ostream<CharT, Traits>& os, const quantity<Unit, T>& q, F default_)
-{
- bool prefixed;
- if(detail::find_matching_scale<Prefixes>(q.value(), autoprefix_norm(q.value()), detail::print_scale(os, prefixed))) {
- if(prefixed) {
- switch(units::get_format(os)) {
- case symbol_fmt: do_print(os, maybe_parenthesize(Unit(), format_symbol_impl())); break;
- case raw_fmt: do_print(os, maybe_parenthesize(Unit(), format_raw_symbol_impl())); break;
- case name_fmt: do_print(os, maybe_parenthesize(Unit(), format_name_impl())); break;
- case typename_fmt: do_print(os, simplify_typename(Unit())); break;
- }
- } else {
- os << Unit();
- }
- } else {
- default_();
- }
-}
-
-// Handle units like si::kilograms that have a scale embedded in the
-// base unit. This overload is disabled if the scaled base unit has
-// a user-defined string representation.
-template<class Prefixes, class CharT, class Traits, class Dimension, class BaseUnit, class BaseScale, class Scale, class T>
-typename base_unit_info<
- scaled_base_unit<BaseUnit, Scale>
->::base_unit_info_primary_template
-do_print_prefixed(
- std::basic_ostream<CharT, Traits>& os,
- const quantity<
- unit<
- Dimension,
- heterogeneous_system<
- heterogeneous_system_impl<
- list<
- heterogeneous_system_dim<
- scaled_base_unit<BaseUnit, BaseScale>,
- static_rational<1>
- >,
- dimensionless_type
- >,
- Dimension,
- Scale
- >
- >
- >,
- T
- >& q)
-{
- quantity<
- unit<
- Dimension,
- heterogeneous_system<
- heterogeneous_system_impl<
- list<
- heterogeneous_system_dim<BaseUnit, static_rational<1> >,
- dimensionless_type
- >,
- Dimension,
- dimensionless_type
- >
- >
- >,
- T
- > unscaled(q);
- detail::do_print_prefixed_impl<Prefixes>(os, unscaled, detail::print_default(os, q));
-}
-
-template<class Prefixes, class CharT, class Traits, class Dimension, class L, class Scale, class T>
-void do_print_prefixed(
- std::basic_ostream<CharT, Traits>& os,
- const quantity<
- unit<
- Dimension,
- heterogeneous_system<
- heterogeneous_system_impl<
- L,
- Dimension,
- Scale
- >
- >
- >,
- T
- >& q)
-{
- quantity<
- unit<
- Dimension,
- heterogeneous_system<
- heterogeneous_system_impl<
- L,
- Dimension,
- dimensionless_type
- >
- >
- >,
- T
- > unscaled(q);
- detail::do_print_prefixed_impl<Prefixes>(os, unscaled, detail::print_default(os, q));
-}
-
-template<class Prefixes, class CharT, class Traits, class Dimension, class System, class T>
-void do_print_prefixed(std::basic_ostream<CharT, Traits>& os, const quantity<unit<Dimension, System>, T>& q)
-{
- detail::do_print_prefixed<Prefixes>(os, quantity<unit<Dimension, typename make_heterogeneous_system<Dimension, System>::type>, T>(q));
-}
-
-template<class Prefixes, class CharT, class Traits, class Unit, class T>
-void do_print_prefixed(std::basic_ostream<CharT, Traits>& os, const quantity<Unit, T>& q)
-{
- detail::print_default(os, q)();
-}
-
-template<class Prefixes, class CharT, class Traits, class Unit, class T>
-void maybe_print_prefixed(std::basic_ostream<CharT, Traits>& os, const quantity<Unit, T>& q, mpl::true_)
-{
- detail::do_print_prefixed<Prefixes>(os, q);
-}
-
-template<class Prefixes, class CharT, class Traits, class Unit, class T>
-void maybe_print_prefixed(std::basic_ostream<CharT, Traits>& os, const quantity<Unit, T>& q, mpl::false_)
-{
- detail::print_default(os, q)();
-}
-
-inline BOOST_CONSTEXPR mpl::true_ test_norm(double) { return mpl::true_(); }
-inline BOOST_CONSTEXPR mpl::false_ test_norm(one) { return mpl::false_(); }
-
-} // namespace detail
-
-template<class Dimension,class System>
-inline std::string
-typename_string(const unit<Dimension, System>&)
-{
- return simplify_typename(typename reduce_unit< unit<Dimension,System> >::type());
-}
-
-template<class Dimension,class System>
-inline std::string
-symbol_string(const unit<Dimension, System>&)
-{
- return detail::to_string_impl(unit<Dimension,System>(), detail::format_symbol_impl());
-}
-
-template<class Dimension,class System>
-inline std::string
-name_string(const unit<Dimension, System>&)
-{
- return detail::to_string_impl(unit<Dimension,System>(), detail::format_name_impl());
-}
-
-/// Print a @c unit as a list of base units and their exponents.
-///
-/// for @c symbol_format outputs e.g. "m s^-1" or "J".
-/// for @c name_format outputs e.g. "meter second^-1" or "joule".
-/// for @c raw_format outputs e.g. "m s^-1" or "meter kilogram^2 second^-2".
-/// for @c typename_format outputs the typename itself (currently demangled only on GCC).
-template<class Char, class Traits, class Dimension, class System>
-inline std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os, const unit<Dimension, System>& u)
-{
- if (units::get_format(os) == typename_fmt)
- {
- detail::do_print(os, typename_string(u));
- }
- else if (units::get_format(os) == raw_fmt)
- {
- detail::do_print(os, detail::to_string_impl(u, detail::format_raw_symbol_impl()));
- }
- else if (units::get_format(os) == symbol_fmt)
- {
- detail::do_print(os, symbol_string(u));
- }
- else if (units::get_format(os) == name_fmt)
- {
- detail::do_print(os, name_string(u));
- }
- else
- {
- BOOST_ASSERT_MSG(false, "The format mode must be one of: typename_format, raw_format, name_format, symbol_format");
- }
-
- return(os);
-}
-
-/// \brief Print a @c quantity.
-/// \details Prints the value followed by the unit.
-/// If the engineering_prefix, or binary_prefix is set,
-/// tries to scale the value appropriately.
-/// For example, it might print 12.345 km instead of 12345 m.
-/// (Note does @b not attempt to automatically scale scalars like double, float...)
-template<class Char, class Traits, class Unit, class T>
-inline std::basic_ostream<Char, Traits>& operator<<(std::basic_ostream<Char, Traits>& os, const quantity<Unit, T>& q)
-{
- if (units::get_autoprefix(os) == autoprefix_none)
- {
- os << q.value() << ' ' << Unit();
- }
- else if (units::get_autoprefix(os) == autoprefix_engineering)
- {
- detail::maybe_print_prefixed<detail::engineering_prefixes>(os, q, detail::test_norm(autoprefix_norm(q.value())));
- }
- else if (units::get_autoprefix(os) == autoprefix_binary)
- {
- detail::maybe_print_prefixed<detail::binary_prefixes>(os, q, detail::test_norm(autoprefix_norm(q.value())));
- }
- else
- {
- BOOST_ASSERT_MSG(false, "Autoprefixing must be one of: no_prefix, engineering_prefix, binary_prefix");
- }
- return(os);
-}
-
-} // namespace units
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/is_dim.hpp b/contrib/restricted/boost/boost/units/is_dim.hpp
deleted file mode 100644
index d6a6b54be5..0000000000
--- a/contrib/restricted/boost/boost/units/is_dim.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IS_DIM_HPP
-#define BOOST_UNITS_IS_DIM_HPP
-
-///
-/// \file
-/// \brief Check that a type is a valid @c dim.
-///
-
-#include <boost/mpl/bool.hpp>
-
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// Check that a type is a valid @c dim.
-template<typename T>
-struct is_dim :
- public mpl::false_
-{ };
-
-template<typename T,typename V>
-struct is_dim< dim<T,V> > :
- public mpl::true_
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IS_DIM_HPP
diff --git a/contrib/restricted/boost/boost/units/is_dimension_list.hpp b/contrib/restricted/boost/boost/units/is_dimension_list.hpp
deleted file mode 100644
index b2494d73be..0000000000
--- a/contrib/restricted/boost/boost/units/is_dimension_list.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IS_DIMENSION_LIST_HPP
-#define BOOST_UNITS_IS_DIMENSION_LIST_HPP
-
-///
-/// \file
-/// \brief Check that a type is a valid dimension list.
-///
-
-#include <boost/mpl/bool.hpp>
-
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// Check that a type is a valid dimension list.
-template<typename Seq>
-struct is_dimension_list :
- public mpl::false_
-{ };
-
-template<typename Item, typename Next>
-struct is_dimension_list<list<Item, Next> > :
- public mpl::true_
-{ };
-
-template<>
-struct is_dimension_list<dimensionless_type> :
- public mpl::true_
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IS_DIMENSION_LIST_HPP
diff --git a/contrib/restricted/boost/boost/units/is_dimensionless.hpp b/contrib/restricted/boost/boost/units/is_dimensionless.hpp
deleted file mode 100644
index 158a4202b1..0000000000
--- a/contrib/restricted/boost/boost/units/is_dimensionless.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IS_DIMENSIONLESS_HPP
-#define BOOST_UNITS_IS_DIMENSIONLESS_HPP
-
-///
-/// \file
-/// \brief Check if a unit or quantity is dimensionless.
-///
-
-#include <boost/mpl/bool.hpp>
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-template<class T>
-struct is_dimensionless :
- public mpl::false_
-{ };
-
-/// Check if a unit is dimensionless.
-template<class System>
-struct is_dimensionless< unit<dimensionless_type,System> > :
- public mpl::true_
-{ };
-
-/// Check if a quantity is dimensionless.
-template<class Unit,class Y>
-struct is_dimensionless< quantity<Unit,Y> > :
- public is_dimensionless<Unit>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IS_DIMENSIONLESS_HPP
diff --git a/contrib/restricted/boost/boost/units/is_dimensionless_quantity.hpp b/contrib/restricted/boost/boost/units/is_dimensionless_quantity.hpp
deleted file mode 100644
index fa0dbce589..0000000000
--- a/contrib/restricted/boost/boost/units/is_dimensionless_quantity.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IS_DIMENSIONLESS_QUANTITY_HPP
-#define BOOST_UNITS_IS_DIMENSIONLESS_QUANTITY_HPP
-
-/// \file
-/// \brief check that a type is a dimensionless quantity
-
-#include <boost/units/is_quantity_of_dimension.hpp>
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// Check that a type is a dimensionless quantity.
-template<class T>
-struct is_dimensionless_quantity :
- public is_quantity_of_dimension<T,dimensionless_type>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IS_DIMENSIONLESS_QUANTITY_HPP
diff --git a/contrib/restricted/boost/boost/units/is_dimensionless_unit.hpp b/contrib/restricted/boost/boost/units/is_dimensionless_unit.hpp
deleted file mode 100644
index 09d4da59f0..0000000000
--- a/contrib/restricted/boost/boost/units/is_dimensionless_unit.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IS_DIMENSIONLESS_UNIT_HPP
-#define BOOST_UNITS_IS_DIMENSIONLESS_UNIT_HPP
-
-/// \file
-/// \brief Check that a type is a dimensionless unit.
-
-#include <boost/units/is_unit_of_dimension.hpp>
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// Check that a type is a dimensionless unit.
-template<class T>
-struct is_dimensionless_unit :
- public is_unit_of_dimension<T,dimensionless_type>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IS_DIMENSIONLESS_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/is_quantity.hpp b/contrib/restricted/boost/boost/units/is_quantity.hpp
deleted file mode 100644
index dd0ae083a8..0000000000
--- a/contrib/restricted/boost/boost/units/is_quantity.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IS_QUANTITY_HPP
-#define BOOST_UNITS_IS_QUANTITY_HPP
-
-///
-/// \file
-/// \brief Check that a type is a quantity.
-///
-
-#include <boost/mpl/bool.hpp>
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// Check that a type is a quantity.
-template<typename T>
-struct is_quantity :
- public mpl::false_
-{ };
-
-template<class Unit,
- class Y>
-struct is_quantity< quantity<Unit,Y> > :
- public mpl::true_
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IS_QUANTITY_HPP
diff --git a/contrib/restricted/boost/boost/units/is_quantity_of_dimension.hpp b/contrib/restricted/boost/boost/units/is_quantity_of_dimension.hpp
deleted file mode 100644
index f3ec40928c..0000000000
--- a/contrib/restricted/boost/boost/units/is_quantity_of_dimension.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IS_QUANTITY_OF_DIMENSION_HPP
-#define BOOST_UNITS_IS_QUANTITY_OF_DIMENSION_HPP
-
-///
-/// \file
-/// \brief Check that a type is a quantity of the specified dimension.
-///
-
-#include <boost/mpl/bool.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/is_unit_of_dimension.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// Check that a type is a quantity of the specified dimension.
-template<class T,class Dim>
-struct is_quantity_of_dimension :
- public mpl::false_
-{ };
-
-template<class Unit,class Y,class Dim>
-struct is_quantity_of_dimension< quantity< Unit,Y>,Dim > :
- public is_unit_of_dimension<Unit, Dim>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IS_QUANTITY_OF_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/is_quantity_of_system.hpp b/contrib/restricted/boost/boost/units/is_quantity_of_system.hpp
deleted file mode 100644
index 18546eb1ed..0000000000
--- a/contrib/restricted/boost/boost/units/is_quantity_of_system.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IS_QUANTITY_OF_SYSTEM_HPP
-#define BOOST_UNITS_IS_QUANTITY_OF_SYSTEM_HPP
-
-///
-/// \file
-/// \brief Check that a type is a quantity in a specified system.
-///
-
-#include <boost/mpl/bool.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/is_unit_of_system.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// Check that a type is a quantity in a specified system.
-template<class T,class System>
-struct is_quantity_of_system :
- public mpl::false_
-{ };
-
-template<class Unit,class Y,class System>
-struct is_quantity_of_system< quantity< Unit,Y>,System > :
- public is_unit_of_system<Unit, System>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IS_QUANTITY_OF_SYSTEM_HPP
diff --git a/contrib/restricted/boost/boost/units/is_unit.hpp b/contrib/restricted/boost/boost/units/is_unit.hpp
deleted file mode 100644
index 195c42fd5b..0000000000
--- a/contrib/restricted/boost/boost/units/is_unit.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IS_UNIT_HPP
-#define BOOST_UNITS_IS_UNIT_HPP
-
-///
-/// \file
-/// \brief Check that a type is a unit.
-///
-
-#include <boost/mpl/bool.hpp>
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// Check that a type is a unit.
-template<class T>
-struct is_unit :
- public mpl::false_
-{ };
-
-template<class Dim,class System>
-struct is_unit< unit<Dim,System> > :
- public mpl::true_
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IS_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/is_unit_of_dimension.hpp b/contrib/restricted/boost/boost/units/is_unit_of_dimension.hpp
deleted file mode 100644
index 4fc878beeb..0000000000
--- a/contrib/restricted/boost/boost/units/is_unit_of_dimension.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IS_UNIT_OF_DIMENSION_HPP
-#define BOOST_UNITS_IS_UNIT_OF_DIMENSION_HPP
-
-///
-/// \file
-/// \brief Check that a type is a unit of the specified dimension.
-///
-
-#include <boost/mpl/bool.hpp>
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// Check that a type is a unit of the specified dimension.
-template<class T,class Dim>
-struct is_unit_of_dimension :
- public mpl::false_
-{ };
-
-template<class Dim,class System>
-struct is_unit_of_dimension< unit<Dim,System>,Dim > :
- public mpl::true_
-{ };
-
-template<class Dim,class System>
-struct is_unit_of_dimension< absolute<unit<Dim,System> >,Dim > :
- public mpl::true_
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IS_UNIT_OF_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/is_unit_of_system.hpp b/contrib/restricted/boost/boost/units/is_unit_of_system.hpp
deleted file mode 100644
index 3c3eaa7525..0000000000
--- a/contrib/restricted/boost/boost/units/is_unit_of_system.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IS_UNIT_OF_SYSTEM_HPP
-#define BOOST_UNITS_IS_UNIT_OF_SYSTEM_HPP
-
-///
-/// \file
-/// \brief Check that a type is a unit in a specified system.
-///
-
-#include <boost/mpl/bool.hpp>
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// Check that a type is a unit in a specified system.
-template<class T,class System>
-struct is_unit_of_system :
- public mpl::false_
-{ };
-
-template<class Dim,class System>
-struct is_unit_of_system< unit<Dim,System>,System > :
- public mpl::true_
-{ };
-
-template<class Dim,class System>
-struct is_unit_of_system< absolute<unit<Dim,System> >,System > :
- public mpl::true_
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IS_UNIT_OF_SYSTEM_HPP
diff --git a/contrib/restricted/boost/boost/units/lambda.hpp b/contrib/restricted/boost/boost/units/lambda.hpp
deleted file mode 100644
index 9014ccaabf..0000000000
--- a/contrib/restricted/boost/boost/units/lambda.hpp
+++ /dev/null
@@ -1,593 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-// $Id: lambda.hpp 27 2008-06-16 14:50:58Z maehne $
-
-#ifndef BOOST_UNITS_LAMBDA_HPP
-#define BOOST_UNITS_LAMBDA_HPP
-
-
-////////////////////////////////////////////////////////////////////////
-///
-/// \file lambda.hpp
-///
-/// \brief Definitions to ease the usage of Boost.Units' quantity,
-/// unit, and absolute types in functors created with the
-/// Boost.Lambda library.
-///
-/// \author Torsten Maehne
-/// \date 2008-06-16
-///
-/// Boost.Lambda's return type deduction system is extented to make
-/// use of Boost.Units' typeof_helper trait classes for Boost.Units'
-/// quantity, absolute, and unit template classes.
-///
-////////////////////////////////////////////////////////////////////////
-
-
-#include <boost/lambda/lambda.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/detail/dimensionless_unit.hpp>
-#include <boost/units/operators.hpp>
-
-namespace boost {
-
-namespace lambda {
-
- /// Partial specialization of return type trait for action
- /// unit<Dim, System> * Y.
- template<typename System, typename Dim, typename Y>
- struct plain_return_type_2<arithmetic_action<multiply_action>,
- boost::units::unit<Dim, System>,
- Y > {
- typedef typename boost::units::multiply_typeof_helper<
- boost::units::unit<Dim, System>, Y >::type type;
- };
-
-} // namespace lambda
-
-namespace units {
-
- template<typename System, typename Dim, typename Arg>
- struct multiply_typeof_helper<boost::units::unit<Dim, System>, boost::lambda::lambda_functor<Arg> > {
- typedef boost::lambda::lambda_functor<
- boost::lambda::lambda_functor_base<
- boost::lambda::arithmetic_action<boost::lambda::multiply_action>,
- tuple<typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type, boost::lambda::lambda_functor<Arg> >
- >
- > type;
- };
-
- /// Disambiguating overload for action
- /// unit<Dim, System> * lambda_functor<Arg>
- /// based on \<boost/lambda/detail/operators.hpp\>.
- template<typename System, typename Dim, typename Arg>
- inline const typename multiply_typeof_helper<boost::units::unit<Dim, System>, boost::lambda::lambda_functor<Arg> >::type
- operator*(const boost::units::unit<Dim, System>& a,
- const boost::lambda::lambda_functor<Arg>& b) {
- return typename multiply_typeof_helper<boost::units::unit<Dim, System>, boost::lambda::lambda_functor<Arg> >::type::inherited
- (tuple<typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type,
- boost::lambda::lambda_functor<Arg> >
- (a, b));
- }
-
-} // namespace units
-
-namespace lambda {
-
- /// Partial specialization of return type trait for action
- /// unit<Dim, System> / Y.
- template<typename System, typename Dim, typename Y>
- struct plain_return_type_2<arithmetic_action<divide_action>,
- boost::units::unit<Dim, System>,
- Y > {
- typedef typename boost::units::divide_typeof_helper<
- boost::units::unit<Dim, System>, Y >::type type;
- };
-
-} // namespace lambda
-
-namespace units {
-
- template<typename System, typename Dim, typename Arg>
- struct divide_typeof_helper<boost::units::unit<Dim, System>, boost::lambda::lambda_functor<Arg> > {
- typedef boost::lambda::lambda_functor<
- boost::lambda::lambda_functor_base<
- boost::lambda::arithmetic_action<boost::lambda::divide_action>,
- tuple<typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type, boost::lambda::lambda_functor<Arg> >
- >
- > type;
- };
-
- /// Disambiguating overload for action
- /// unit<Dim, System> / lambda_functor<Arg>
- /// based on \<boost/lambda/detail/operators.hpp\>.
- template<typename System, typename Dim, typename Arg>
- inline const typename divide_typeof_helper<boost::units::unit<Dim, System>, boost::lambda::lambda_functor<Arg> >::type
- operator/(const boost::units::unit<Dim, System>& a,
- const boost::lambda::lambda_functor<Arg>& b) {
- return typename divide_typeof_helper<boost::units::unit<Dim, System>, boost::lambda::lambda_functor<Arg> >::type::inherited
- (tuple<typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type,
- boost::lambda::lambda_functor<Arg> >
- (a, b));
- }
-
-} // namespace units
-
-namespace lambda {
-
- /// Partial specialization of return type trait for action
- /// Y * unit<Dim, System>.
- template<typename System, typename Dim, typename Y>
- struct plain_return_type_2<arithmetic_action<multiply_action>,
- Y,
- boost::units::unit<Dim, System> > {
- typedef typename boost::units::multiply_typeof_helper<
- Y, boost::units::unit<Dim, System> >::type type;
- };
-
-} // namespace lambda
-
-namespace units {
-
- template<typename System, typename Dim, typename Arg>
- struct multiply_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::unit<Dim, System> > {
- typedef boost::lambda::lambda_functor<
- boost::lambda::lambda_functor_base<
- boost::lambda::arithmetic_action<boost::lambda::multiply_action>,
- tuple<boost::lambda::lambda_functor<Arg>, typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type>
- >
- > type;
- };
-
- /// Disambiguating overload for action
- /// lambda_functor<Arg> * unit<Dim, System>
- /// based on \<boost/lambda/detail/operators.hpp\>.
- template<typename System, typename Dim, typename Arg>
- inline const typename multiply_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::unit<Dim, System> >::type
- operator*(const boost::lambda::lambda_functor<Arg>& a,
- const boost::units::unit<Dim, System>& b) {
- return typename multiply_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::unit<Dim, System> >::type::inherited
- (tuple<boost::lambda::lambda_functor<Arg>,
- typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type>
- (a, b));
- }
-
-} // namespace units
-
-namespace lambda {
-
- /// Partial specialization of return type trait for action
- /// Y / unit<Dim, System>.
- template<typename System, typename Dim, typename Y>
- struct plain_return_type_2<arithmetic_action<divide_action>,
- Y,
- boost::units::unit<Dim, System> > {
- typedef typename boost::units::divide_typeof_helper<
- Y, boost::units::unit<Dim, System> >::type type;
- };
-
-} // namespace lambda
-
-namespace units {
-
- template<typename System, typename Dim, typename Arg>
- struct divide_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::unit<Dim, System> > {
- typedef boost::lambda::lambda_functor<
- boost::lambda::lambda_functor_base<
- boost::lambda::arithmetic_action<boost::lambda::divide_action>,
- tuple<boost::lambda::lambda_functor<Arg>, typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type>
- >
- > type;
- };
-
- /// Disambiguating overload for action
- /// lambda_functor<Arg> / unit<Dim, System>
- /// based on \<boost/lambda/detail/operators.hpp\>.
- template<typename System, typename Dim, typename Arg>
- inline const typename divide_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::unit<Dim, System> >::type
- operator/(const boost::lambda::lambda_functor<Arg>& a,
- const boost::units::unit<Dim, System>& b) {
- return typename divide_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::unit<Dim, System> >::type::inherited
- (tuple<boost::lambda::lambda_functor<Arg>,
- typename boost::lambda::const_copy_argument<const boost::units::unit<Dim, System> >::type>
- (a, b));
- }
-
-} // namespace units
-
-namespace lambda {
-
- /// Partial specialization of return type trait for action
- /// quantity<Unit, X> * X.
- template<typename Unit, typename X>
- struct plain_return_type_2<arithmetic_action<multiply_action>,
- boost::units::quantity<Unit, X>,
- X> {
- typedef typename boost::units::multiply_typeof_helper<
- boost::units::quantity<Unit, X>, X>::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// X * quantity<Unit, X>.
- template<typename Unit, typename X>
- struct plain_return_type_2<arithmetic_action<multiply_action>,
- X,
- boost::units::quantity<Unit, X> > {
- typedef typename boost::units::multiply_typeof_helper<
- X, boost::units::quantity<Unit, X> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// quantity<Unit, X> / X.
- template<typename Unit, typename X>
- struct plain_return_type_2<arithmetic_action<divide_action>,
- boost::units::quantity<Unit, X>,
- X> {
- typedef typename boost::units::divide_typeof_helper<
- boost::units::quantity<Unit, X>, X>::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// X / quantity<Unit, X>.
- template<typename Unit, typename X>
- struct plain_return_type_2<arithmetic_action<divide_action>,
- X,
- boost::units::quantity<Unit, X> > {
- typedef typename boost::units::divide_typeof_helper<
- X, boost::units::quantity<Unit, X> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// unit<Dim1, System1> * quantity<Unit2, Y>.
- template<typename System1, typename Dim1, typename Unit2, typename Y>
- struct plain_return_type_2<arithmetic_action<multiply_action>,
- boost::units::unit<Dim1, System1>,
- boost::units::quantity<Unit2, Y> > {
- typedef typename boost::units::multiply_typeof_helper<
- boost::units::unit<Dim1, System1>,
- boost::units::quantity<Unit2, Y> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// unit<Dim1, System1> / quantity<Unit2, Y>.
- template<typename System1, typename Dim1, typename Unit2, typename Y>
- struct plain_return_type_2<arithmetic_action<divide_action>,
- boost::units::unit<Dim1, System1>,
- boost::units::quantity<Unit2, Y> > {
- typedef typename boost::units::divide_typeof_helper<
- boost::units::unit<Dim1, System1>,
- boost::units::quantity<Unit2, Y> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// quantity<Unit1, Y> * unit<Dim2, System2>.
- template<typename Unit1, typename Y, typename System2, typename Dim2>
- struct plain_return_type_2<arithmetic_action<multiply_action>,
- boost::units::quantity<Unit1, Y>,
- boost::units::unit<Dim2, System2> > {
- typedef typename boost::units::multiply_typeof_helper<
- boost::units::quantity<Unit1, Y>,
- boost::units::unit<Dim2, System2> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// quantity<Unit1, Y> / unit<Dim2, System2>.
- template<typename Unit1, typename Y, typename System2, typename Dim2>
- struct plain_return_type_2<arithmetic_action<divide_action>,
- boost::units::quantity<Unit1, Y>,
- boost::units::unit<Dim2, System2> > {
- typedef typename boost::units::divide_typeof_helper<
- boost::units::quantity<Unit1, Y>,
- boost::units::unit<Dim2, System2> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// +quantity<Unit, Y>.
- template<typename Unit, typename Y>
- struct plain_return_type_1<unary_arithmetic_action<plus_action>,
- boost::units::quantity<Unit, Y> > {
- typedef typename boost::units::unary_plus_typeof_helper<
- boost::units::quantity<Unit, Y> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// -quantity<Unit, Y>.
- template<typename Unit, typename Y>
- struct plain_return_type_1<unary_arithmetic_action<minus_action>,
- boost::units::quantity<Unit, Y> > {
- typedef typename boost::units::unary_minus_typeof_helper<
- boost::units::quantity<Unit, Y> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// quantity<Unit1, X> + quantity<Unit2, Y>.
- template<typename Unit1, typename X, typename Unit2, typename Y>
- struct plain_return_type_2<arithmetic_action<plus_action>,
- boost::units::quantity<Unit1, X>,
- boost::units::quantity<Unit2, Y> > {
- typedef typename boost::units::add_typeof_helper<
- boost::units::quantity<Unit1, X>,
- boost::units::quantity<Unit2, Y> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// quantity<dimensionless, X> + Y.
- template<typename System, typename X, typename Y>
- struct plain_return_type_2<arithmetic_action<plus_action>,
- boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), X>,
- Y> {
- typedef typename boost::units::add_typeof_helper<
- boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), X>,
- Y>::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// X + quantity<dimensionless, Y>.
- template<typename System, typename X, typename Y>
- struct plain_return_type_2<arithmetic_action<plus_action>,
- X,
- boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), Y> > {
- typedef typename boost::units::add_typeof_helper<
- X,
- boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), Y> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// quantity<Unit1, X> - quantity<Unit2, Y>.
- template<typename Unit1, typename X, typename Unit2, typename Y>
- struct plain_return_type_2<arithmetic_action<minus_action>,
- boost::units::quantity<Unit1, X>,
- boost::units::quantity<Unit2, Y> > {
- typedef typename boost::units::subtract_typeof_helper<
- boost::units::quantity<Unit1, X>,
- boost::units::quantity<Unit2, Y> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// quantity<dimensionless, X> - Y.
- template<typename System, typename X, typename Y>
- struct plain_return_type_2<arithmetic_action<minus_action>,
- boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), X>,
- Y> {
- typedef typename boost::units::subtract_typeof_helper<
- boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), X>,
- Y>::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// X - quantity<dimensionless, Y>.
- template<typename System, typename X, typename Y>
- struct plain_return_type_2<arithmetic_action<minus_action>,
- X,
- boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), Y> > {
- typedef typename boost::units::subtract_typeof_helper<
- X,
- boost::units::quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System), Y> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// quantity<Unit1, X> * quantity<Unit2, Y>.
- template<typename Unit1, typename X, typename Unit2, typename Y>
- struct plain_return_type_2<arithmetic_action<multiply_action>,
- boost::units::quantity<Unit1, X>,
- boost::units::quantity<Unit2, Y> > {
- typedef typename boost::units::multiply_typeof_helper<
- boost::units::quantity<Unit1, X>,
- boost::units::quantity<Unit2, Y> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// quantity<Unit1, X> / quantity<Unit2, Y>.
- template<typename Unit1, typename X, typename Unit2, typename Y>
- struct plain_return_type_2<arithmetic_action<divide_action>,
- boost::units::quantity<Unit1, X>,
- boost::units::quantity<Unit2, Y> > {
- typedef typename boost::units::divide_typeof_helper<
- boost::units::quantity<Unit1, X>,
- boost::units::quantity<Unit2, Y> >::type type;
- };
-
-
- ////////////////////////////////////////////////////////////////////////
- // Partial specialization of Boost.Lambda's trait classes for all
- // operators overloaded in <boost/units/unit.hpp>
- ////////////////////////////////////////////////////////////////////////
-
- /// Partial specialization of return type trait for action
- /// +unit<Dim, System>.
- template<typename Dim, typename System>
- struct plain_return_type_1<unary_arithmetic_action<plus_action>,
- boost::units::unit<Dim, System> > {
- typedef typename boost::units::unary_plus_typeof_helper<
- boost::units::unit<Dim, System> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// -unit<Dim, System>.
- template<typename Dim, typename System>
- struct plain_return_type_1<unary_arithmetic_action<minus_action>,
- boost::units::unit<Dim, System> > {
- typedef typename boost::units::unary_minus_typeof_helper<
- boost::units::unit<Dim, System> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// unit<Dim1, System1> + unit<Dim2, System2>.
- template<typename Dim1, typename Dim2, typename System1, typename System2>
- struct plain_return_type_2<arithmetic_action<plus_action>,
- boost::units::unit<Dim1, System1>,
- boost::units::unit<Dim2, System2> > {
- typedef typename boost::units::add_typeof_helper<
- boost::units::unit<Dim1, System1>,
- boost::units::unit<Dim2, System2> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// unit<Dim1, System1> - unit<Dim2, System2>.
- template<typename Dim1, typename Dim2, typename System1, typename System2>
- struct plain_return_type_2<arithmetic_action<minus_action>,
- boost::units::unit<Dim1, System1>,
- boost::units::unit<Dim2, System2> > {
- typedef typename boost::units::subtract_typeof_helper<
- boost::units::unit<Dim1, System1>,
- boost::units::unit<Dim2, System2> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// unit<Dim1, System1> * unit<Dim2, System2>.
- template<typename Dim1, typename Dim2, typename System1, typename System2>
- struct plain_return_type_2<arithmetic_action<multiply_action>,
- boost::units::unit<Dim1, System1>,
- boost::units::unit<Dim2, System2> > {
- typedef typename boost::units::multiply_typeof_helper<
- boost::units::unit<Dim1, System1>,
- boost::units::unit<Dim2, System2> >::type type;
- };
-
- /// Partial specialization of return type trait for action
- /// unit<Dim1, System1> / unit<Dim2, System2>.
- template<typename Dim1, typename Dim2, typename System1, typename System2>
- struct plain_return_type_2<arithmetic_action<divide_action>,
- boost::units::unit<Dim1, System1>,
- boost::units::unit<Dim2, System2> > {
- typedef typename boost::units::divide_typeof_helper<
- boost::units::unit<Dim1, System1>,
- boost::units::unit<Dim2, System2> >::type type;
- };
-
-
- ////////////////////////////////////////////////////////////////////////
- // Partial specialization of Boost.Lambda's trait classes for all
- // operators overloaded in <boost/units/absolute.hpp>
- ////////////////////////////////////////////////////////////////////////
-
-
- /// Partial specialization of return type trait for action
- /// absolute<Y> + Y.
- template<typename Y>
- struct plain_return_type_2<arithmetic_action<plus_action>,
- boost::units::absolute<Y>,
- Y> {
- typedef typename boost::units::absolute<Y> type;
- };
-
- /// Partial specialization of return type trait for action
- /// Y + absolute<Y>.
- template<typename Y>
- struct plain_return_type_2<arithmetic_action<plus_action>,
- Y,
- boost::units::absolute<Y> > {
- typedef typename boost::units::absolute<Y> type;
- };
-
- /// Partial specialization of return type trait for action
- /// absolute<Y> - Y.
- template<typename Y>
- struct plain_return_type_2<arithmetic_action<minus_action>,
- boost::units::absolute<Y>,
- Y> {
- typedef typename boost::units::absolute<Y> type;
- };
-
- /// Partial specialization of return type trait for action
- /// absolute<Y> - absolute<Y>.
- template<typename Y>
- struct plain_return_type_2<arithmetic_action<minus_action>,
- boost::units::absolute<Y>,
- boost::units::absolute<Y> > {
- typedef Y type;
- };
-
- /// Partial specialization of return type trait for action
- /// T * absolute<unit<D, S> >.
- template<typename D, typename S, typename T>
- struct plain_return_type_2<arithmetic_action<multiply_action>,
- T,
- boost::units::absolute<boost::units::unit<D, S> > > {
- typedef typename boost::units::quantity<
- boost::units::absolute<boost::units::unit<D, S> >, T> type;
- };
-
-} // namespace lambda
-
-namespace units {
-
- template<typename System, typename Dim, typename Arg>
- struct multiply_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::absolute<boost::units::unit<Dim, System> > > {
- typedef boost::lambda::lambda_functor<
- boost::lambda::lambda_functor_base<
- boost::lambda::arithmetic_action<boost::lambda::multiply_action>,
- tuple<boost::lambda::lambda_functor<Arg>,
- typename boost::lambda::const_copy_argument<const boost::units::absolute<boost::units::unit<Dim, System> > >::type>
- >
- > type;
- };
-
- /// Disambiguating overload for action
- /// lambda_functor<Arg> * absolute<unit<Dim, System> >
- /// based on \<boost/lambda/detail/operators.hpp\>.
- template<typename System, typename Dim, typename Arg>
- inline const typename multiply_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::absolute<boost::units::unit<Dim, System> > >::type
- operator*(const boost::lambda::lambda_functor<Arg>& a,
- const boost::units::absolute<boost::units::unit<Dim, System> >& b) {
- return typename multiply_typeof_helper<boost::lambda::lambda_functor<Arg>, boost::units::absolute<boost::units::unit<Dim, System> > >::type::inherited
- (tuple<boost::lambda::lambda_functor<Arg>,
- typename boost::lambda::const_copy_argument<const boost::units::absolute<boost::units::unit<Dim, System> > >::type>
- (a, b));
- }
-
-} // namespace units
-
-namespace lambda {
-
- /// Partial specialization of return type trait for action
- /// absolute<unit<D, S> > * T.
- template<typename D, typename S, typename T>
- struct plain_return_type_2<arithmetic_action<multiply_action>,
- boost::units::absolute<boost::units::unit<D, S> >,
- T> {
- typedef typename boost::units::quantity<
- boost::units::absolute<boost::units::unit<D, S> >, T> type;
- };
-
-} // namespace lambda
-
-namespace units {
-
- template<typename System, typename Dim, typename Arg>
- struct multiply_typeof_helper<boost::units::absolute<boost::units::unit<Dim, System> >, boost::lambda::lambda_functor<Arg> > {
- typedef boost::lambda::lambda_functor<
- boost::lambda::lambda_functor_base<
- boost::lambda::arithmetic_action<boost::lambda::multiply_action>,
- tuple<typename boost::lambda::const_copy_argument<const boost::units::absolute<boost::units::unit<Dim, System> > >::type,
- boost::lambda::lambda_functor<Arg> >
- >
- > type;
- };
-
- /// Disambiguating overload for action
- /// absolute<unit<Dim, System> > * lambda_functor<Arg>
- /// based on \<boost/lambda/detail/operators.hpp\>.
- template<typename System, typename Dim, typename Arg>
- inline const typename multiply_typeof_helper<boost::units::absolute<boost::units::unit<Dim, System> >, boost::lambda::lambda_functor<Arg> >::type
- operator*(const boost::units::absolute<boost::units::unit<Dim, System> >& a,
- const boost::lambda::lambda_functor<Arg>& b) {
- return typename multiply_typeof_helper<boost::units::absolute<boost::units::unit<Dim, System> >, boost::lambda::lambda_functor<Arg> >::type::inherited
- (tuple<typename boost::lambda::const_copy_argument<const boost::units::absolute<boost::units::unit<Dim, System> > >::type,
- boost::lambda::lambda_functor<Arg> >
- (a, b));
- }
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_LAMBDA_HPP
diff --git a/contrib/restricted/boost/boost/units/limits.hpp b/contrib/restricted/boost/boost/units/limits.hpp
deleted file mode 100644
index 7886d692a0..0000000000
--- a/contrib/restricted/boost/boost/units/limits.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_LIMITS_HPP
-#define BOOST_UNITS_LIMITS_HPP
-
-///
-/// \file
-/// \brief specialize std::numeric_limits for units.
-///
-
-#include <limits>
-
-#include <boost/config.hpp>
-#include <boost/units/units_fwd.hpp>
-
-namespace std {
-
-template<class Unit, class T>
-class numeric_limits< ::boost::units::quantity<Unit, T> >
-{
- public:
- typedef ::boost::units::quantity<Unit, T> quantity_type;
- BOOST_STATIC_CONSTEXPR bool is_specialized = std::numeric_limits<T>::is_specialized;
- static BOOST_CONSTEXPR quantity_type (min)() { return(quantity_type::from_value((std::numeric_limits<T>::min)())); }
- static BOOST_CONSTEXPR quantity_type (max)() { return(quantity_type::from_value((std::numeric_limits<T>::max)())); }
-#ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
- static BOOST_CONSTEXPR quantity_type (lowest)() { return(quantity_type::from_value((std::numeric_limits<T>::lowest)())); }
-#endif
- BOOST_STATIC_CONSTEXPR int digits = std::numeric_limits<T>::digits;
- BOOST_STATIC_CONSTEXPR int digits10 = std::numeric_limits<T>::digits10;
-#ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
- BOOST_STATIC_CONSTEXPR int max_digits10 = std::numeric_limits<T>::max_digits10;
-#endif
- BOOST_STATIC_CONSTEXPR bool is_signed = std::numeric_limits<T>::is_signed;
- BOOST_STATIC_CONSTEXPR bool is_integer = std::numeric_limits<T>::is_integer;
- BOOST_STATIC_CONSTEXPR bool is_exact = std::numeric_limits<T>::is_exact;
- BOOST_STATIC_CONSTEXPR int radix = std::numeric_limits<T>::radix;
- static BOOST_CONSTEXPR quantity_type epsilon() { return(quantity_type::from_value(std::numeric_limits<T>::epsilon())); }
- static BOOST_CONSTEXPR quantity_type round_error() { return(quantity_type::from_value(std::numeric_limits<T>::round_error())); }
- BOOST_STATIC_CONSTEXPR int min_exponent = std::numeric_limits<T>::min_exponent;
- BOOST_STATIC_CONSTEXPR int min_exponent10 = std::numeric_limits<T>::min_exponent10;
- BOOST_STATIC_CONSTEXPR int max_exponent = std::numeric_limits<T>::max_exponent;
- BOOST_STATIC_CONSTEXPR int max_exponent10 = std::numeric_limits<T>::max_exponent10;
- BOOST_STATIC_CONSTEXPR bool has_infinity = std::numeric_limits<T>::has_infinity;
- BOOST_STATIC_CONSTEXPR bool has_quiet_NaN = std::numeric_limits<T>::has_quiet_NaN;
- BOOST_STATIC_CONSTEXPR bool has_signaling_NaN = std::numeric_limits<T>::has_signaling_NaN;
- BOOST_STATIC_CONSTEXPR bool has_denorm_loss = std::numeric_limits<T>::has_denorm_loss;
- static BOOST_CONSTEXPR quantity_type infinity() { return(quantity_type::from_value(std::numeric_limits<T>::infinity())); }
- static BOOST_CONSTEXPR quantity_type quiet_NaN() { return(quantity_type::from_value(std::numeric_limits<T>::quiet_NaN())); }
- static BOOST_CONSTEXPR quantity_type signaling_NaN() { return(quantity_type::from_value(std::numeric_limits<T>::signaling_NaN())); }
- static BOOST_CONSTEXPR quantity_type denorm_min() { return(quantity_type::from_value(std::numeric_limits<T>::denorm_min())); }
- BOOST_STATIC_CONSTEXPR bool is_iec559 = std::numeric_limits<T>::is_iec559;
- BOOST_STATIC_CONSTEXPR bool is_bounded = std::numeric_limits<T>::is_bounded;
- BOOST_STATIC_CONSTEXPR bool is_modulo = std::numeric_limits<T>::is_modulo;
- BOOST_STATIC_CONSTEXPR bool traps = std::numeric_limits<T>::traps;
- BOOST_STATIC_CONSTEXPR bool tinyness_before = std::numeric_limits<T>::tinyness_before;
-#if defined(_STLP_STATIC_CONST_INIT_BUG)
- BOOST_STATIC_CONSTEXPR int has_denorm = std::numeric_limits<T>::has_denorm;
- BOOST_STATIC_CONSTEXPR int round_style = std::numeric_limits<T>::round_style;
-#else
- BOOST_STATIC_CONSTEXPR float_denorm_style has_denorm = std::numeric_limits<T>::has_denorm;
- BOOST_STATIC_CONSTEXPR float_round_style round_style = std::numeric_limits<T>::round_style;
-#endif
-};
-
-}
-
-#endif // BOOST_UNITS_LIMITS_HPP
diff --git a/contrib/restricted/boost/boost/units/make_scaled_unit.hpp b/contrib/restricted/boost/boost/units/make_scaled_unit.hpp
deleted file mode 100644
index d9740ffd80..0000000000
--- a/contrib/restricted/boost/boost/units/make_scaled_unit.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_MAKE_SCALED_UNIT_HPP_INCLUDED
-#define BOOST_UNITS_MAKE_SCALED_UNIT_HPP_INCLUDED
-
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/heterogeneous_system.hpp>
-#include <boost/units/unit.hpp>
-
-namespace boost {
-namespace units {
-
-template<class Unit, class Scale>
-struct make_scaled_unit {
- typedef typename make_scaled_unit<typename reduce_unit<Unit>::type, Scale>::type type;
-};
-
-template<class Dimension, class UnitList, class OldScale, class Scale>
-struct make_scaled_unit<unit<Dimension, heterogeneous_system<heterogeneous_system_impl<UnitList, Dimension, OldScale> > >, Scale> {
- typedef unit<
- Dimension,
- heterogeneous_system<
- heterogeneous_system_impl<
- UnitList,
- Dimension,
- typename mpl::times<
- OldScale,
- list<scale_list_dim<Scale>, dimensionless_type>
- >::type
- >
- >
- > type;
-};
-
-template<class Dimension, class UnitList, class OldScale, long Base>
-struct make_scaled_unit<unit<Dimension, heterogeneous_system<heterogeneous_system_impl<UnitList, Dimension, OldScale> > >, scale<Base, static_rational<0> > > {
- typedef unit<
- Dimension,
- heterogeneous_system<
- heterogeneous_system_impl<
- UnitList,
- Dimension,
- OldScale
- >
- >
- > type;
-};
-
-}
-}
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/make_system.hpp b/contrib/restricted/boost/boost/units/make_system.hpp
deleted file mode 100644
index 1918268121..0000000000
--- a/contrib/restricted/boost/boost/units/make_system.hpp
+++ /dev/null
@@ -1,145 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_MAKE_SYSTEM_HPP
-#define BOOST_UNITS_MAKE_SYSTEM_HPP
-
-/// \file
-/// \brief Metafunction returning a homogeneous system that can
-/// represent any combination of the base units.
-/// \details
-/// Metafunction make_system returning a homogeneous system that can
-/// represent any combination of the base units. There must
-/// be no way to represent any of the base units in terms
-/// of the others. make_system<foot_base_unit, meter_base_unit>::type
-/// is not allowed, for example.
-
-#include <boost/units/config.hpp>
-#include <boost/units/dimensionless_type.hpp>
-#include <boost/units/homogeneous_system.hpp>
-#include <boost/units/detail/dimension_list.hpp>
-#include <boost/units/detail/sort.hpp>
-
-namespace boost {
-
-namespace units {
-
-#ifdef BOOST_UNITS_DOXYGEN
-
-namespace detail {
-
-struct unspecified {};
-
-}
-
-/// Metafunction returning a homogeneous system that can
-/// represent any combination of the base units. There must
-/// be no way to represent any of the base units in terms
-/// of the others. make_system<foot_base_unit, meter_base_unit>::type
-/// is not allowed, for example.
-template<class BaseUnit0, class BaseUnit1, class BaseUnit2, ..., class BaseUnitN>
-struct make_system
-{
- typedef homogeneous_system<detail::unspecified> type;
-};
-
-#else
-
-struct na {};
-
-template<
- class U0 = na,
- class U1 = na,
- class U2 = na,
- class U3 = na,
- class U4 = na,
- class U5 = na,
- class U6 = na,
- class U7 = na,
- class U8 = na,
- class U9 = na
->
-struct make_system;
-
-template<>
-struct make_system<>
-{
- typedef homogeneous_system<dimensionless_type> type;
-};
-
-// Codewarrior 9.2 doesn't like using the defaults. Need
-// to specify na explicitly.
-template<class T0>
-struct make_system<T0, na, na, na, na, na, na, na, na, na>
-{
- typedef homogeneous_system<list<T0, dimensionless_type> > type;
-};
-
-template<class T0, class T1>
-struct make_system<T0, T1, na, na, na, na, na, na, na, na>
-{
- typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, dimensionless_type> > >::type> type;
-};
-
-template<class T0, class T1, class T2>
-struct make_system<T0, T1, T2, na, na, na, na, na, na, na>
-{
- typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, dimensionless_type> > > >::type> type;
-};
-
-template<class T0, class T1, class T2, class T3>
-struct make_system<T0, T1, T2, T3, na, na, na, na, na, na>
-{
- typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, dimensionless_type> > > > >::type> type;
-};
-
-template<class T0, class T1, class T2, class T3, class T4>
-struct make_system<T0, T1, T2, T3, T4, na, na, na, na, na>
-{
- typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, dimensionless_type> > > > > >::type> type;
-};
-
-template<class T0, class T1, class T2, class T3, class T4, class T5>
-struct make_system<T0, T1, T2, T3, T4, T5, na, na, na, na>
-{
- typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, dimensionless_type> > > > > > >::type> type;
-};
-
-template<class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct make_system<T0, T1, T2, T3, T4, T5, T6, na, na, na>
-{
- typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, list<T6, dimensionless_type> > > > > > > >::type> type;
-};
-
-template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct make_system<T0, T1, T2, T3, T4, T5, T6, T7, na, na>
-{
- typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, list<T6, list<T7, dimensionless_type> > > > > > > > >::type> type;
-};
-
-template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct make_system<T0, T1, T2, T3, T4, T5, T6, T7, T8, na>
-{
- typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, list<T6, list<T7, list<T8, dimensionless_type> > > > > > > > > >::type> type;
-};
-
-template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct make_system
-{
- typedef homogeneous_system<typename detail::insertion_sort<list<T0, list<T1, list<T2, list<T3, list<T4, list<T5, list<T6, list<T7, list<T8, list<T9, dimensionless_type> > > > > > > > > > >::type> type;
-};
-
-#endif
-
-} // namespace units
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/operators.hpp b/contrib/restricted/boost/boost/units/operators.hpp
deleted file mode 100644
index 6941aaff09..0000000000
--- a/contrib/restricted/boost/boost/units/operators.hpp
+++ /dev/null
@@ -1,164 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_OPERATORS_HPP
-#define BOOST_UNITS_OPERATORS_HPP
-
-
-///
-/// \file
-/// \brief Compile time operators and typeof helper classes.
-/// \details
-/// These operators declare the compile-time operators needed to support dimensional
-/// analysis algebra. They require the use of Boost.Typeof, emulation or native.
-/// Typeof helper classes define result type for heterogeneous operators on value types.
-/// These must be defined through specialization for powers and roots.
-///
-
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-#include <boost/units/config.hpp>
-
-namespace boost {
-namespace units {
-
-#if BOOST_UNITS_HAS_TYPEOF
-
-#ifndef BOOST_UNITS_DOXYGEN
-
-// to avoid need for default constructor and eliminate divide by zero errors.
-namespace typeof_ {
-
-/// INTERNAL ONLY
-template<class T> T make();
-
-} // namespace typeof_
-
-#endif
-
-#if (BOOST_UNITS_HAS_BOOST_TYPEOF)
-
-template<typename X> struct unary_plus_typeof_helper
-{
- BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (+typeof_::make<X>()))
- typedef typename nested::type type;
-};
-
-template<typename X> struct unary_minus_typeof_helper
-{
- BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (-typeof_::make<X>()))
- typedef typename nested::type type;
-};
-
-template<typename X,typename Y> struct add_typeof_helper
-{
- BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (typeof_::make<X>()+typeof_::make<Y>()))
- typedef typename nested::type type;
-};
-
-template<typename X,typename Y> struct subtract_typeof_helper
-{
- BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (typeof_::make<X>()-typeof_::make<Y>()))
- typedef typename nested::type type;
-};
-
-template<typename X,typename Y> struct multiply_typeof_helper
-{
- BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (typeof_::make<X>()*typeof_::make<Y>()))
- typedef typename nested::type type;
-};
-
-template<typename X,typename Y> struct divide_typeof_helper
-{
- BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, (typeof_::make<X>()/typeof_::make<Y>()))
- typedef typename nested::type type;
-};
-
-#elif (BOOST_UNITS_HAS_MWERKS_TYPEOF)
-
-template<typename X> struct unary_plus_typeof_helper { typedef __typeof__((+typeof_::make<X>())) type; };
-template<typename X> struct unary_minus_typeof_helper { typedef __typeof__((-typeof_::make<X>())) type; };
-
-template<typename X,typename Y> struct add_typeof_helper { typedef __typeof__((typeof_::make<X>()+typeof_::make<Y>())) type; };
-template<typename X,typename Y> struct subtract_typeof_helper { typedef __typeof__((typeof_::make<X>()-typeof_::make<Y>())) type; };
-template<typename X,typename Y> struct multiply_typeof_helper { typedef __typeof__((typeof_::make<X>()*typeof_::make<Y>())) type; };
-template<typename X,typename Y> struct divide_typeof_helper { typedef __typeof__((typeof_::make<X>()/typeof_::make<Y>())) type; };
-
-#elif (BOOST_UNITS_HAS_GNU_TYPEOF) || defined(BOOST_UNITS_DOXYGEN)
-
-template<typename X> struct unary_plus_typeof_helper { typedef typeof((+typeof_::make<X>())) type; };
-template<typename X> struct unary_minus_typeof_helper { typedef typeof((-typeof_::make<X>())) type; };
-
-template<typename X,typename Y> struct add_typeof_helper { typedef typeof((typeof_::make<X>()+typeof_::make<Y>())) type; };
-template<typename X,typename Y> struct subtract_typeof_helper { typedef typeof((typeof_::make<X>()-typeof_::make<Y>())) type; };
-template<typename X,typename Y> struct multiply_typeof_helper { typedef typeof((typeof_::make<X>()*typeof_::make<Y>())) type; };
-template<typename X,typename Y> struct divide_typeof_helper { typedef typeof((typeof_::make<X>()/typeof_::make<Y>())) type; };
-
-#endif
-
-#else // BOOST_UNITS_HAS_TYPEOF
-
-template<typename X> struct unary_plus_typeof_helper { typedef X type; };
-template<typename X> struct unary_minus_typeof_helper { typedef X type; };
-
-template<typename X,typename Y> struct add_typeof_helper { BOOST_STATIC_ASSERT((is_same<X,Y>::value == true)); typedef X type; };
-template<typename X,typename Y> struct subtract_typeof_helper { BOOST_STATIC_ASSERT((is_same<X,Y>::value == true)); typedef X type; };
-template<typename X,typename Y> struct multiply_typeof_helper { BOOST_STATIC_ASSERT((is_same<X,Y>::value == true)); typedef X type; };
-template<typename X,typename Y> struct divide_typeof_helper { BOOST_STATIC_ASSERT((is_same<X,Y>::value == true)); typedef X type; };
-
-#endif // BOOST_UNITS_HAS_TYPEOF
-
-template<typename X,typename Y> struct power_typeof_helper;
-template<typename X,typename Y> struct root_typeof_helper;
-
-#ifdef BOOST_UNITS_DOXYGEN
-
-/// A helper used by @c pow to raise
-/// a runtime object to a compile time
-/// known exponent. This template is intended to
-/// be specialized. All specializations must
-/// conform to the interface shown here.
-/// @c Exponent will be either the exponent
-/// passed to @c pow or @c static_rational<N>
-/// for and integer argument, N.
-template<typename BaseType, typename Exponent>
-struct power_typeof_helper
-{
- /// specifies the result type
- typedef detail::unspecified type;
- /// Carries out the runtime calculation.
- static BOOST_CONSTEXPR type value(const BaseType& base);
-};
-
-/// A helper used by @c root to take a root
-/// of a runtime object using a compile time
-/// known index. This template is intended to
-/// be specialized. All specializations must
-/// conform to the interface shown here.
-/// @c Index will be either the type
-/// passed to @c pow or @c static_rational<N>
-/// for and integer argument, N.
-template<typename Radicand, typename Index>
-struct root_typeof_helper
-{
- /// specifies the result type
- typedef detail::unspecified type;
- /// Carries out the runtime calculation.
- static BOOST_CONSTEXPR type value(const Radicand& base);
-};
-
-#endif
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_OPERATORS_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions.hpp b/contrib/restricted/boost/boost/units/physical_dimensions.hpp
deleted file mode 100644
index 4137e1e03d..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions.hpp
+++ /dev/null
@@ -1,90 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2010 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_PHYSICAL_UNITS_HPP
-#define BOOST_UNITS_PHYSICAL_UNITS_HPP
-
-///
-/// \file
-/// \brief Physical dimensions according to the SI system.
-/// \details This header includes all physical dimension headers for both base
-/// and derived dimensions.
-///
-
-// Include all of the physical_dimension headers.
-
-// SI seven fundamental dimensions.
-#include <boost/units/physical_dimensions/amount.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/luminous_intensity.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/temperature.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-// Base dimensions are extended to include plane and solid angle for convenience.
-#include <boost/units/physical_dimensions/plane_angle.hpp>
-#include <boost/units/physical_dimensions/solid_angle.hpp>
-
-// Derived dimensions.
-#include <boost/units/physical_dimensions/absorbed_dose.hpp>
-#include <boost/units/physical_dimensions/acceleration.hpp>
-#include <boost/units/physical_dimensions/action.hpp>
-#include <boost/units/physical_dimensions/activity.hpp>
-#include <boost/units/physical_dimensions/angular_acceleration.hpp>
-#include <boost/units/physical_dimensions/angular_momentum.hpp>
-#include <boost/units/physical_dimensions/angular_velocity.hpp>
-#include <boost/units/physical_dimensions/area.hpp>
-#include <boost/units/physical_dimensions/capacitance.hpp>
-#include <boost/units/physical_dimensions/conductance.hpp>
-#include <boost/units/physical_dimensions/conductivity.hpp>
-#include <boost/units/physical_dimensions/dose_equivalent.hpp>
-#include <boost/units/physical_dimensions/dynamic_viscosity.hpp>
-#include <boost/units/physical_dimensions/electric_charge.hpp>
-#include <boost/units/physical_dimensions/electric_potential.hpp>
-#include <boost/units/physical_dimensions/energy.hpp>
-#include <boost/units/physical_dimensions/energy_density.hpp>
-#include <boost/units/physical_dimensions/force.hpp>
-#include <boost/units/physical_dimensions/frequency.hpp>
-#include <boost/units/physical_dimensions/heat_capacity.hpp>
-#include <boost/units/physical_dimensions/illuminance.hpp>
-#include <boost/units/physical_dimensions/impedance.hpp>
-#include <boost/units/physical_dimensions/inductance.hpp>
-#include <boost/units/physical_dimensions/kinematic_viscosity.hpp>
-#include <boost/units/physical_dimensions/luminance.hpp>
-#include <boost/units/physical_dimensions/luminous_flux.hpp>
-#include <boost/units/physical_dimensions/magnetic_field_intensity.hpp>
-#include <boost/units/physical_dimensions/magnetic_flux.hpp>
-#include <boost/units/physical_dimensions/magnetic_flux_density.hpp>
-#include <boost/units/physical_dimensions/mass_density.hpp>
-#include <boost/units/physical_dimensions/molar_energy.hpp>
-#include <boost/units/physical_dimensions/molar_heat_capacity.hpp>
-#include <boost/units/physical_dimensions/moment_of_inertia.hpp>
-#include <boost/units/physical_dimensions/momentum.hpp>
-#include <boost/units/physical_dimensions/permeability.hpp>
-#include <boost/units/physical_dimensions/permittivity.hpp>
-#include <boost/units/physical_dimensions/power.hpp>
-#include <boost/units/physical_dimensions/pressure.hpp>
-#include <boost/units/physical_dimensions/reluctance.hpp>
-#include <boost/units/physical_dimensions/resistance.hpp>
-#include <boost/units/physical_dimensions/resistivity.hpp>
-#include <boost/units/physical_dimensions/specific_energy.hpp>
-#include <boost/units/physical_dimensions/specific_heat_capacity.hpp>
-#include <boost/units/physical_dimensions/specific_volume.hpp>
-#include <boost/units/physical_dimensions/stress.hpp>
-#include <boost/units/physical_dimensions/surface_density.hpp>
-#include <boost/units/physical_dimensions/surface_tension.hpp>
-#include <boost/units/physical_dimensions/thermal_conductivity.hpp>
-#include <boost/units/physical_dimensions/torque.hpp>
-#include <boost/units/physical_dimensions/velocity.hpp>
-#include <boost/units/physical_dimensions/volume.hpp>
-#include <boost/units/physical_dimensions/wavenumber.hpp>
-
-#endif // BOOST_UNITS_PHYSICAL_UNITS_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/absorbed_dose.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/absorbed_dose.hpp
deleted file mode 100644
index c62ed09b6d..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/absorbed_dose.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ABSORBED_DOSE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_ABSORBED_DOSE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for absorbed dose : L^2 T^-2
-typedef derived_dimension<length_base_dimension,2,
- time_base_dimension,-2>::type absorbed_dose_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ABSORBED_DOSE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/acceleration.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/acceleration.hpp
deleted file mode 100644
index 8f25c86364..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/acceleration.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ACCELERATION_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_ACCELERATION_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for acceleration : L T^-2
-typedef derived_dimension<length_base_dimension,1,
- time_base_dimension,-2>::type acceleration_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ACCELERATION_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/action.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/action.hpp
deleted file mode 100644
index cf38d324bd..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/action.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ACTION_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_ACTION_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for action : L^2 M T^-1
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-1>::type action_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ACTION_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/activity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/activity.hpp
deleted file mode 100644
index 035cd44433..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/activity.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ACTIVITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_ACTIVITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for activity : T^-1
-typedef derived_dimension<time_base_dimension,-1>::type activity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ACTIVITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/amount.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/amount.hpp
deleted file mode 100644
index 6d9d4b3a48..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/amount.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_AMOUNT_BASE_DIMENSION_HPP
-#define BOOST_UNITS_AMOUNT_BASE_DIMENSION_HPP
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_dimension.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// base dimension of amount
-struct amount_base_dimension :
- boost::units::base_dimension<amount_base_dimension,-4>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::amount_base_dimension)
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-/// dimension of amount of substance (N)
-typedef amount_base_dimension::dimension_type amount_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_AMOUNT_BASE_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/angular_acceleration.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/angular_acceleration.hpp
deleted file mode 100644
index 79a3a14beb..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/angular_acceleration.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ANGULAR_ACCELERATION_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_ANGULAR_ACCELERATION_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/plane_angle.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for angular acceleration : T^-2 QP
-typedef derived_dimension<time_base_dimension,-2,
- plane_angle_base_dimension,1>::type angular_acceleration_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ANGULAR_ACCELERATION_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/angular_momentum.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/angular_momentum.hpp
deleted file mode 100644
index 0a86f88bc6..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/angular_momentum.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ANGULAR_MOMENTUM_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_ANGULAR_MOMENTUM_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/plane_angle.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for angular momentum : L^2 M T^-1 QP^-1
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-1,
- plane_angle_base_dimension,-1>::type angular_momentum_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ANGULAR_MOMENTUM_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/angular_velocity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/angular_velocity.hpp
deleted file mode 100644
index 5d7ea879b7..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/angular_velocity.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ANGULAR_VELOCITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_ANGULAR_VELOCITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/plane_angle.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for angular velocity : T^-1 QP
-typedef derived_dimension<time_base_dimension,-1,
- plane_angle_base_dimension,1>::type angular_velocity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ANGULAR_VELOCITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/area.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/area.hpp
deleted file mode 100644
index 0d8cb0991e..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/area.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_AREA_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_AREA_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for area : L^2
-typedef derived_dimension<length_base_dimension,2>::type area_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_AREA_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/capacitance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/capacitance.hpp
deleted file mode 100644
index e7019a7c5b..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/capacitance.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CAPACITANCE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_CAPACITANCE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for capacitance : L^-2 M^-1 T^4 I^2
-typedef derived_dimension<length_base_dimension,-2,
- mass_base_dimension,-1,
- time_base_dimension,4,
- current_base_dimension,2>::type capacitance_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CAPACITANCE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/conductance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/conductance.hpp
deleted file mode 100644
index 8405f92d39..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/conductance.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CONDUCTANCE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_CONDUCTANCE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for conductance : L^-2 M^-1 T^3 I^2
-typedef derived_dimension<length_base_dimension,-2,
- mass_base_dimension,-1,
- time_base_dimension,3,
- current_base_dimension,2>::type conductance_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CONDUCTANCE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/conductivity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/conductivity.hpp
deleted file mode 100644
index d255915a5c..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/conductivity.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CONDUCTIVITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_CONDUCTIVITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for conductivity : L^-3 M^-1 T^3 I^2
-typedef derived_dimension<length_base_dimension,-3,
- mass_base_dimension,-1,
- time_base_dimension,3,
- current_base_dimension,2>::type conductivity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CONDUCTIVITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/current.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/current.hpp
deleted file mode 100644
index 6fa0e8924c..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/current.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CURRENT_BASE_DIMENSION_HPP
-#define BOOST_UNITS_CURRENT_BASE_DIMENSION_HPP
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_dimension.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// base dimension of current
-struct current_base_dimension :
- boost::units::base_dimension<current_base_dimension,-6>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::current_base_dimension)
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-/// dimension of electric current (I)
-typedef current_base_dimension::dimension_type current_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CURRENT_BASE_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/dose_equivalent.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/dose_equivalent.hpp
deleted file mode 100644
index ae13d2f385..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/dose_equivalent.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DOSE_EQUIVALENT_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_DOSE_EQUIVALENT_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for dose equivalent : L^2 T^-2
-typedef derived_dimension<length_base_dimension,2,
- time_base_dimension,-2>::type dose_equivalent_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_DOSE_EQUIVALENT_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/dynamic_viscosity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/dynamic_viscosity.hpp
deleted file mode 100644
index 029f1fabea..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/dynamic_viscosity.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_DYNAMIC_VISCOSITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_DYNAMIC_VISCOSITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for dynamic viscosity : M L^-1 T^-1
-typedef derived_dimension<mass_base_dimension,1,
- length_base_dimension,-1,
- time_base_dimension,-1>::type dynamic_viscosity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_DYNAMIC_VISCOSITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/electric_charge.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/electric_charge.hpp
deleted file mode 100644
index 36836462c9..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/electric_charge.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ELECTRIC_CHARGE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_ELECTRIC_CHARGE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for electric charge : T^1 I^1
-typedef derived_dimension<time_base_dimension,1,
- current_base_dimension,1>::type electric_charge_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ELECTRIC_CHARGE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/electric_potential.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/electric_potential.hpp
deleted file mode 100644
index 1ef028c129..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/electric_potential.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ELECTRIC_POTENTIAL_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_ELECTRIC_POTENTIAL_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for electric potential : L^2 M T^-3 I^-1
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-3,
- current_base_dimension,-1>::type electric_potential_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ELECTRIC_POTENTIAL_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/energy.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/energy.hpp
deleted file mode 100644
index bf0dbe34a9..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/energy.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ENERGY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_ENERGY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for energy : L^2 M T^-2
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-2>::type energy_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ENERGY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/energy_density.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/energy_density.hpp
deleted file mode 100644
index d30e1e122b..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/energy_density.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ENERGY_DENSITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_ENERGY_DENSITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for energy density : L^-1 M^1 T^-2
-typedef derived_dimension<length_base_dimension,-1,
- mass_base_dimension,1,
- time_base_dimension,-2>::type energy_density_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ENERGY_DENSITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/force.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/force.hpp
deleted file mode 100644
index a1ed955b16..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/force.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_FORCE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_FORCE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for force : L M T^-2
-typedef derived_dimension<length_base_dimension,1,
- mass_base_dimension,1,
- time_base_dimension,-2>::type force_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_FORCE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/frequency.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/frequency.hpp
deleted file mode 100644
index e2af7ee048..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/frequency.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_FREQUENCY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_FREQUENCY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for frequency : T^-1
-typedef derived_dimension<time_base_dimension,-1>::type frequency_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_FREQUENCY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/heat_capacity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/heat_capacity.hpp
deleted file mode 100644
index 3cbfa57c22..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/heat_capacity.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_HEAT_CAPACITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_HEAT_CAPACITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/temperature.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for heat capacity : L^2 M T^-2 Theta^-1
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-2,
- temperature_base_dimension,-1>::type heat_capacity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_HEAT_CAPACITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/illuminance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/illuminance.hpp
deleted file mode 100644
index a24daf476a..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/illuminance.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ILLUMINANCE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_ILLUMINANCE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/luminous_intensity.hpp>
-#include <boost/units/physical_dimensions/solid_angle.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for illuminance : L^-2 I QS
-typedef derived_dimension<length_base_dimension,-2,
- luminous_intensity_base_dimension,1,
- solid_angle_base_dimension,1>::type illuminance_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ILLUMINANCE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/impedance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/impedance.hpp
deleted file mode 100644
index 177fc607e4..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/impedance.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_IMPEDANCE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_IMPEDANCE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for impedance : L^2 M T^-3 I^-2
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-3,
- current_base_dimension,-2>::type impedance_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_IMPEDANCE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/inductance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/inductance.hpp
deleted file mode 100644
index 1506364c30..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/inductance.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_INDUCTANCE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_INDUCTANCE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for inductance : L^2 M T^-2 I^-2
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-2,
- current_base_dimension,-2>::type inductance_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_INDUCTANCE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/information.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/information.hpp
deleted file mode 100644
index c0c7145583..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/information.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_INFORMATION_BASE_DIMENSION_HPP
-#define BOOST_UNITS_INFORMATION_BASE_DIMENSION_HPP
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_dimension.hpp>
-
-namespace boost {
-namespace units {
-
-/// base dimension of information
-struct information_base_dimension :
- boost::units::base_dimension<information_base_dimension, -700>
-{ };
-
-} // namespace units
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::information_base_dimension)
-
-#endif
-
-namespace boost {
-namespace units {
-
-/// dimension of information
-typedef information_base_dimension::dimension_type information_dimension;
-
-} // namespace units
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/kinematic_viscosity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/kinematic_viscosity.hpp
deleted file mode 100644
index e5c5261eef..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/kinematic_viscosity.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_KINEMATIC_VISCOSITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_KINEMATIC_VISCOSITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for kinematic viscosity : L^2 T^-1
-typedef derived_dimension<length_base_dimension,2,
- time_base_dimension,-1>::type kinematic_viscosity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_KINEMATIC_VISCOSITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/length.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/length.hpp
deleted file mode 100644
index 22bbec43c3..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/length.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_LENGTH_BASE_DIMENSION_HPP
-#define BOOST_UNITS_LENGTH_BASE_DIMENSION_HPP
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_dimension.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// base dimension of length
-struct length_base_dimension :
- boost::units::base_dimension<length_base_dimension, -9>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::length_base_dimension)
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-/// dimension of length (L)
-typedef length_base_dimension::dimension_type length_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_LENGTH_BASE_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/luminance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/luminance.hpp
deleted file mode 100644
index f2e6f24873..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/luminance.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_LUMINANCE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_LUMINANCE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/luminous_intensity.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for luminance : L^-2 I
-typedef derived_dimension<length_base_dimension,-2,
- luminous_intensity_base_dimension,1>::type luminance_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_LUMINANCE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/luminous_flux.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/luminous_flux.hpp
deleted file mode 100644
index 4c725efeeb..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/luminous_flux.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_LUMINOUS_FLUX_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_LUMINOUS_FLUX_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/luminous_intensity.hpp>
-#include <boost/units/physical_dimensions/solid_angle.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for luminous flux : I QS
-typedef derived_dimension<luminous_intensity_base_dimension,1,
- solid_angle_base_dimension,1>::type luminous_flux_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_LUMINOUS_FLUX_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/luminous_intensity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/luminous_intensity.hpp
deleted file mode 100644
index 1da041d99a..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/luminous_intensity.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_LUMINOUS_INTENSITY_BASE_DIMENSION_HPP
-#define BOOST_UNITS_LUMINOUS_INTENSITY_BASE_DIMENSION_HPP
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_dimension.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// base dimension of luminous intensity
-struct luminous_intensity_base_dimension :
- boost::units::base_dimension<luminous_intensity_base_dimension,-3>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::luminous_intensity_base_dimension)
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-/// dimension of luminous intensity (J)
-typedef luminous_intensity_base_dimension::dimension_type luminous_intensity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_LUMINOUS_INTENSITY_BASE_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_field_intensity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_field_intensity.hpp
deleted file mode 100644
index 665e5bc26c..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_field_intensity.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_MAGNETIC_FIELD_INTENSITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_MAGNETIC_FIELD_INTENSITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for magnetic field intensity : L^-1 I
-typedef derived_dimension<length_base_dimension,-1,
- current_base_dimension,1>::type magnetic_field_intensity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_MAGNETIC_FIELD_INTENSITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux.hpp
deleted file mode 100644
index c247e5605d..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_MAGNETIC_FLUX_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_MAGNETIC_FLUX_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for magnetic flux : L^2 M T^-2 I^-1
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-2,
- current_base_dimension,-1>::type magnetic_flux_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_MAGNETIC_FLUX_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux_density.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux_density.hpp
deleted file mode 100644
index d7fb7bbb14..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/magnetic_flux_density.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_MAGNETIC_FLUX_DENSITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_MAGNETIC_FLUX_DENSITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for magnetic flux density : M T^-2 I^-1
-typedef derived_dimension<mass_base_dimension,1,
- time_base_dimension,-2,
- current_base_dimension,-1>::type magnetic_flux_density_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_MAGNETIC_FLUX_DENSITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/mass.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/mass.hpp
deleted file mode 100644
index 7aaa75ccfc..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/mass.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_MASS_BASE_DIMENSION_HPP
-#define BOOST_UNITS_MASS_BASE_DIMENSION_HPP
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_dimension.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// base dimension of mass
-struct mass_base_dimension :
- boost::units::base_dimension<mass_base_dimension,-8>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::mass_base_dimension)
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-/// dimension of mass (M)
-typedef mass_base_dimension::dimension_type mass_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_MASS_BASE_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/mass_density.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/mass_density.hpp
deleted file mode 100644
index e632f2474f..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/mass_density.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_MASS_DENSITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_MASS_DENSITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for mass density : L^-3 M
-typedef derived_dimension<length_base_dimension,-3,
- mass_base_dimension,1>::type mass_density_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_MASS_DENSITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/molar_energy.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/molar_energy.hpp
deleted file mode 100644
index 2f83bbf551..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/molar_energy.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_MOLAR_ENERGY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_MOLAR_ENERGY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/amount.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for molar energy : L^2 M T^-2 N^-1
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-2,
- amount_base_dimension,-1>::type molar_energy_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_MOLAR_ENERGY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/molar_heat_capacity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/molar_heat_capacity.hpp
deleted file mode 100644
index 48e147bdb3..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/molar_heat_capacity.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_MOLAR_HEAT_CAPACITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_MOLAR_HEAT_CAPACITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/temperature.hpp>
-#include <boost/units/physical_dimensions/amount.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for molar heat capacity : L^2 M T^-2 Theta^-1 N^-1
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-2,
- temperature_base_dimension,-1,
- amount_base_dimension,-1>::type molar_heat_capacity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_MOLAR_HEAT_CAPACITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/moment_of_inertia.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/moment_of_inertia.hpp
deleted file mode 100644
index 58c85c80d1..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/moment_of_inertia.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_MOMENT_OF_INERTIA_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_MOMENT_OF_INERTIA_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/plane_angle.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for moment of inertia : L^2 M QP^-2
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- plane_angle_base_dimension,-2>::type moment_of_inertia_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_MOMENT_OF_INERTIA_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/momentum.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/momentum.hpp
deleted file mode 100644
index 13e8b8c67c..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/momentum.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_MOMENTUM_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_MOMENTUM_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for linear momentum : L M T^-1
-typedef derived_dimension<length_base_dimension,1,
- mass_base_dimension,1,
- time_base_dimension,-1>::type momentum_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_MOMENTUM_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/permeability.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/permeability.hpp
deleted file mode 100644
index a0ea30cdaa..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/permeability.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_PERMEABILITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_PERMEABILITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for permeability : L M T^-2 I^-2
-typedef derived_dimension<length_base_dimension,1,
- mass_base_dimension,1,
- time_base_dimension,-2,
- current_base_dimension,-2>::type permeability_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_PERMEABILITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/permittivity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/permittivity.hpp
deleted file mode 100644
index 01994c5cea..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/permittivity.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_PERMITTIVITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_PERMITTIVITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for permittivity : L^-3 M^-1 T^4 I^2
-typedef derived_dimension<length_base_dimension,-3,
- mass_base_dimension,-1,
- time_base_dimension,4,
- current_base_dimension,2>::type permittivity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_PERMITTIVITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/plane_angle.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/plane_angle.hpp
deleted file mode 100644
index ae700321f8..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/plane_angle.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_PLANE_ANGLE_BASE_DIMENSION_HPP
-#define BOOST_UNITS_PLANE_ANGLE_BASE_DIMENSION_HPP
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_dimension.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// base dimension of plane angle
-struct plane_angle_base_dimension :
- boost::units::base_dimension<plane_angle_base_dimension,-2>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::plane_angle_base_dimension)
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-/// base dimension of plane angle (QP)
-typedef plane_angle_base_dimension::dimension_type plane_angle_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_PLANE_ANGLE_BASE_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/power.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/power.hpp
deleted file mode 100644
index 77e04cf4ee..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/power.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_POWER_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_POWER_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for power : L^2 M T^-3
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-3>::type power_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_POWER_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/pressure.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/pressure.hpp
deleted file mode 100644
index 666b4c704b..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/pressure.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_PRESSURE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_PRESSURE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for pressure : L^-1 M T^-2
-typedef derived_dimension<length_base_dimension,-1,
- mass_base_dimension,1,
- time_base_dimension,-2>::type pressure_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_PRESSURE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/reluctance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/reluctance.hpp
deleted file mode 100644
index 56be33b480..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/reluctance.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_RELUCTANCE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_RELUCTANCE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for reluctance : L^-2 M^-1 T^2 I^2
-typedef derived_dimension<length_base_dimension,-2,
- mass_base_dimension,-1,
- time_base_dimension,2,
- current_base_dimension,2>::type reluctance_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_RELUCTANCE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/resistance.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/resistance.hpp
deleted file mode 100644
index 3b1491d2bf..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/resistance.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_RESISTANCE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_RESISTANCE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for resistance : L^2 M T^-3 I^-2
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-3,
- current_base_dimension,-2>::type resistance_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_RESISTANCE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/resistivity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/resistivity.hpp
deleted file mode 100644
index a82b900c47..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/resistivity.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_RESISTIVITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_RESISTIVITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for resistivity : L^3 M T^-3 I^-2
-typedef derived_dimension<length_base_dimension,3,
- mass_base_dimension,1,
- time_base_dimension,-3,
- current_base_dimension,-2>::type resistivity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_RESISTIVITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/solid_angle.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/solid_angle.hpp
deleted file mode 100644
index 1d035c02f8..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/solid_angle.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SOLID_ANGLE_BASE_DIMENSION_HPP
-#define BOOST_UNITS_SOLID_ANGLE_BASE_DIMENSION_HPP
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_dimension.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// base dimension of solid angle
-struct solid_angle_base_dimension :
- boost::units::base_dimension<solid_angle_base_dimension,-1>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::solid_angle_base_dimension)
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-/// base dimension of solid angle (QS)
-typedef solid_angle_base_dimension::dimension_type solid_angle_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SOLID_ANGLE_BASE_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/specific_energy.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/specific_energy.hpp
deleted file mode 100644
index e74a29371f..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/specific_energy.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SPECIFIC_ENERGY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_SPECIFIC_ENERGY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for specific energy : L^2 T^-2
-typedef derived_dimension<length_base_dimension,2,
- time_base_dimension,-2>::type specific_energy_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SPECIFIC_ENERGY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/specific_heat_capacity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/specific_heat_capacity.hpp
deleted file mode 100644
index 9e48faec0c..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/specific_heat_capacity.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SPECIFIC_HEAT_CAPACITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_SPECIFIC_HEAT_CAPACITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/temperature.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for specific heat capacity : L^2 T^-2 Theta^-1
-typedef derived_dimension<length_base_dimension,2,
- time_base_dimension,-2,
- temperature_base_dimension,-1>::type specific_heat_capacity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SPECIFIC_HEAT_CAPACITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/specific_volume.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/specific_volume.hpp
deleted file mode 100644
index 85ed8896b7..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/specific_volume.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SPECIFIC_VOLUME_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_SPECIFIC_VOLUME_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for specific volume : L^3 M^-1
-typedef derived_dimension<length_base_dimension,3,
- mass_base_dimension,-1>::type specific_volume_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SPECIFIC_VOLUME_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/stress.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/stress.hpp
deleted file mode 100644
index d989c8c405..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/stress.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_STRESS_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_STRESS_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for stress : L^-1 M T^-2
-typedef derived_dimension<length_base_dimension,-1,
- mass_base_dimension,1,
- time_base_dimension,-2>::type stress_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_STRESS_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/surface_density.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/surface_density.hpp
deleted file mode 100644
index 898e8f4a24..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/surface_density.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SURFACE_DENSITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_SURFACE_DENSITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for surface density : L^-2 M
-typedef derived_dimension<length_base_dimension,-2,
- mass_base_dimension,1>::type surface_density_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SURFACE_DENSITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/surface_tension.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/surface_tension.hpp
deleted file mode 100644
index 630509fd6d..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/surface_tension.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SURFACE_TENSION_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_SURFACE_TENSION_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for surface tension : M T^-2
-typedef derived_dimension<mass_base_dimension,1,
- time_base_dimension,-2>::type surface_tension_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SURFACE_TENSION_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/temperature.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/temperature.hpp
deleted file mode 100644
index f6bc788203..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/temperature.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_TEMPERATURE_BASE_DIMENSION_HPP
-#define BOOST_UNITS_TEMPERATURE_BASE_DIMENSION_HPP
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_dimension.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// base dimension of temperature
-struct temperature_base_dimension :
- boost::units::base_dimension<temperature_base_dimension,-5>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::temperature_base_dimension)
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-/// dimension of temperature (Theta)
-typedef temperature_base_dimension::dimension_type temperature_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_TEMPERATURE_BASE_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/thermal_conductivity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/thermal_conductivity.hpp
deleted file mode 100644
index abc82c7f18..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/thermal_conductivity.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_THERMAL_CONDUCTIVITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_THERMAL_CONDUCTIVITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-#include <boost/units/physical_dimensions/temperature.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for thermal_conductivity : L^1 M^1 T^-3 Theta^-1
-typedef derived_dimension<length_base_dimension,1,
- mass_base_dimension,1,
- time_base_dimension,-3,
- temperature_base_dimension,-1>::type thermal_conductivity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_THERMAL_CONDUCTIVITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/time.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/time.hpp
deleted file mode 100644
index 0b9a3e1f32..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/time.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_TIME_BASE_DIMENSION_HPP
-#define BOOST_UNITS_TIME_BASE_DIMENSION_HPP
-
-#include <boost/units/config.hpp>
-#include <boost/units/base_dimension.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// base dimension of time
-struct time_base_dimension :
- boost::units::base_dimension<time_base_dimension,-7>
-{ };
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TYPE(boost::units::time_base_dimension)
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-/// dimension of time (T)
-typedef time_base_dimension::dimension_type time_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_TIME_BASE_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/torque.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/torque.hpp
deleted file mode 100644
index 61c41a139f..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/torque.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_TORQUE_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_TORQUE_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/plane_angle.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for torque : L^2 M T^-2 QP^-1
-typedef derived_dimension<length_base_dimension,2,
- mass_base_dimension,1,
- time_base_dimension,-2,
- plane_angle_base_dimension,-1>::type torque_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_TORQUE_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/velocity.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/velocity.hpp
deleted file mode 100644
index eb3d41215a..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/velocity.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_VELOCITY_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_VELOCITY_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for velocity : L T^-1
-typedef derived_dimension<length_base_dimension,1,
- time_base_dimension,-1>::type velocity_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_VELOCITY_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/volume.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/volume.hpp
deleted file mode 100644
index a2cdd88f25..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/volume.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_VOLUME_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_VOLUME_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for volume : l^3
-typedef derived_dimension<length_base_dimension,3>::type volume_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_VOLUME_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/physical_dimensions/wavenumber.hpp b/contrib/restricted/boost/boost/units/physical_dimensions/wavenumber.hpp
deleted file mode 100644
index abaf0acc5d..0000000000
--- a/contrib/restricted/boost/boost/units/physical_dimensions/wavenumber.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_WAVENUMBER_DERIVED_DIMENSION_HPP
-#define BOOST_UNITS_WAVENUMBER_DERIVED_DIMENSION_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// derived dimension for wavenumber : L^-1
-typedef derived_dimension<length_base_dimension,-1>::type wavenumber_dimension;
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_WAVENUMBER_DERIVED_DIMENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/pow.hpp b/contrib/restricted/boost/boost/units/pow.hpp
deleted file mode 100644
index a6772eec67..0000000000
--- a/contrib/restricted/boost/boost/units/pow.hpp
+++ /dev/null
@@ -1,115 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_POW_HPP
-#define BOOST_UNITS_POW_HPP
-
-#include <boost/type_traits/is_integral.hpp>
-
-#include <boost/units/operators.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/detail/static_rational_power.hpp>
-
-/// \file
-/// \brief Raise values to exponents known at compile-time.
-
-namespace boost {
-
-namespace units {
-
-/// raise a value to a @c static_rational power.
-template<class Rat,class Y>
-BOOST_CONSTEXPR
-inline typename power_typeof_helper<Y,Rat>::type
-pow(const Y& x)
-{
- return power_typeof_helper<Y,Rat>::value(x);
-}
-
-/// raise a value to an integer power.
-template<long N,class Y>
-BOOST_CONSTEXPR
-inline typename power_typeof_helper<Y,static_rational<N> >::type
-pow(const Y& x)
-{
- return power_typeof_helper<Y,static_rational<N> >::value(x);
-}
-
-#ifndef BOOST_UNITS_DOXYGEN
-
-/// raise @c T to a @c static_rational power.
-template<class T, long N,long D>
-struct power_typeof_helper<T, static_rational<N,D> >
-{
- typedef typename mpl::if_<boost::is_integral<T>, double, T>::type internal_type;
- typedef detail::static_rational_power_impl<static_rational<N, D>, internal_type> impl;
- typedef typename impl::type type;
-
- static BOOST_CONSTEXPR type value(const T& x)
- {
- return impl::call(x);
- }
-};
-
-/// raise @c float to a @c static_rational power.
-template<long N,long D>
-struct power_typeof_helper<float, static_rational<N,D> >
-{
- // N.B. pathscale doesn't accept inheritance for some reason.
- typedef power_typeof_helper<double, static_rational<N,D> > base;
- typedef typename base::type type;
- static BOOST_CONSTEXPR type value(const double& x)
- {
- return base::value(x);
- }
-};
-
-#endif
-
-/// take the @c static_rational root of a value.
-template<class Rat,class Y>
-BOOST_CONSTEXPR
-typename root_typeof_helper<Y,Rat>::type
-root(const Y& x)
-{
- return root_typeof_helper<Y,Rat>::value(x);
-}
-
-/// take the integer root of a value.
-template<long N,class Y>
-BOOST_CONSTEXPR
-typename root_typeof_helper<Y,static_rational<N> >::type
-root(const Y& x)
-{
- return root_typeof_helper<Y,static_rational<N> >::value(x);
-}
-
-#ifndef BOOST_UNITS_DOXYGEN
-
-/// take @c static_rational root of an @c T
-template<class T, long N,long D>
-struct root_typeof_helper<T,static_rational<N,D> >
-{
- // N.B. pathscale doesn't accept inheritance for some reason.
- typedef power_typeof_helper<T, static_rational<D,N> > base;
- typedef typename base::type type;
- static BOOST_CONSTEXPR type value(const T& x)
- {
- return(base::value(x));
- }
-};
-
-#endif
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_STATIC_RATIONAL_HPP
diff --git a/contrib/restricted/boost/boost/units/quantity.hpp b/contrib/restricted/boost/boost/units/quantity.hpp
deleted file mode 100644
index c6ae6e73d9..0000000000
--- a/contrib/restricted/boost/boost/units/quantity.hpp
+++ /dev/null
@@ -1,1280 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_QUANTITY_HPP
-#define BOOST_UNITS_QUANTITY_HPP
-
-#include <algorithm>
-
-#include <boost/config.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/not.hpp>
-#include <boost/mpl/or.hpp>
-#include <boost/mpl/assert.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <boost/type_traits/is_arithmetic.hpp>
-#include <boost/type_traits/is_convertible.hpp>
-#include <boost/type_traits/is_integral.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/dimensionless_type.hpp>
-#include <boost/units/homogeneous_system.hpp>
-#include <boost/units/operators.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/detail/dimensionless_unit.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-template<class T, class Enable = void>
-struct is_base_unit : mpl::false_ {};
-
-template<class T>
-struct is_base_unit<T, typename T::boost_units_is_base_unit_type> : mpl::true_ {};
-
-template<class Source, class Destination>
-struct is_narrowing_conversion_impl : mpl::bool_<(sizeof(Source) > sizeof(Destination))> {};
-
-template<class Source, class Destination>
-struct is_non_narrowing_conversion :
- mpl::and_<
- boost::is_convertible<Source, Destination>,
- mpl::not_<
- mpl::and_<
- boost::is_arithmetic<Source>,
- boost::is_arithmetic<Destination>,
- mpl::or_<
- mpl::and_<
- is_integral<Destination>,
- mpl::not_<is_integral<Source> >
- >,
- is_narrowing_conversion_impl<Source, Destination>
- >
- >
- >
- >
-{};
-
-template<>
-struct is_non_narrowing_conversion<long double, double> : mpl::false_ {};
-
-// msvc 7.1 needs extra disambiguation
-template<class T, class U>
-struct disable_if_is_same
-{
- typedef void type;
-};
-
-template<class T>
-struct disable_if_is_same<T, T> {};
-
-}
-
-/// class declaration
-template<class Unit,class Y>
-class quantity
-{
- // base units are not the same as units.
- BOOST_MPL_ASSERT_NOT((detail::is_base_unit<Unit>));
- enum { force_instantiation_of_unit = sizeof(Unit) };
- typedef void (quantity::*unspecified_null_pointer_constant_type)(int*******);
- public:
- typedef quantity<Unit,Y> this_type;
-
- typedef Y value_type;
- typedef Unit unit_type;
-
- BOOST_CONSTEXPR quantity() : val_()
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- BOOST_CONSTEXPR quantity(unspecified_null_pointer_constant_type) : val_()
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- BOOST_CONSTEXPR quantity(const this_type& source) : val_(source.val_)
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- // Need to make sure that the destructor of
- // Unit which contains the checking is instantiated,
- // on sun.
- #ifdef __SUNPRO_CC
- ~quantity() {
- unit_type force_unit_instantiation;
- }
- #endif
-
- //~quantity() { }
-
- BOOST_CXX14_CONSTEXPR this_type& operator=(const this_type& source)
- {
- val_ = source.val_;
-
- return *this;
- }
-
- #ifndef BOOST_NO_SFINAE
-
- /// implicit conversion between value types is allowed if allowed for value types themselves
- template<class YY>
- BOOST_CONSTEXPR quantity(const quantity<Unit,YY>& source,
- typename boost::enable_if<detail::is_non_narrowing_conversion<YY, Y> >::type* = 0) :
- val_(source.value())
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- /// implicit conversion between value types is not allowed if not allowed for value types themselves
- template<class YY>
- explicit BOOST_CONSTEXPR quantity(const quantity<Unit,YY>& source,
- typename boost::disable_if<detail::is_non_narrowing_conversion<YY, Y> >::type* = 0) :
- val_(static_cast<Y>(source.value()))
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- #else
-
- /// implicit conversion between value types is allowed if allowed for value types themselves
- template<class YY>
- BOOST_CONSTEXPR quantity(const quantity<Unit,YY>& source) :
- val_(source.value())
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- BOOST_STATIC_ASSERT((boost::is_convertible<YY, Y>::value == true));
- }
-
- #endif
-
- /// implicit assignment between value types is allowed if allowed for value types themselves
- template<class YY>
- BOOST_CXX14_CONSTEXPR this_type& operator=(const quantity<Unit,YY>& source)
- {
- BOOST_STATIC_ASSERT((boost::is_convertible<YY, Y>::value == true));
-
- *this = this_type(source);
-
- return *this;
- }
-
- #ifndef BOOST_NO_SFINAE
-
- /// explicit conversion between different unit systems is allowed if implicit conversion is disallowed
- template<class Unit2,class YY>
- explicit
- BOOST_CONSTEXPR quantity(const quantity<Unit2,YY>& source,
- typename boost::disable_if<
- mpl::and_<
- //is_implicitly_convertible should be undefined when the
- //units are not convertible at all
- typename is_implicitly_convertible<Unit2,Unit>::type,
- detail::is_non_narrowing_conversion<YY, Y>
- >,
- typename detail::disable_if_is_same<Unit, Unit2>::type
- >::type* = 0)
- : val_(conversion_helper<quantity<Unit2,YY>,this_type>::convert(source).value())
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- BOOST_STATIC_ASSERT((boost::is_convertible<YY,Y>::value == true));
- }
-
- /// implicit conversion between different unit systems is allowed if each fundamental dimension is implicitly convertible
- template<class Unit2,class YY>
- BOOST_CONSTEXPR quantity(const quantity<Unit2,YY>& source,
- typename boost::enable_if<
- mpl::and_<
- typename is_implicitly_convertible<Unit2,Unit>::type,
- detail::is_non_narrowing_conversion<YY, Y>
- >,
- typename detail::disable_if_is_same<Unit, Unit2>::type
- >::type* = 0)
- : val_(conversion_helper<quantity<Unit2,YY>,this_type>::convert(source).value())
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- BOOST_STATIC_ASSERT((boost::is_convertible<YY,Y>::value == true));
- }
-
- #else
-
- /// without SFINAE we can't distinguish between explicit and implicit conversions so
- /// the conversion is always explicit
- template<class Unit2,class YY>
- explicit BOOST_CONSTEXPR quantity(const quantity<Unit2,YY>& source)
- : val_(conversion_helper<quantity<Unit2,YY>,this_type>::convert(source).value())
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- BOOST_STATIC_ASSERT((boost::is_convertible<YY,Y>::value == true));
- }
-
- #endif
-
- /// implicit assignment between different unit systems is allowed if each fundamental dimension is implicitly convertible
- template<class Unit2,class YY>
- BOOST_CXX14_CONSTEXPR this_type& operator=(const quantity<Unit2,YY>& source)
- {
-
- BOOST_STATIC_ASSERT((is_implicitly_convertible<Unit2,unit_type>::value == true));
- BOOST_STATIC_ASSERT((boost::is_convertible<YY,Y>::value == true));
-
- *this = this_type(source);
-
- return *this;
- }
-
- BOOST_CONSTEXPR const value_type& value() const { return val_; } ///< constant accessor to value
-
- ///< can add a quantity of the same type if add_typeof_helper<value_type,value_type>::type is convertible to value_type
- template<class Unit2, class YY>
- BOOST_CXX14_CONSTEXPR this_type& operator+=(const quantity<Unit2, YY>& source)
- {
- BOOST_STATIC_ASSERT((boost::is_same<typename add_typeof_helper<Unit, Unit2>::type, Unit>::value));
- val_ += source.value();
- return *this;
- }
-
- ///< can subtract a quantity of the same type if subtract_typeof_helper<value_type,value_type>::type is convertible to value_type
- template<class Unit2, class YY>
- BOOST_CXX14_CONSTEXPR this_type& operator-=(const quantity<Unit2, YY>& source)
- {
- BOOST_STATIC_ASSERT((boost::is_same<typename subtract_typeof_helper<Unit, Unit2>::type, Unit>::value));
- val_ -= source.value();
- return *this;
- }
-
- template<class Unit2, class YY>
- BOOST_CXX14_CONSTEXPR this_type& operator*=(const quantity<Unit2, YY>& source)
- {
- BOOST_STATIC_ASSERT((boost::is_same<typename multiply_typeof_helper<Unit, Unit2>::type, Unit>::value));
- val_ *= source.value();
- return *this;
- }
-
- template<class Unit2, class YY>
- BOOST_CXX14_CONSTEXPR this_type& operator/=(const quantity<Unit2, YY>& source)
- {
- BOOST_STATIC_ASSERT((boost::is_same<typename divide_typeof_helper<Unit, Unit2>::type, Unit>::value));
- val_ /= source.value();
- return *this;
- }
-
- ///< can multiply a quantity by a scalar value_type if multiply_typeof_helper<value_type,value_type>::type is convertible to value_type
- BOOST_CXX14_CONSTEXPR this_type& operator*=(const value_type& source) { val_ *= source; return *this; }
- ///< can divide a quantity by a scalar value_type if divide_typeof_helper<value_type,value_type>::type is convertible to value_type
- BOOST_CXX14_CONSTEXPR this_type& operator/=(const value_type& source) { val_ /= source; return *this; }
-
- /// Construct quantity directly from @c value_type (potentially dangerous).
- static BOOST_CONSTEXPR this_type from_value(const value_type& val) { return this_type(val, 0); }
-
- protected:
- explicit BOOST_CONSTEXPR quantity(const value_type& val, int) : val_(val) { }
-
- private:
- value_type val_;
-};
-
-/// Specialization for dimensionless quantities. Implicit conversions between
-/// unit systems are allowed because all dimensionless quantities are equivalent.
-/// Implicit construction and assignment from and conversion to @c value_type is
-/// also allowed.
-template<class System,class Y>
-class quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System),Y>
-{
- public:
- typedef quantity<unit<dimensionless_type,System>,Y> this_type;
-
- typedef Y value_type;
- typedef System system_type;
- typedef dimensionless_type dimension_type;
- typedef unit<dimension_type,system_type> unit_type;
-
- BOOST_CONSTEXPR quantity() : val_()
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- /// construction from raw @c value_type is allowed
- BOOST_CONSTEXPR quantity(value_type val) : val_(val)
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- BOOST_CONSTEXPR quantity(const this_type& source) : val_(source.val_)
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- //~quantity() { }
-
- BOOST_CXX14_CONSTEXPR this_type& operator=(const this_type& source)
- {
- val_ = source.val_;
-
- return *this;
- }
-
- #ifndef BOOST_NO_SFINAE
-
- /// implicit conversion between value types is allowed if allowed for value types themselves
- template<class YY>
- BOOST_CONSTEXPR quantity(const quantity<unit<dimension_type,system_type>,YY>& source,
- typename boost::enable_if<detail::is_non_narrowing_conversion<YY, Y> >::type* = 0) :
- val_(source.value())
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- /// implicit conversion between value types is not allowed if not allowed for value types themselves
- template<class YY>
- explicit BOOST_CONSTEXPR quantity(const quantity<unit<dimension_type,system_type>,YY>& source,
- typename boost::disable_if<detail::is_non_narrowing_conversion<YY, Y> >::type* = 0) :
- val_(static_cast<Y>(source.value()))
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- #else
-
- /// implicit conversion between value types is allowed if allowed for value types themselves
- template<class YY>
- BOOST_CONSTEXPR quantity(const quantity<unit<dimension_type,system_type>,YY>& source) :
- val_(source.value())
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- BOOST_STATIC_ASSERT((boost::is_convertible<YY, Y>::value == true));
- }
-
- #endif
-
- /// implicit assignment between value types is allowed if allowed for value types themselves
- template<class YY>
- BOOST_CXX14_CONSTEXPR this_type& operator=(const quantity<unit<dimension_type,system_type>,YY>& source)
- {
- BOOST_STATIC_ASSERT((boost::is_convertible<YY,Y>::value == true));
-
- *this = this_type(source);
-
- return *this;
- }
-
- #if 1
-
- /// implicit conversion between different unit systems is allowed
- template<class System2, class Y2>
- BOOST_CONSTEXPR quantity(const quantity<unit<dimensionless_type, System2>,Y2>& source,
- #ifdef __SUNPRO_CC
- typename boost::enable_if<
- boost::mpl::and_<
- detail::is_non_narrowing_conversion<Y2, Y>,
- detail::is_dimensionless_system<System2>
- >
- >::type* = 0
- #else
- typename boost::enable_if<detail::is_non_narrowing_conversion<Y2, Y> >::type* = 0,
- typename detail::disable_if_is_same<System, System2>::type* = 0,
- typename boost::enable_if<detail::is_dimensionless_system<System2> >::type* = 0
- #endif
- ) :
- val_(source.value())
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- /// implicit conversion between different unit systems is allowed
- template<class System2, class Y2>
- explicit BOOST_CONSTEXPR quantity(const quantity<unit<dimensionless_type, System2>,Y2>& source,
- #ifdef __SUNPRO_CC
- typename boost::enable_if<
- boost::mpl::and_<
- boost::mpl::not_<detail::is_non_narrowing_conversion<Y2, Y> >,
- detail::is_dimensionless_system<System2>
- >
- >::type* = 0
- #else
- typename boost::disable_if<detail::is_non_narrowing_conversion<Y2, Y> >::type* = 0,
- typename detail::disable_if_is_same<System, System2>::type* = 0,
- typename boost::enable_if<detail::is_dimensionless_system<System2> >::type* = 0
- #endif
- ) :
- val_(static_cast<Y>(source.value()))
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- #else
-
- /// implicit conversion between different unit systems is allowed
- template<class System2, class Y2>
- BOOST_CONSTEXPR quantity(const quantity<unit<dimensionless_type,homogeneous_system<System2> >,Y2>& source) :
- val_(source.value())
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- BOOST_STATIC_ASSERT((boost::is_convertible<Y2, Y>::value == true));
- }
-
- #endif
-
- /// conversion between different unit systems is explicit when
- /// the units are not equivalent.
- template<class System2, class Y2>
- explicit BOOST_CONSTEXPR quantity(const quantity<unit<dimensionless_type, System2>,Y2>& source,
- typename boost::disable_if<detail::is_dimensionless_system<System2> >::type* = 0) :
- val_(conversion_helper<quantity<unit<dimensionless_type, System2>,Y2>, this_type>::convert(source).value())
- {
- BOOST_UNITS_CHECK_LAYOUT_COMPATIBILITY(this_type, Y);
- }
-
- #ifndef __SUNPRO_CC
-
- /// implicit assignment between different unit systems is allowed
- template<class System2>
- BOOST_CXX14_CONSTEXPR this_type& operator=(const quantity<BOOST_UNITS_DIMENSIONLESS_UNIT(System2),Y>& source)
- {
- *this = this_type(source);
-
- return *this;
- }
-
- #endif
-
- /// implicit conversion to @c value_type is allowed
- BOOST_CONSTEXPR operator value_type() const { return val_; }
-
- BOOST_CONSTEXPR const value_type& value() const { return val_; } ///< constant accessor to value
-
- ///< can add a quantity of the same type if add_typeof_helper<value_type,value_type>::type is convertible to value_type
- BOOST_CXX14_CONSTEXPR this_type& operator+=(const this_type& source) { val_ += source.val_; return *this; }
-
- ///< can subtract a quantity of the same type if subtract_typeof_helper<value_type,value_type>::type is convertible to value_type
- BOOST_CXX14_CONSTEXPR this_type& operator-=(const this_type& source) { val_ -= source.val_; return *this; }
-
- ///< can multiply a quantity by a scalar value_type if multiply_typeof_helper<value_type,value_type>::type is convertible to value_type
- BOOST_CXX14_CONSTEXPR this_type& operator*=(const value_type& val) { val_ *= val; return *this; }
-
- ///< can divide a quantity by a scalar value_type if divide_typeof_helper<value_type,value_type>::type is convertible to value_type
- BOOST_CXX14_CONSTEXPR this_type& operator/=(const value_type& val) { val_ /= val; return *this; }
-
- /// Construct quantity directly from @c value_type.
- static BOOST_CONSTEXPR this_type from_value(const value_type& val) { return this_type(val); }
-
- private:
- value_type val_;
-};
-
-#ifdef BOOST_MSVC
-// HACK: For some obscure reason msvc 8.0 needs these specializations
-template<class System, class T>
-class quantity<unit<int, System>, T> {};
-template<class T>
-class quantity<int, T> {};
-#endif
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::quantity, 2)
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-/// helper class for quantity_cast
-template<class X,class Y> struct quantity_cast_helper;
-
-/// specialization for casting to the value type
-template<class Y,class X,class Unit>
-struct quantity_cast_helper<Y,quantity<Unit,X> >
-{
- typedef Y type;
-
- BOOST_CONSTEXPR type operator()(quantity<Unit,X>& source) const { return const_cast<X&>(source.value()); }
-};
-
-/// specialization for casting to the value type
-template<class Y,class X,class Unit>
-struct quantity_cast_helper<Y,const quantity<Unit,X> >
-{
- typedef Y type;
-
- BOOST_CONSTEXPR type operator()(const quantity<Unit,X>& source) const { return source.value(); }
-};
-
-} // namespace detail
-
-/// quantity_cast provides mutating access to underlying quantity value_type
-template<class X,class Y>
-inline
-BOOST_CONSTEXPR
-X
-quantity_cast(Y& source)
-{
- return detail::quantity_cast_helper<X,Y>()(source);
-}
-
-template<class X,class Y>
-inline
-BOOST_CONSTEXPR
-X
-quantity_cast(const Y& source)
-{
- return detail::quantity_cast_helper<X,const Y>()(source);
-}
-
-/// swap quantities
-template<class Unit,class Y>
-inline void swap(quantity<Unit,Y>& lhs, quantity<Unit,Y>& rhs)
-{
- using std::swap;
- swap(quantity_cast<Y&>(lhs),quantity_cast<Y&>(rhs));
-}
-
-/// specialize unary plus typeof helper
-/// INTERNAL ONLY
-template<class Unit,class Y>
-struct unary_plus_typeof_helper< quantity<Unit,Y> >
-{
- typedef typename unary_plus_typeof_helper<Y>::type value_type;
- typedef typename unary_plus_typeof_helper<Unit>::type unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// specialize unary minus typeof helper
-/// INTERNAL ONLY
-template<class Unit,class Y>
-struct unary_minus_typeof_helper< quantity<Unit,Y> >
-{
- typedef typename unary_minus_typeof_helper<Y>::type value_type;
- typedef typename unary_minus_typeof_helper<Unit>::type unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// specialize add typeof helper
-/// INTERNAL ONLY
-template<class Unit1,
- class Unit2,
- class X,
- class Y>
-struct add_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >
-{
- typedef typename add_typeof_helper<X,Y>::type value_type;
- typedef typename add_typeof_helper<Unit1,Unit2>::type unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// for sun CC we need to invoke SFINAE at
-/// the top level, otherwise it will silently
-/// return int.
-template<class Dim1, class System1,
- class Dim2, class System2,
- class X,
- class Y>
-struct add_typeof_helper< quantity<unit<Dim1, System1>,X>,quantity<unit<Dim2, System2>,Y> >
-{
-};
-
-template<class Dim,
- class System,
- class X,
- class Y>
-struct add_typeof_helper< quantity<unit<Dim, System>,X>,quantity<unit<Dim, System>,Y> >
-{
- typedef typename add_typeof_helper<X,Y>::type value_type;
- typedef unit<Dim, System> unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// specialize subtract typeof helper
-/// INTERNAL ONLY
-template<class Unit1,
- class Unit2,
- class X,
- class Y>
-struct subtract_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >
-{
- typedef typename subtract_typeof_helper<X,Y>::type value_type;
- typedef typename subtract_typeof_helper<Unit1,Unit2>::type unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-// Force adding different units to fail on sun.
-template<class Dim1, class System1,
- class Dim2, class System2,
- class X,
- class Y>
-struct subtract_typeof_helper< quantity<unit<Dim1, System1>,X>,quantity<unit<Dim2, System2>,Y> >
-{
-};
-
-template<class Dim,
- class System,
- class X,
- class Y>
-struct subtract_typeof_helper< quantity<unit<Dim, System>,X>,quantity<unit<Dim, System>,Y> >
-{
- typedef typename subtract_typeof_helper<X,Y>::type value_type;
- typedef unit<Dim, System> unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// scalar times unit typeof helper
-/// INTERNAL ONLY
-template<class System,
- class Dim,
- class X>
-struct multiply_typeof_helper< X,unit<Dim,System> >
-{
- typedef X value_type;
- typedef unit<Dim,System> unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// unit times scalar typeof helper
-/// INTERNAL ONLY
-template<class System,
- class Dim,
- class X>
-struct multiply_typeof_helper< unit<Dim,System>,X >
-{
- typedef X value_type;
- typedef unit<Dim,System> unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// scalar times quantity typeof helper
-/// INTERNAL ONLY
-template<class Unit,
- class X,
- class Y>
-struct multiply_typeof_helper< X,quantity<Unit,Y> >
-{
- typedef typename multiply_typeof_helper<X,Y>::type value_type;
- typedef Unit unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// disambiguate
-/// INTERNAL ONLY
-template<class Unit,
- class Y>
-struct multiply_typeof_helper< one,quantity<Unit,Y> >
-{
- typedef quantity<Unit,Y> type;
-};
-
-/// quantity times scalar typeof helper
-/// INTERNAL ONLY
-template<class Unit,
- class X,
- class Y>
-struct multiply_typeof_helper< quantity<Unit,X>,Y >
-{
- typedef typename multiply_typeof_helper<X,Y>::type value_type;
- typedef Unit unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// disambiguate
-/// INTERNAL ONLY
-template<class Unit,
- class X>
-struct multiply_typeof_helper< quantity<Unit,X>,one >
-{
- typedef quantity<Unit,X> type;
-};
-
-/// unit times quantity typeof helper
-/// INTERNAL ONLY
-template<class Unit,
- class System,
- class Dim,
- class X>
-struct multiply_typeof_helper< unit<Dim,System>,quantity<Unit,X> >
-{
- typedef X value_type;
- typedef typename multiply_typeof_helper< unit<Dim,System>,Unit >::type unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// quantity times unit typeof helper
-/// INTERNAL ONLY
-template<class Unit,
- class System,
- class Dim,
- class X>
-struct multiply_typeof_helper< quantity<Unit,X>,unit<Dim,System> >
-{
- typedef X value_type;
- typedef typename multiply_typeof_helper< Unit,unit<Dim,System> >::type unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// quantity times quantity typeof helper
-/// INTERNAL ONLY
-template<class Unit1,
- class Unit2,
- class X,
- class Y>
-struct multiply_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >
-{
- typedef typename multiply_typeof_helper<X,Y>::type value_type;
- typedef typename multiply_typeof_helper<Unit1,Unit2>::type unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// scalar divided by unit typeof helper
-/// INTERNAL ONLY
-template<class System,
- class Dim,
- class X>
-struct divide_typeof_helper< X,unit<Dim,System> >
-{
- typedef X value_type;
- typedef typename power_typeof_helper< unit<Dim,System>,static_rational<-1> >::type unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// unit divided by scalar typeof helper
-/// INTERNAL ONLY
-template<class System,
- class Dim,
- class X>
-struct divide_typeof_helper< unit<Dim,System>,X >
-{
- typedef typename divide_typeof_helper<X,X>::type value_type;
- typedef unit<Dim,System> unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// scalar divided by quantity typeof helper
-/// INTERNAL ONLY
-template<class Unit,
- class X,
- class Y>
-struct divide_typeof_helper< X,quantity<Unit,Y> >
-{
- typedef typename divide_typeof_helper<X,Y>::type value_type;
- typedef typename power_typeof_helper< Unit,static_rational<-1> >::type unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// disambiguate
-/// INTERNAL ONLY
-template<class Unit,
- class Y>
-struct divide_typeof_helper< one,quantity<Unit,Y> >
-{
- typedef quantity<Unit,Y> type;
-};
-
-/// quantity divided by scalar typeof helper
-/// INTERNAL ONLY
-template<class Unit,
- class X,
- class Y>
-struct divide_typeof_helper< quantity<Unit,X>,Y >
-{
- typedef typename divide_typeof_helper<X,Y>::type value_type;
- typedef Unit unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// disambiguate
-/// INTERNAL ONLY
-template<class Unit,
- class X>
-struct divide_typeof_helper< quantity<Unit,X>,one >
-{
- typedef quantity<Unit,X> type;
-};
-
-/// unit divided by quantity typeof helper
-/// INTERNAL ONLY
-template<class Unit,
- class System,
- class Dim,
- class X>
-struct divide_typeof_helper< unit<Dim,System>,quantity<Unit,X> >
-{
- typedef typename divide_typeof_helper<X,X>::type value_type;
- typedef typename divide_typeof_helper< unit<Dim,System>,Unit >::type unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// quantity divided by unit typeof helper
-/// INTERNAL ONLY
-template<class Unit,
- class System,
- class Dim,
- class X>
-struct divide_typeof_helper< quantity<Unit,X>,unit<Dim,System> >
-{
- typedef X value_type;
- typedef typename divide_typeof_helper< Unit,unit<Dim,System> >::type unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// quantity divided by quantity typeof helper
-/// INTERNAL ONLY
-template<class Unit1,
- class Unit2,
- class X,
- class Y>
-struct divide_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >
-{
- typedef typename divide_typeof_helper<X,Y>::type value_type;
- typedef typename divide_typeof_helper<Unit1,Unit2>::type unit_type;
- typedef quantity<unit_type,value_type> type;
-};
-
-/// specialize power typeof helper
-/// INTERNAL ONLY
-template<class Unit,long N,long D,class Y>
-struct power_typeof_helper< quantity<Unit,Y>,static_rational<N,D> >
-{
- typedef typename power_typeof_helper<Y,static_rational<N,D> >::type value_type;
- typedef typename power_typeof_helper<Unit,static_rational<N,D> >::type unit_type;
- typedef quantity<unit_type,value_type> type;
-
- static BOOST_CONSTEXPR type value(const quantity<Unit,Y>& x)
- {
- return type::from_value(power_typeof_helper<Y,static_rational<N,D> >::value(x.value()));
- }
-};
-
-/// specialize root typeof helper
-/// INTERNAL ONLY
-template<class Unit,long N,long D,class Y>
-struct root_typeof_helper< quantity<Unit,Y>,static_rational<N,D> >
-{
- typedef typename root_typeof_helper<Y,static_rational<N,D> >::type value_type;
- typedef typename root_typeof_helper<Unit,static_rational<N,D> >::type unit_type;
- typedef quantity<unit_type,value_type> type;
-
- static BOOST_CONSTEXPR type value(const quantity<Unit,Y>& x)
- {
- return type::from_value(root_typeof_helper<Y,static_rational<N,D> >::value(x.value()));
- }
-};
-
-/// runtime unit times scalar
-/// INTERNAL ONLY
-template<class System,
- class Dim,
- class Y>
-inline
-BOOST_CONSTEXPR
-typename multiply_typeof_helper< unit<Dim,System>,Y >::type
-operator*(const unit<Dim,System>&,const Y& rhs)
-{
- typedef typename multiply_typeof_helper< unit<Dim,System>,Y >::type type;
-
- return type::from_value(rhs);
-}
-
-/// runtime unit divided by scalar
-template<class System,
- class Dim,
- class Y>
-inline
-BOOST_CONSTEXPR
-typename divide_typeof_helper< unit<Dim,System>,Y >::type
-operator/(const unit<Dim,System>&,const Y& rhs)
-{
- typedef typename divide_typeof_helper<unit<Dim,System>,Y>::type type;
-
- return type::from_value(Y(1)/rhs);
-}
-
-/// runtime scalar times unit
-template<class System,
- class Dim,
- class Y>
-inline
-BOOST_CONSTEXPR
-typename multiply_typeof_helper< Y,unit<Dim,System> >::type
-operator*(const Y& lhs,const unit<Dim,System>&)
-{
- typedef typename multiply_typeof_helper< Y,unit<Dim,System> >::type type;
-
- return type::from_value(lhs);
-}
-
-/// runtime scalar divided by unit
-template<class System,
- class Dim,
- class Y>
-inline
-BOOST_CONSTEXPR
-typename divide_typeof_helper< Y,unit<Dim,System> >::type
-operator/(const Y& lhs,const unit<Dim,System>&)
-{
- typedef typename divide_typeof_helper< Y,unit<Dim,System> >::type type;
-
- return type::from_value(lhs);
-}
-
-///// runtime quantity times scalar
-//template<class Unit,
-// class X,
-// class Y>
-//inline
-//BOOST_CONSTEXPR
-//typename multiply_typeof_helper< quantity<Unit,X>,Y >::type
-//operator*(const quantity<Unit,X>& lhs,const Y& rhs)
-//{
-// typedef typename multiply_typeof_helper< quantity<Unit,X>,Y >::type type;
-//
-// return type::from_value(lhs.value()*rhs);
-//}
-//
-///// runtime scalar times quantity
-//template<class Unit,
-// class X,
-// class Y>
-//inline
-//BOOST_CONSTEXPR
-//typename multiply_typeof_helper< X,quantity<Unit,Y> >::type
-//operator*(const X& lhs,const quantity<Unit,Y>& rhs)
-//{
-// typedef typename multiply_typeof_helper< X,quantity<Unit,Y> >::type type;
-//
-// return type::from_value(lhs*rhs.value());
-//}
-
-/// runtime quantity times scalar
-template<class Unit,
- class X>
-inline
-BOOST_CONSTEXPR
-typename multiply_typeof_helper< quantity<Unit,X>,X >::type
-operator*(const quantity<Unit,X>& lhs,const X& rhs)
-{
- typedef typename multiply_typeof_helper< quantity<Unit,X>,X >::type type;
-
- return type::from_value(lhs.value()*rhs);
-}
-
-/// runtime scalar times quantity
-template<class Unit,
- class X>
-inline
-BOOST_CONSTEXPR
-typename multiply_typeof_helper< X,quantity<Unit,X> >::type
-operator*(const X& lhs,const quantity<Unit,X>& rhs)
-{
- typedef typename multiply_typeof_helper< X,quantity<Unit,X> >::type type;
-
- return type::from_value(lhs*rhs.value());
-}
-
-///// runtime quantity divided by scalar
-//template<class Unit,
-// class X,
-// class Y>
-//inline
-//BOOST_CONSTEXPR
-//typename divide_typeof_helper< quantity<Unit,X>,Y >::type
-//operator/(const quantity<Unit,X>& lhs,const Y& rhs)
-//{
-// typedef typename divide_typeof_helper< quantity<Unit,X>,Y >::type type;
-//
-// return type::from_value(lhs.value()/rhs);
-//}
-//
-///// runtime scalar divided by quantity
-//template<class Unit,
-// class X,
-// class Y>
-//inline
-//BOOST_CONSTEXPR
-//typename divide_typeof_helper< X,quantity<Unit,Y> >::type
-//operator/(const X& lhs,const quantity<Unit,Y>& rhs)
-//{
-// typedef typename divide_typeof_helper< X,quantity<Unit,Y> >::type type;
-//
-// return type::from_value(lhs/rhs.value());
-//}
-
-/// runtime quantity divided by scalar
-template<class Unit,
- class X>
-inline
-BOOST_CONSTEXPR
-typename divide_typeof_helper< quantity<Unit,X>,X >::type
-operator/(const quantity<Unit,X>& lhs,const X& rhs)
-{
- typedef typename divide_typeof_helper< quantity<Unit,X>,X >::type type;
-
- return type::from_value(lhs.value()/rhs);
-}
-
-/// runtime scalar divided by quantity
-template<class Unit,
- class X>
-inline
-BOOST_CONSTEXPR
-typename divide_typeof_helper< X,quantity<Unit,X> >::type
-operator/(const X& lhs,const quantity<Unit,X>& rhs)
-{
- typedef typename divide_typeof_helper< X,quantity<Unit,X> >::type type;
-
- return type::from_value(lhs/rhs.value());
-}
-
-/// runtime unit times quantity
-template<class System1,
- class Dim1,
- class Unit2,
- class Y>
-inline
-BOOST_CONSTEXPR
-typename multiply_typeof_helper< unit<Dim1,System1>,quantity<Unit2,Y> >::type
-operator*(const unit<Dim1,System1>&,const quantity<Unit2,Y>& rhs)
-{
- typedef typename multiply_typeof_helper< unit<Dim1,System1>,quantity<Unit2,Y> >::type type;
-
- return type::from_value(rhs.value());
-}
-
-/// runtime unit divided by quantity
-template<class System1,
- class Dim1,
- class Unit2,
- class Y>
-inline
-BOOST_CONSTEXPR
-typename divide_typeof_helper< unit<Dim1,System1>,quantity<Unit2,Y> >::type
-operator/(const unit<Dim1,System1>&,const quantity<Unit2,Y>& rhs)
-{
- typedef typename divide_typeof_helper< unit<Dim1,System1>,quantity<Unit2,Y> >::type type;
-
- return type::from_value(Y(1)/rhs.value());
-}
-
-/// runtime quantity times unit
-template<class Unit1,
- class System2,
- class Dim2,
- class Y>
-inline
-BOOST_CONSTEXPR
-typename multiply_typeof_helper< quantity<Unit1,Y>,unit<Dim2,System2> >::type
-operator*(const quantity<Unit1,Y>& lhs,const unit<Dim2,System2>&)
-{
- typedef typename multiply_typeof_helper< quantity<Unit1,Y>,unit<Dim2,System2> >::type type;
-
- return type::from_value(lhs.value());
-}
-
-/// runtime quantity divided by unit
-template<class Unit1,
- class System2,
- class Dim2,
- class Y>
-inline
-BOOST_CONSTEXPR
-typename divide_typeof_helper< quantity<Unit1,Y>,unit<Dim2,System2> >::type
-operator/(const quantity<Unit1,Y>& lhs,const unit<Dim2,System2>&)
-{
- typedef typename divide_typeof_helper< quantity<Unit1,Y>,unit<Dim2,System2> >::type type;
-
- return type::from_value(lhs.value());
-}
-
-/// runtime unary plus quantity
-template<class Unit,class Y>
-BOOST_CONSTEXPR
-typename unary_plus_typeof_helper< quantity<Unit,Y> >::type
-operator+(const quantity<Unit,Y>& val)
-{
- typedef typename unary_plus_typeof_helper< quantity<Unit,Y> >::type type;
-
- return type::from_value(+val.value());
-}
-
-/// runtime unary minus quantity
-template<class Unit,class Y>
-BOOST_CONSTEXPR
-typename unary_minus_typeof_helper< quantity<Unit,Y> >::type
-operator-(const quantity<Unit,Y>& val)
-{
- typedef typename unary_minus_typeof_helper< quantity<Unit,Y> >::type type;
-
- return type::from_value(-val.value());
-}
-
-/// runtime quantity plus quantity
-template<class Unit1,
- class Unit2,
- class X,
- class Y>
-inline
-BOOST_CONSTEXPR
-typename add_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >::type
-operator+(const quantity<Unit1,X>& lhs,
- const quantity<Unit2,Y>& rhs)
-{
- typedef typename add_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >::type type;
-
- return type::from_value(lhs.value()+rhs.value());
-}
-
-/// runtime quantity minus quantity
-template<class Unit1,
- class Unit2,
- class X,
- class Y>
-inline
-BOOST_CONSTEXPR
-typename subtract_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >::type
-operator-(const quantity<Unit1,X>& lhs,
- const quantity<Unit2,Y>& rhs)
-{
- typedef typename subtract_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >::type type;
-
- return type::from_value(lhs.value()-rhs.value());
-}
-
-/// runtime quantity times quantity
-template<class Unit1,
- class Unit2,
- class X,
- class Y>
-inline
-BOOST_CONSTEXPR
-typename multiply_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >::type
-operator*(const quantity<Unit1,X>& lhs,
- const quantity<Unit2,Y>& rhs)
-{
- typedef typename multiply_typeof_helper< quantity<Unit1,X>,
- quantity<Unit2,Y> >::type type;
-
- return type::from_value(lhs.value()*rhs.value());
-}
-
-/// runtime quantity divided by quantity
-template<class Unit1,
- class Unit2,
- class X,
- class Y>
-inline
-BOOST_CONSTEXPR
-typename divide_typeof_helper< quantity<Unit1,X>,quantity<Unit2,Y> >::type
-operator/(const quantity<Unit1,X>& lhs,
- const quantity<Unit2,Y>& rhs)
-{
- typedef typename divide_typeof_helper< quantity<Unit1,X>,
- quantity<Unit2,Y> >::type type;
-
- return type::from_value(lhs.value()/rhs.value());
-}
-
-/// runtime operator==
-template<class Unit,
- class X,
- class Y>
-inline
-BOOST_CONSTEXPR
-bool
-operator==(const quantity<Unit,X>& val1,
- const quantity<Unit,Y>& val2)
-{
- return val1.value() == val2.value();
-}
-
-/// runtime operator!=
-template<class Unit,
- class X,
- class Y>
-inline
-BOOST_CONSTEXPR
-bool
-operator!=(const quantity<Unit,X>& val1,
- const quantity<Unit,Y>& val2)
-{
- return val1.value() != val2.value();
-}
-
-/// runtime operator<
-template<class Unit,
- class X,
- class Y>
-inline
-BOOST_CONSTEXPR
-bool
-operator<(const quantity<Unit,X>& val1,
- const quantity<Unit,Y>& val2)
-{
- return val1.value() < val2.value();
-}
-
-/// runtime operator<=
-template<class Unit,
- class X,
- class Y>
-inline
-BOOST_CONSTEXPR
-bool
-operator<=(const quantity<Unit,X>& val1,
- const quantity<Unit,Y>& val2)
-{
- return val1.value() <= val2.value();
-}
-
-/// runtime operator>
-template<class Unit,
- class X,
- class Y>
-inline
-BOOST_CONSTEXPR
-bool
-operator>(const quantity<Unit,X>& val1,
- const quantity<Unit,Y>& val2)
-{
- return val1.value() > val2.value();
-}
-
-/// runtime operator>=
-template<class Unit,
- class X,
- class Y>
-inline
-BOOST_CONSTEXPR
-bool
-operator>=(const quantity<Unit,X>& val1,
- const quantity<Unit,Y>& val2)
-{
- return val1.value() >= val2.value();
-}
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_QUANTITY_HPP
diff --git a/contrib/restricted/boost/boost/units/reduce_unit.hpp b/contrib/restricted/boost/boost/units/reduce_unit.hpp
deleted file mode 100644
index fe0050aee1..0000000000
--- a/contrib/restricted/boost/boost/units/reduce_unit.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_REDUCE_UNIT_HPP_INCLUDED
-#define BOOST_UNITS_REDUCE_UNIT_HPP_INCLUDED
-
-/// \file
-/// \brief Returns a unique type for every unit.
-
-namespace boost {
-namespace units {
-
-#ifdef BOOST_UNITS_DOXYGEN
-
-/// Returns a unique type for every unit.
-template<class Unit>
-struct reduce_unit {
- typedef detail::unspecified type;
-};
-
-#else
-
-// default implementation: return Unit unchanged.
-template<class Unit>
-struct reduce_unit {
- typedef Unit type;
-};
-
-#endif
-
-}
-}
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/scale.hpp b/contrib/restricted/boost/boost/units/scale.hpp
deleted file mode 100644
index 7d64cd548e..0000000000
--- a/contrib/restricted/boost/boost/units/scale.hpp
+++ /dev/null
@@ -1,145 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SCALE_HPP_INCLUDED
-#define BOOST_UNITS_SCALE_HPP_INCLUDED
-
-///
-/// \file
-/// \brief 10^3 Engineering & 2^10 binary scaling factors for autoprefixing.
-/// \details
-///
-
-#include <string>
-
-#include <boost/units/config.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/detail/one.hpp>
-#include <boost/units/detail/static_rational_power.hpp>
-
-namespace boost {
-
-namespace units {
-
-template<class S, class Scale>
-struct scaled_base_unit;
-
-/// class representing a scaling factor such as 10^3
-/// The exponent must be a static rational.
-template<long Base, class Exponent>
-struct scale
-{
- BOOST_STATIC_CONSTEXPR long base = Base;
- typedef Exponent exponent;
- typedef double value_type;
- static BOOST_CONSTEXPR value_type value() { return(detail::static_rational_power<Exponent>(static_cast<double>(base))); }
- // These need to be defined in specializations for
- // printing to work.
- // static std::string name();
- // static std::string symbol();
-};
-
-template<long Base, class Exponent>
-BOOST_CONSTEXPR_OR_CONST long scale<Base, Exponent>::base;
-
-/// INTERNAL ONLY
-template<long Base>
-struct scale<Base, static_rational<0> >
-{
- BOOST_STATIC_CONSTEXPR long base = Base;
- typedef static_rational<0> exponent;
- typedef one value_type;
- static BOOST_CONSTEXPR one value() { return(one()); }
- static std::string name() { return(""); }
- static std::string symbol() { return(""); }
-};
-
-template<long Base>
-BOOST_CONSTEXPR_OR_CONST long scale<Base, static_rational<0> >::base;
-
-template<long Base,class Exponent>
-std::string symbol_string(const scale<Base,Exponent>&)
-{
- return scale<Base,Exponent>::symbol();
-}
-
-template<long Base,class Exponent>
-std::string name_string(const scale<Base,Exponent>&)
-{
- return scale<Base,Exponent>::name();
-}
-
-#ifndef BOOST_UNITS_DOXYGEN
-
-#define BOOST_UNITS_SCALE_SPECIALIZATION(base_,exponent_,val_,name_,symbol_) \
-template<> \
-struct scale<base_, exponent_ > \
-{ \
- BOOST_STATIC_CONSTEXPR long base = base_; \
- typedef exponent_ exponent; \
- typedef double value_type; \
- static BOOST_CONSTEXPR value_type value() { return(val_); } \
- static std::string name() { return(#name_); } \
- static std::string symbol() { return(#symbol_); } \
-}
-
-#define BOOST_UNITS_SCALE_DEF(exponent_,value_,name_,symbol_) \
-BOOST_UNITS_SCALE_SPECIALIZATION(10,static_rational<exponent_>,value_, name_, symbol_)
-
-BOOST_UNITS_SCALE_DEF(-24, 1e-24, yocto, y);
-BOOST_UNITS_SCALE_DEF(-21, 1e-21, zepto, z);
-BOOST_UNITS_SCALE_DEF(-18, 1e-18, atto, a);
-BOOST_UNITS_SCALE_DEF(-15, 1e-15, femto, f);
-BOOST_UNITS_SCALE_DEF(-12, 1e-12, pico, p);
-BOOST_UNITS_SCALE_DEF(-9, 1e-9, nano, n);
-BOOST_UNITS_SCALE_DEF(-6, 1e-6, micro, u);
-BOOST_UNITS_SCALE_DEF(-3, 1e-3, milli, m);
-BOOST_UNITS_SCALE_DEF(-2, 1e-2, centi, c);
-BOOST_UNITS_SCALE_DEF(-1, 1e-1, deci, d);
-
-BOOST_UNITS_SCALE_DEF(1, 1e1, deka, da);
-BOOST_UNITS_SCALE_DEF(2, 1e2, hecto, h);
-BOOST_UNITS_SCALE_DEF(3, 1e3, kilo, k);
-BOOST_UNITS_SCALE_DEF(6, 1e6, mega, M);
-BOOST_UNITS_SCALE_DEF(9, 1e9, giga, G);
-BOOST_UNITS_SCALE_DEF(12, 1e12, tera, T);
-BOOST_UNITS_SCALE_DEF(15, 1e15, peta, P);
-BOOST_UNITS_SCALE_DEF(18, 1e18, exa, E);
-BOOST_UNITS_SCALE_DEF(21, 1e21, zetta, Z);
-BOOST_UNITS_SCALE_DEF(24, 1e24, yotta, Y);
-
-BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<10>, 1024.0, kibi, Ki);
-BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<20>, 1048576.0, mebi, Mi);
-BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<30>, 1073741824.0, gibi, Gi);
-BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<40>, 1099511627776.0, tebi, Ti);
-BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<50>, 1125899906842624.0, pebi, Pi);
-BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<60>, 1152921504606846976.0, exbi, Ei);
-BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<70>, 1180591620717411303424.0, zebi, Zi);
-BOOST_UNITS_SCALE_SPECIALIZATION(2, static_rational<80>, 1208925819614629174706176.0, yobi, Yi);
-
-#undef BOOST_UNITS_SCALE_DEF
-#undef BOOST_UNITS_SCALE_SPECIALIZATION
-
-#endif
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::scale, (long)(class))
-
-#endif
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/scaled_base_unit.hpp b/contrib/restricted/boost/boost/units/scaled_base_unit.hpp
deleted file mode 100644
index 24f9f4f6b6..0000000000
--- a/contrib/restricted/boost/boost/units/scaled_base_unit.hpp
+++ /dev/null
@@ -1,144 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SCALED_BASE_UNIT_HPP_INCLUDED
-#define BOOST_UNITS_SCALED_BASE_UNIT_HPP_INCLUDED
-
-#include <string>
-
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/less.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-#include <boost/units/config.hpp>
-#include <boost/units/dimension.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/units_fwd.hpp>
-
-namespace boost {
-
-namespace units {
-
-template<class T>
-struct heterogeneous_system;
-
-template<class T, class D, class Scale>
-struct heterogeneous_system_impl;
-
-template<class T, class E>
-struct heterogeneous_system_dim;
-
-template<class T>
-struct base_unit_info;
-
-/// INTERNAL ONLY
-struct scaled_base_unit_tag {};
-
-template<class S, class Scale>
-struct scaled_base_unit
-{
- /// INTERNAL ONLY
- typedef void boost_units_is_base_unit_type;
- typedef scaled_base_unit type;
- typedef scaled_base_unit_tag tag;
- typedef S system_type;
- typedef Scale scale_type;
- typedef typename S::dimension_type dimension_type;
-
-#ifdef BOOST_UNITS_DOXYGEN
-
- typedef detail::unspecified unit_type;
-
-#else
-
- typedef unit<
- dimension_type,
- heterogeneous_system<
- heterogeneous_system_impl<
- list<
- heterogeneous_system_dim<scaled_base_unit,static_rational<1> >,
- dimensionless_type
- >,
- dimension_type,
- dimensionless_type
- >
- >
- > unit_type;
-
-#endif
-
- static std::string symbol()
- {
- return(Scale::symbol() + base_unit_info<S>::symbol());
- }
- static std::string name()
- {
- return(Scale::name() + base_unit_info<S>::name());
- }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::scaled_base_unit, (class)(class))
-
-#endif
-
-namespace boost {
-
-#ifndef BOOST_UNITS_DOXYGEN
-
-namespace mpl {
-
-/// INTERNAL ONLY
-template<class Tag>
-struct less_impl<boost::units::scaled_base_unit_tag, Tag>
-{
- template<class T0, class T1>
- struct apply : mpl::bool_<
- mpl::less<typename T0::system_type, T1>::value ||
- (boost::is_same<typename T0::system_type, T1>::value && ((T0::scale_type::exponent::Numerator) < 0)) > {};
-};
-
-/// INTERNAL ONLY
-template<class Tag>
-struct less_impl<Tag, boost::units::scaled_base_unit_tag>
-{
- template<class T0, class T1>
- struct apply : mpl::bool_<
- mpl::less<T0, typename T1::system_type>::value ||
- (boost::is_same<T0, typename T1::system_type>::value && ((T1::scale_type::exponent::Numerator) > 0)) > {};
-};
-
-/// INTERNAL ONLY
-template<>
-struct less_impl<boost::units::scaled_base_unit_tag, boost::units::scaled_base_unit_tag>
-{
- template<class T0, class T1>
- struct apply : mpl::bool_<
- mpl::less<typename T0::system_type, typename T1::system_type>::value ||
- ((boost::is_same<typename T0::system_type, typename T1::system_type>::value) &&
- ((T0::scale_type::base) < (T1::scale_type::base) ||
- ((T0::scale_type::base) == (T1::scale_type::base) &&
- mpl::less<typename T0::scale_type::exponent, typename T1::scale_type::exponent>::value))) > {};
-};
-
-} // namespace mpl
-
-#endif
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/static_constant.hpp b/contrib/restricted/boost/boost/units/static_constant.hpp
deleted file mode 100644
index d3646adbda..0000000000
--- a/contrib/restricted/boost/boost/units/static_constant.hpp
+++ /dev/null
@@ -1,62 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_STATIC_CONSTANT_HPP
-#define BOOST_UNITS_STATIC_CONSTANT_HPP
-
-#include <boost/units/config.hpp>
-
-#if defined(BOOST_NO_CXX11_CONSTEXPR) || defined(BOOST_UNITS_DOXYGEN)
-/// A convenience macro that allows definition of static
-/// constants in headers in an ODR-safe way.
-# define BOOST_UNITS_STATIC_CONSTANT(name, type) \
-template<bool b> \
-struct name##_instance_t \
-{ \
- static const type instance; \
-}; \
- \
-namespace \
-{ \
- static const type& name = name##_instance_t<true>::instance; \
-} \
- \
-template<bool b> \
-const type name##_instance_t<b>::instance
-#else
-# define BOOST_UNITS_STATIC_CONSTANT(name, type) \
-BOOST_STATIC_CONSTEXPR type name
-#endif
-
-/// A convenience macro for static constants with auto
-/// type deduction.
-#if BOOST_UNITS_HAS_TYPEOF
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#define BOOST_UNITS_AUTO_STATIC_CONSTANT(name, value) \
-BOOST_TYPEOF_NESTED_TYPEDEF(name##_nested_t, value) \
-BOOST_UNITS_STATIC_CONSTANT(name, name##_nested_t::type) = (value)
-
-#elif BOOST_UNITS_HAS_MWERKS_TYPEOF
-
-#define BOOST_UNITS_AUTO_STATIC_CONSTANT(name, value) \
-BOOST_UNITS_STATIC_CONSTANT(name, __typeof__(value)) = (value)
-
-#elif BOOST_UNITS_HAS_GNU_TYPEOF
-
-#define BOOST_UNITS_AUTO_STATIC_CONSTANT(name, value) \
-BOOST_UNITS_STATIC_CONSTANT(name, typeof(value)) = (value)
-
-#endif // BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#endif // BOOST_UNITS_HAS_TYPEOF
-
-#endif // BOOST_UNITS_STATIC_CONSTANT_HPP
diff --git a/contrib/restricted/boost/boost/units/static_rational.hpp b/contrib/restricted/boost/boost/units/static_rational.hpp
deleted file mode 100644
index 6d3d818739..0000000000
--- a/contrib/restricted/boost/boost/units/static_rational.hpp
+++ /dev/null
@@ -1,349 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_STATIC_RATIONAL_HPP
-#define BOOST_UNITS_STATIC_RATIONAL_HPP
-
-#include <boost/integer/common_factor_ct.hpp>
-#include <boost/mpl/less.hpp>
-#include <boost/mpl/arithmetic.hpp>
-
-#ifdef __BORLANDC__
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/integral_c.hpp>
-#include <boost/mpl/identity.hpp>
-#endif
-
-#include <boost/units/config.hpp>
-#include <boost/units/operators.hpp>
-
-/// \file
-/// \brief Compile-time rational numbers and operators.
-
-namespace boost {
-
-namespace units {
-
-namespace detail {
-
-struct static_rational_tag {};
-
-}
-
-typedef long integer_type;
-
-/// Compile time absolute value.
-template<integer_type Value>
-struct static_abs
-{
- BOOST_STATIC_CONSTANT(integer_type,value = Value < 0 ? -Value : Value);
-};
-
-// Compile time rational number.
-/**
-This is an implementation of a compile time rational number, where @c static_rational<N,D> represents
-a rational number with numerator @c N and denominator @c D. Because of the potential for ambiguity arising
-from multiple equivalent values of @c static_rational (e.g. @c static_rational<6,2>==static_rational<3>),
-static rationals should always be accessed through @c static_rational<N,D>::type. Template specialization
-prevents instantiation of zero denominators (i.e. @c static_rational<N,0>). The following compile-time
-arithmetic operators are provided for static_rational variables only (no operators are defined between
-long and static_rational):
- - @c mpl::negate
- - @c mpl::plus
- - @c mpl::minus
- - @c mpl::times
- - @c mpl::divides
-
-Neither @c static_power nor @c static_root are defined for @c static_rational. This is because template types
-may not be floating point values, while powers and roots of rational numbers can produce floating point
-values.
-*/
-#ifdef __BORLANDC__
-
-template<integer_type X>
-struct make_integral_c {
- typedef boost::mpl::integral_c<integer_type, X> type;
-};
-
-template<integer_type N,integer_type D = 1>
-class static_rational
-{
- public:
-
- typedef static_rational this_type;
-
- typedef boost::mpl::integral_c<integer_type, N> N_type;
- typedef boost::mpl::integral_c<integer_type, D> D_type;
-
- typedef typename make_integral_c<
- (::boost::integer::static_gcd<
- ::boost::units::static_abs<N>::value,
- ::boost::units::static_abs<D>::value
- >::value)>::type gcd_type;
- typedef typename boost::mpl::eval_if<
- boost::mpl::less<
- D_type,
- boost::mpl::integral_c<integer_type, 0>
- >,
- boost::mpl::negate<gcd_type>,
- gcd_type
- >::type den_type;
-
- public:
- // for mpl arithmetic support
- typedef detail::static_rational_tag tag;
-
- BOOST_STATIC_CONSTANT(integer_type, Numerator =
- (::boost::mpl::divides<N_type, den_type>::value));
- BOOST_STATIC_CONSTANT(integer_type, Denominator =
- (::boost::mpl::divides<D_type, den_type>::value));
-
- /// INTERNAL ONLY
- typedef static_rational<N,D> this_type;
-
- /// static_rational<N,D> reduced by GCD
- typedef static_rational<
- (::boost::mpl::divides<N_type, den_type>::value),
- (::boost::mpl::divides<D_type, den_type>::value)
- > type;
-
- static BOOST_CONSTEXPR integer_type numerator() { return Numerator; }
- static BOOST_CONSTEXPR integer_type denominator() { return Denominator; }
-
- // INTERNAL ONLY
- BOOST_CONSTEXPR static_rational() { }
- //~static_rational() { }
-};
-#else
-template<integer_type N,integer_type D = 1>
-class static_rational
-{
- private:
-
- BOOST_STATIC_CONSTEXPR integer_type nabs = static_abs<N>::value,
- dabs = static_abs<D>::value;
-
- /// greatest common divisor of N and D
- // need cast to signed because static_gcd returns unsigned long
- BOOST_STATIC_CONSTEXPR integer_type den =
- static_cast<integer_type>(boost::integer::static_gcd<nabs,dabs>::value) * ((D < 0) ? -1 : 1);
-
- public:
- // for mpl arithmetic support
- typedef detail::static_rational_tag tag;
-
- BOOST_STATIC_CONSTEXPR integer_type Numerator = N/den,
- Denominator = D/den;
-
- /// INTERNAL ONLY
- typedef static_rational<N,D> this_type;
-
- /// static_rational<N,D> reduced by GCD
- typedef static_rational<Numerator,Denominator> type;
-
- static BOOST_CONSTEXPR integer_type numerator() { return Numerator; }
- static BOOST_CONSTEXPR integer_type denominator() { return Denominator; }
-
- // INTERNAL ONLY
- BOOST_CONSTEXPR static_rational() { }
- //~static_rational() { }
-};
-#endif
-
-}
-
-}
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::static_rational, (long)(long))
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-// prohibit zero denominator
-template<integer_type N> class static_rational<N,0>;
-
-/// get decimal value of @c static_rational
-template<class T,integer_type N,integer_type D>
-inline BOOST_CONSTEXPR typename divide_typeof_helper<T,T>::type
-value(const static_rational<N,D>&)
-{
- return T(N)/T(D);
-}
-
-} // namespace units
-
-#ifndef BOOST_UNITS_DOXYGEN
-
-namespace mpl {
-
-#ifdef __BORLANDC__
-
-template<>
-struct plus_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply {
- typedef typename boost::units::static_rational<
- ::boost::mpl::plus<
- boost::mpl::times<typename T0::N_type, typename T1::D_type>,
- boost::mpl::times<typename T1::N_type, typename T0::D_type>
- >::value,
- ::boost::mpl::times<typename T0::D_type, typename T1::D_type>::value
- >::type type;
- };
-};
-
-template<>
-struct minus_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply {
- typedef typename boost::units::static_rational<
- ::boost::mpl::minus<
- boost::mpl::times<typename T0::N_type, typename T1::D_type>,
- boost::mpl::times<typename T1::N_type, typename T0::D_type>
- >::value,
- ::boost::mpl::times<typename T0::D_type, typename T1::D_type>::value
- >::type type;
- };
-};
-
-template<>
-struct times_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply {
- typedef typename boost::units::static_rational<
- ::boost::mpl::times<typename T0::N_type, typename T1::N_type>::value,
- ::boost::mpl::times<typename T0::D_type, typename T1::D_type>::value
- >::type type;
- };
-};
-
-template<>
-struct divides_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply {
- typedef typename boost::units::static_rational<
- ::boost::mpl::times<typename T0::N_type, typename T1::D_type>::value,
- ::boost::mpl::times<typename T0::D_type, typename T1::N_type>::value
- >::type type;
- };
-};
-
-template<>
-struct negate_impl<boost::units::detail::static_rational_tag>
-{
- template<class T0>
- struct apply {
- typedef typename boost::units::static_rational<
- ::boost::mpl::negate<typename T0::N_type>::value,
- ::boost::mpl::identity<T0>::type::Denominator
- >::type type;
- };
-};
-
-template<>
-struct less_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef mpl::bool_<((mpl::minus<T0, T1>::type::Numerator) < 0)> type;
- };
-};
-
-#else
-
-template<>
-struct plus_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply {
- typedef typename boost::units::static_rational<
- T0::Numerator*T1::Denominator+T1::Numerator*T0::Denominator,
- T0::Denominator*T1::Denominator
- >::type type;
- };
-};
-
-template<>
-struct minus_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply {
- typedef typename boost::units::static_rational<
- T0::Numerator*T1::Denominator-T1::Numerator*T0::Denominator,
- T0::Denominator*T1::Denominator
- >::type type;
- };
-};
-
-template<>
-struct times_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply {
- typedef typename boost::units::static_rational<
- T0::Numerator*T1::Numerator,
- T0::Denominator*T1::Denominator
- >::type type;
- };
-};
-
-template<>
-struct divides_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply {
- typedef typename boost::units::static_rational<
- T0::Numerator*T1::Denominator,
- T0::Denominator*T1::Numerator
- >::type type;
- };
-};
-
-template<>
-struct negate_impl<boost::units::detail::static_rational_tag>
-{
- template<class T0>
- struct apply {
- typedef typename boost::units::static_rational<-T0::Numerator,T0::Denominator>::type type;
- };
-};
-
-template<>
-struct less_impl<boost::units::detail::static_rational_tag, boost::units::detail::static_rational_tag>
-{
- template<class T0, class T1>
- struct apply
- {
- typedef mpl::bool_<((mpl::minus<T0, T1>::type::Numerator) < 0)> type;
- };
-};
-
-#endif
-
-
-}
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_UNITS_STATIC_RATIONAL_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/abstract.hpp b/contrib/restricted/boost/boost/units/systems/abstract.hpp
deleted file mode 100644
index 9b449d68c8..0000000000
--- a/contrib/restricted/boost/boost/units/systems/abstract.hpp
+++ /dev/null
@@ -1,139 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ABSTRACT_HPP
-#define BOOST_UNITS_ABSTRACT_HPP
-
-#include <string>
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/unit.hpp>
-
-#include <boost/units/make_system.hpp>
-#include <boost/units/base_unit.hpp>
-
-#include <boost/units/physical_dimensions/amount.hpp>
-#include <boost/units/physical_dimensions/current.hpp>
-#include <boost/units/physical_dimensions/length.hpp>
-#include <boost/units/physical_dimensions/luminous_intensity.hpp>
-#include <boost/units/physical_dimensions/mass.hpp>
-#include <boost/units/physical_dimensions/plane_angle.hpp>
-#include <boost/units/physical_dimensions/solid_angle.hpp>
-#include <boost/units/physical_dimensions/temperature.hpp>
-#include <boost/units/physical_dimensions/time.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace abstract {
-
-struct length_unit_tag : base_unit<length_unit_tag, length_dimension, -30> { };
-struct mass_unit_tag : base_unit<mass_unit_tag, mass_dimension, -29> { };
-struct time_unit_tag : base_unit<time_unit_tag, time_dimension, -28> { };
-struct current_unit_tag : base_unit<current_unit_tag, current_dimension, -27> { };
-struct temperature_unit_tag : base_unit<temperature_unit_tag, temperature_dimension, -26> { };
-struct amount_unit_tag : base_unit<amount_unit_tag, amount_dimension, -25> { };
-struct luminous_intensity_unit_tag : base_unit<luminous_intensity_unit_tag, luminous_intensity_dimension, -24> { };
-struct plane_angle_unit_tag : base_unit<plane_angle_unit_tag, plane_angle_dimension, -23> { };
-struct solid_angle_unit_tag : base_unit<solid_angle_unit_tag, solid_angle_dimension, -22> { };
-
-typedef make_system<
- length_unit_tag,
- mass_unit_tag,
- time_unit_tag,
- current_unit_tag,
- temperature_unit_tag,
- amount_unit_tag,
- luminous_intensity_unit_tag,
- plane_angle_unit_tag,
- solid_angle_unit_tag
->::type system;
-
-typedef unit<length_dimension,system> length; ///< abstract unit of length
-typedef unit<mass_dimension,system> mass; ///< abstract unit of mass
-typedef unit<time_dimension,system> time; ///< abstract unit of time
-typedef unit<current_dimension,system> current; ///< abstract unit of current
-typedef unit<temperature_dimension,system> temperature; ///< abstract unit of temperature
-typedef unit<amount_dimension,system> amount; ///< abstract unit of amount
-typedef unit<luminous_intensity_dimension,system> luminous_intensity; ///< abstract unit of luminous intensity
-typedef unit<plane_angle_dimension,system> plane_angle; ///< abstract unit of plane angle
-typedef unit<solid_angle_dimension,system> solid_angle; ///< abstract unit of solid angle
-
-} // namespace abstract
-
-template<>
-struct base_unit_info<abstract::length_unit_tag>
-{
- static std::string name() { return "[Length]"; }
- static std::string symbol() { return "[L]"; }
-};
-
-template<>
-struct base_unit_info<abstract::mass_unit_tag>
-{
- static std::string name() { return "[Mass]"; }
- static std::string symbol() { return "[M]"; }
-};
-
-template<>
-struct base_unit_info<abstract::time_unit_tag>
-{
- static std::string name() { return "[Time]"; }
- static std::string symbol() { return "[T]"; }
-};
-
-template<>
-struct base_unit_info<abstract::current_unit_tag>
-{
- static std::string name() { return "[Electric Current]"; }
- static std::string symbol() { return "[I]"; }
-};
-
-template<>
-struct base_unit_info<abstract::temperature_unit_tag>
-{
- static std::string name() { return "[Temperature]"; }
- static std::string symbol() { return "[Theta]"; }
-};
-
-template<>
-struct base_unit_info<abstract::amount_unit_tag>
-{
- static std::string name() { return "[Amount]"; }
- static std::string symbol() { return "[N]"; }
-};
-
-template<>
-struct base_unit_info<abstract::luminous_intensity_unit_tag>
-{
- static std::string name() { return "[Luminous Intensity]"; }
- static std::string symbol() { return "[J]"; }
-};
-
-template<>
-struct base_unit_info<abstract::plane_angle_unit_tag>
-{
- static std::string name() { return "[Plane Angle]"; }
- static std::string symbol() { return "[QP]"; }
-};
-
-template<>
-struct base_unit_info<abstract::solid_angle_unit_tag>
-{
- static std::string name() { return "[Solid Angle]"; }
- static std::string symbol() { return "[QS]"; }
-};
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ABSTRACT_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/angle/degrees.hpp b/contrib/restricted/boost/boost/units/systems/angle/degrees.hpp
deleted file mode 100644
index df0c5e91a9..0000000000
--- a/contrib/restricted/boost/boost/units/systems/angle/degrees.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ANGLE_DEGREE_HPP
-#define BOOST_UNITS_ANGLE_DEGREE_HPP
-
-#include <boost/config/no_tr1/cmath.hpp>
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/static_constant.hpp>
-#include <boost/units/unit.hpp>
-#include <boost/units/make_system.hpp>
-#include <boost/units/base_units/angle/degree.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace degree {
-
-typedef make_system<boost::units::angle::degree_base_unit>::type system;
-
-typedef unit<dimensionless_type,system> dimensionless;
-typedef unit<plane_angle_dimension,system> plane_angle; ///< angle degree unit constant
-
-BOOST_UNITS_STATIC_CONSTANT(degree,plane_angle);
-BOOST_UNITS_STATIC_CONSTANT(degrees,plane_angle);
-
-} // namespace degree
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ANGLE_DEGREE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/angle/gradians.hpp b/contrib/restricted/boost/boost/units/systems/angle/gradians.hpp
deleted file mode 100644
index f44709ef51..0000000000
--- a/contrib/restricted/boost/boost/units/systems/angle/gradians.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ANGLE_GRADIANS_HPP
-#define BOOST_UNITS_ANGLE_GRADIANS_HPP
-
-#include <boost/config/no_tr1/cmath.hpp>
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-#include <boost/units/make_system.hpp>
-#include <boost/units/base_units/angle/gradian.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace gradian {
-
-typedef make_system<boost::units::angle::gradian_base_unit>::type system;
-
-typedef unit<dimensionless_type,system> dimensionless;
-typedef unit<plane_angle_dimension,system> plane_angle; ///< angle gradian unit constant
-
-BOOST_UNITS_STATIC_CONSTANT(gradian,plane_angle);
-BOOST_UNITS_STATIC_CONSTANT(gradians,plane_angle);
-
-} // namespace gradian
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ANGLE_GRADIANS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/angle/revolutions.hpp b/contrib/restricted/boost/boost/units/systems/angle/revolutions.hpp
deleted file mode 100644
index 0006e51713..0000000000
--- a/contrib/restricted/boost/boost/units/systems/angle/revolutions.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_ANGLE_REVOLUTIONS_HPP
-#define BOOST_UNITS_ANGLE_REVOLUTIONS_HPP
-
-#include <boost/config/no_tr1/cmath.hpp>
-
-#include <boost/units/conversion.hpp>
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-#include <boost/units/make_system.hpp>
-#include <boost/units/base_units/angle/revolution.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace revolution {
-
-typedef make_system<boost::units::angle::revolution_base_unit>::type system;
-
-typedef unit<dimensionless_type,system> dimensionless;
-typedef unit<plane_angle_dimension,system> plane_angle; ///< angle revolution unit constant
-
-BOOST_UNITS_STATIC_CONSTANT(revolution,plane_angle);
-BOOST_UNITS_STATIC_CONSTANT(revolutions,plane_angle);
-
-} // namespace revolution
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_ANGLE_REVOLUTIONS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs.hpp b/contrib/restricted/boost/boost/units/systems/cgs.hpp
deleted file mode 100644
index 0d61bfc428..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_HPP
-#define BOOST_UNITS_CGS_HPP
-
-/// \file
-/// Includes all the cgs unit headers
-
-#include <string>
-
-#include <boost/units/quantity.hpp>
-
-#include <boost/units/systems/cgs/base.hpp>
-
-#include <boost/units/systems/cgs/dimensionless.hpp>
-#include <boost/units/systems/cgs/length.hpp>
-#include <boost/units/systems/cgs/mass.hpp>
-#include <boost/units/systems/cgs/time.hpp>
-
-#include <boost/units/systems/cgs/acceleration.hpp>
-#include <boost/units/systems/cgs/area.hpp>
-#include <boost/units/systems/cgs/current.hpp>
-#include <boost/units/systems/cgs/dynamic_viscosity.hpp>
-#include <boost/units/systems/cgs/energy.hpp>
-#include <boost/units/systems/cgs/force.hpp>
-#include <boost/units/systems/cgs/frequency.hpp>
-#include <boost/units/systems/cgs/kinematic_viscosity.hpp>
-#include <boost/units/systems/cgs/mass_density.hpp>
-#include <boost/units/systems/cgs/momentum.hpp>
-#include <boost/units/systems/cgs/power.hpp>
-#include <boost/units/systems/cgs/pressure.hpp>
-#include <boost/units/systems/cgs/velocity.hpp>
-#include <boost/units/systems/cgs/volume.hpp>
-#include <boost/units/systems/cgs/wavenumber.hpp>
-
-#endif // BOOST_UNITS_CGS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/acceleration.hpp b/contrib/restricted/boost/boost/units/systems/cgs/acceleration.hpp
deleted file mode 100644
index f84c715ac5..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/acceleration.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_ACCELERATION_HPP
-#define BOOST_UNITS_CGS_ACCELERATION_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/acceleration.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<acceleration_dimension,cgs::system> acceleration;
-
-BOOST_UNITS_STATIC_CONSTANT(gal,acceleration);
-BOOST_UNITS_STATIC_CONSTANT(gals,acceleration);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_ACCELERATION_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/area.hpp b/contrib/restricted/boost/boost/units/systems/cgs/area.hpp
deleted file mode 100644
index 106925173f..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/area.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_AREA_HPP
-#define BOOST_UNITS_CGS_AREA_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/area.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<area_dimension,cgs::system> area;
-
-BOOST_UNITS_STATIC_CONSTANT(square_centimeter,area);
-BOOST_UNITS_STATIC_CONSTANT(square_centimeters,area);
-BOOST_UNITS_STATIC_CONSTANT(square_centimetre,area);
-BOOST_UNITS_STATIC_CONSTANT(square_centimetres,area);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_AREA_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/base.hpp b/contrib/restricted/boost/boost/units/systems/cgs/base.hpp
deleted file mode 100644
index bc536065df..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/base.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_BASE_HPP
-#define BOOST_UNITS_CGS_BASE_HPP
-
-#include <string>
-
-#include <boost/units/static_constant.hpp>
-#include <boost/units/unit.hpp>
-#include <boost/units/make_system.hpp>
-
-#include <boost/units/base_units/cgs/centimeter.hpp>
-#include <boost/units/base_units/cgs/gram.hpp>
-#include <boost/units/base_units/si/second.hpp>
-#include <boost/units/base_units/cgs/biot.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-/// placeholder class defining cgs unit system
-typedef make_system<centimeter_base_unit,
- gram_base_unit,
- boost::units::si::second_base_unit,
- biot_base_unit>::type system;
-
-/// various unit typedefs for convenience
-typedef unit<dimensionless_type,system> dimensionless;
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_BASE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/current.hpp b/contrib/restricted/boost/boost/units/systems/cgs/current.hpp
deleted file mode 100644
index f80821e012..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/current.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_CURRENT_HPP
-#define BOOST_UNITS_CGS_CURRENT_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<current_dimension,cgs::system> current;
-
-BOOST_UNITS_STATIC_CONSTANT(biot,current);
-BOOST_UNITS_STATIC_CONSTANT(biots,current);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_CURRENT_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/dimensionless.hpp b/contrib/restricted/boost/boost/units/systems/cgs/dimensionless.hpp
deleted file mode 100644
index 7f2b3c2b5f..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/dimensionless.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_DIMENSIONLESS_HPP
-#define BOOST_UNITS_CGS_DIMENSIONLESS_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-BOOST_UNITS_STATIC_CONSTANT(cgs_dimensionless,dimensionless);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_DIMENSIONLESS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/dynamic_viscosity.hpp b/contrib/restricted/boost/boost/units/systems/cgs/dynamic_viscosity.hpp
deleted file mode 100644
index af1a17030a..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/dynamic_viscosity.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_DYNAMIC_VISCOSITY_HPP
-#define BOOST_UNITS_CGS_DYNAMIC_VISCOSITY_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/dynamic_viscosity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<dynamic_viscosity_dimension,cgs::system> dynamic_viscosity;
-
-BOOST_UNITS_STATIC_CONSTANT(poise,dynamic_viscosity);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_DYNAMIC_VISCOSITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/energy.hpp b/contrib/restricted/boost/boost/units/systems/cgs/energy.hpp
deleted file mode 100644
index f71099692f..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/energy.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_ENERGY_HPP
-#define BOOST_UNITS_CGS_ENERGY_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/energy.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<energy_dimension,cgs::system> energy;
-
-BOOST_UNITS_STATIC_CONSTANT(erg,energy);
-BOOST_UNITS_STATIC_CONSTANT(ergs,energy);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_ENERGY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/force.hpp b/contrib/restricted/boost/boost/units/systems/cgs/force.hpp
deleted file mode 100644
index 3328b5d10d..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/force.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_FORCE_HPP
-#define BOOST_UNITS_CGS_FORCE_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/force.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<force_dimension,cgs::system> force;
-
-BOOST_UNITS_STATIC_CONSTANT(dyne,force);
-BOOST_UNITS_STATIC_CONSTANT(dynes,force);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_FORCE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/frequency.hpp b/contrib/restricted/boost/boost/units/systems/cgs/frequency.hpp
deleted file mode 100644
index ef90aea21c..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/frequency.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_FREQUENCY_HPP
-#define BOOST_UNITS_CGS_FREQUENCY_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/frequency.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<frequency_dimension,cgs::system> frequency;
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_FREQUENCY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/io.hpp b/contrib/restricted/boost/boost/units/systems/cgs/io.hpp
deleted file mode 100644
index 6f57b1e045..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/io.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_IO_HPP
-#define BOOST_UNITS_CGS_IO_HPP
-
-#include <boost/units/io.hpp>
-#include <boost/units/reduce_unit.hpp>
-#include <boost/units/systems/cgs.hpp>
-
-namespace boost {
-
-namespace units {
-
-inline std::string name_string(const reduce_unit<cgs::acceleration>::type&) { return "galileo"; }
-inline std::string symbol_string(const reduce_unit<cgs::acceleration>::type&) { return "Gal"; }
-
-inline std::string name_string(const reduce_unit<cgs::current>::type&) { return "biot"; }
-inline std::string symbol_string(const reduce_unit<cgs::current>::type&) { return "Bi"; }
-
-inline std::string name_string(const reduce_unit<cgs::dynamic_viscosity>::type&) { return "poise"; }
-inline std::string symbol_string(const reduce_unit<cgs::dynamic_viscosity>::type&) { return "P"; }
-
-inline std::string name_string(const reduce_unit<cgs::energy>::type&) { return "erg"; }
-inline std::string symbol_string(const reduce_unit<cgs::energy>::type&) { return "erg"; }
-
-inline std::string name_string(const reduce_unit<cgs::force>::type&) { return "dyne"; }
-inline std::string symbol_string(const reduce_unit<cgs::force>::type&) { return "dyn"; }
-
-inline std::string name_string(const reduce_unit<cgs::kinematic_viscosity>::type&) { return "stoke"; }
-inline std::string symbol_string(const reduce_unit<cgs::kinematic_viscosity>::type&) { return "St"; }
-
-inline std::string name_string(const reduce_unit<cgs::pressure>::type&) { return "barye"; }
-inline std::string symbol_string(const reduce_unit<cgs::pressure>::type&) { return "Ba"; }
-
-inline std::string name_string(const reduce_unit<cgs::wavenumber>::type&) { return "kayser"; }
-inline std::string symbol_string(const reduce_unit<cgs::wavenumber>::type&) { return "K"; }
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_IO_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/kinematic_viscosity.hpp b/contrib/restricted/boost/boost/units/systems/cgs/kinematic_viscosity.hpp
deleted file mode 100644
index 185582b865..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/kinematic_viscosity.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_KINEMATIC_VISCOSITY_HPP
-#define BOOST_UNITS_CGS_KINEMATIC_VISCOSITY_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/kinematic_viscosity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<kinematic_viscosity_dimension,cgs::system> kinematic_viscosity;
-
-BOOST_UNITS_STATIC_CONSTANT(stoke,kinematic_viscosity);
-BOOST_UNITS_STATIC_CONSTANT(stokes,kinematic_viscosity);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_KINEMATIC_VISCOSITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/length.hpp b/contrib/restricted/boost/boost/units/systems/cgs/length.hpp
deleted file mode 100644
index 6d04cfe002..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/length.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_LENGTH_HPP
-#define BOOST_UNITS_CGS_LENGTH_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<length_dimension,cgs::system> length;
-
-BOOST_UNITS_STATIC_CONSTANT(centimeter,length);
-BOOST_UNITS_STATIC_CONSTANT(centimeters,length);
-BOOST_UNITS_STATIC_CONSTANT(centimetre,length);
-BOOST_UNITS_STATIC_CONSTANT(centimetres,length);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_LENGTH_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/mass.hpp b/contrib/restricted/boost/boost/units/systems/cgs/mass.hpp
deleted file mode 100644
index 70bf7c4875..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/mass.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_MASS_HPP
-#define BOOST_UNITS_CGS_MASS_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<mass_dimension,cgs::system> mass;
-
-BOOST_UNITS_STATIC_CONSTANT(gram,mass);
-BOOST_UNITS_STATIC_CONSTANT(grams,mass);
-BOOST_UNITS_STATIC_CONSTANT(gramme,mass);
-BOOST_UNITS_STATIC_CONSTANT(grammes,mass);
-
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_MASS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/mass_density.hpp b/contrib/restricted/boost/boost/units/systems/cgs/mass_density.hpp
deleted file mode 100644
index 5b2ce9e799..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/mass_density.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_MASS_DENSITY_HPP
-#define BOOST_UNITS_CGS_MASS_DENSITY_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/mass_density.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<mass_density_dimension,cgs::system> mass_density;
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_MASS_DENSITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/momentum.hpp b/contrib/restricted/boost/boost/units/systems/cgs/momentum.hpp
deleted file mode 100644
index 6325a95a54..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/momentum.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_MOMENTUM_HPP
-#define BOOST_UNITS_CGS_MOMENTUM_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/momentum.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<momentum_dimension,cgs::system> momentum;
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_MOMENTUM_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/power.hpp b/contrib/restricted/boost/boost/units/systems/cgs/power.hpp
deleted file mode 100644
index 3ecb353143..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/power.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_POWER_HPP
-#define BOOST_UNITS_CGS_POWER_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/power.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<power_dimension,cgs::system> power;
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_POWER_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/pressure.hpp b/contrib/restricted/boost/boost/units/systems/cgs/pressure.hpp
deleted file mode 100644
index faef178bb1..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/pressure.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_PRESSURE_HPP
-#define BOOST_UNITS_CGS_PRESSURE_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/pressure.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<pressure_dimension,cgs::system> pressure;
-
-BOOST_UNITS_STATIC_CONSTANT(barye,pressure);
-BOOST_UNITS_STATIC_CONSTANT(baryes,pressure);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_PRESSURE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/time.hpp b/contrib/restricted/boost/boost/units/systems/cgs/time.hpp
deleted file mode 100644
index 2ac3b040c7..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/time.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_TIME_HPP
-#define BOOST_UNITS_CGS_TIME_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<time_dimension,cgs::system> time;
-
-BOOST_UNITS_STATIC_CONSTANT(second,time);
-BOOST_UNITS_STATIC_CONSTANT(seconds,time);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_TIME_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/velocity.hpp b/contrib/restricted/boost/boost/units/systems/cgs/velocity.hpp
deleted file mode 100644
index 152240a61b..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/velocity.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_VELOCITY_HPP
-#define BOOST_UNITS_CGS_VELOCITY_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/velocity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<velocity_dimension,cgs::system> velocity;
-
-BOOST_UNITS_STATIC_CONSTANT(centimeter_per_second,velocity);
-BOOST_UNITS_STATIC_CONSTANT(centimeters_per_second,velocity);
-BOOST_UNITS_STATIC_CONSTANT(centimetre_per_second,velocity);
-BOOST_UNITS_STATIC_CONSTANT(centimetres_per_second,velocity);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_VELOCITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/volume.hpp b/contrib/restricted/boost/boost/units/systems/cgs/volume.hpp
deleted file mode 100644
index 5e40cba09f..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/volume.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_VOLUME_HPP
-#define BOOST_UNITS_CGS_VOLUME_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/volume.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<volume_dimension,cgs::system> volume;
-
-BOOST_UNITS_STATIC_CONSTANT(cubic_centimeter,volume);
-BOOST_UNITS_STATIC_CONSTANT(cubic_centimeters,volume);
-BOOST_UNITS_STATIC_CONSTANT(cubic_centimetre,volume);
-BOOST_UNITS_STATIC_CONSTANT(cubic_centimetres,volume);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_VOLUME_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/cgs/wavenumber.hpp b/contrib/restricted/boost/boost/units/systems/cgs/wavenumber.hpp
deleted file mode 100644
index 69c99ca5da..0000000000
--- a/contrib/restricted/boost/boost/units/systems/cgs/wavenumber.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CGS_WAVENUMBER_HPP
-#define BOOST_UNITS_CGS_WAVENUMBER_HPP
-
-#include <boost/units/systems/cgs/base.hpp>
-#include <boost/units/physical_dimensions/wavenumber.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace cgs {
-
-typedef unit<wavenumber_dimension,cgs::system> wavenumber;
-
-BOOST_UNITS_STATIC_CONSTANT(kayser,wavenumber);
-BOOST_UNITS_STATIC_CONSTANT(kaysers,wavenumber);
-BOOST_UNITS_STATIC_CONSTANT(reciprocal_centimeter,wavenumber);
-BOOST_UNITS_STATIC_CONSTANT(reciprocal_centimeters,wavenumber);
-BOOST_UNITS_STATIC_CONSTANT(reciprocal_centimetre,wavenumber);
-BOOST_UNITS_STATIC_CONSTANT(reciprocal_centimetres,wavenumber);
-
-} // namespace cgs
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CGS_WAVENUMBER_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/detail/constants.hpp b/contrib/restricted/boost/boost/units/systems/detail/constants.hpp
deleted file mode 100644
index 692efa4eb6..0000000000
--- a/contrib/restricted/boost/boost/units/systems/detail/constants.hpp
+++ /dev/null
@@ -1,278 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CONSTANTS_HPP
-#define BOOST_UNITS_CONSTANTS_HPP
-
-#include <boost/config/no_tr1/cmath.hpp>
-#include <iosfwd>
-#include <iomanip>
-
-#include <boost/io/ios_state.hpp>
-
-#include <boost/units/static_constant.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/operators.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/detail/one.hpp>
-
-namespace boost {
-
-namespace units {
-
-template<class Base>
-struct constant
-{
- typedef typename Base::value_type value_type;
- BOOST_CONSTEXPR operator value_type() const { return Base().value(); }
- BOOST_CONSTEXPR value_type value() const { return Base().value(); }
- BOOST_CONSTEXPR value_type uncertainty() const { return Base().uncertainty(); }
- BOOST_CONSTEXPR value_type lower_bound() const { return Base().lower_bound(); }
- BOOST_CONSTEXPR value_type upper_bound() const { return Base().upper_bound(); }
-};
-
-template<class Base>
-struct physical_constant
-{
- typedef typename Base::value_type value_type;
- BOOST_CONSTEXPR operator value_type() const { return Base().value(); }
- BOOST_CONSTEXPR value_type value() const { return Base().value(); }
- BOOST_CONSTEXPR value_type uncertainty() const { return Base().uncertainty(); }
- BOOST_CONSTEXPR value_type lower_bound() const { return Base().lower_bound(); }
- BOOST_CONSTEXPR value_type upper_bound() const { return Base().upper_bound(); }
-};
-
-#define BOOST_UNITS_DEFINE_HELPER(name, symbol, template_name) \
- \
-template<class T, class Arg1, class Arg2> \
-struct name ## _typeof_helper<constant<T>, template_name<Arg1, Arg2> >\
-{ \
- typedef typename name ## _typeof_helper<typename T::value_type, template_name<Arg1, Arg2> >::type type;\
-}; \
- \
-template<class T, class Arg1, class Arg2> \
-struct name ## _typeof_helper<template_name<Arg1, Arg2>, constant<T> >\
-{ \
- typedef typename name ## _typeof_helper<template_name<Arg1, Arg2>, typename T::value_type>::type type;\
-}; \
- \
-template<class T, class Arg1, class Arg2> \
-BOOST_CONSTEXPR \
-typename name ## _typeof_helper<typename T::value_type, template_name<Arg1, Arg2> >::type \
-operator symbol(const constant<T>& t, const template_name<Arg1, Arg2>& u)\
-{ \
- return(t.value() symbol u); \
-} \
- \
-template<class T, class Arg1, class Arg2> \
-BOOST_CONSTEXPR \
-typename name ## _typeof_helper<template_name<Arg1, Arg2>, typename T::value_type>::type \
-operator symbol(const template_name<Arg1, Arg2>& u, const constant<T>& t)\
-{ \
- return(u symbol t.value()); \
-}
-
-BOOST_UNITS_DEFINE_HELPER(add, +, unit)
-BOOST_UNITS_DEFINE_HELPER(add, +, quantity)
-BOOST_UNITS_DEFINE_HELPER(subtract, -, unit)
-BOOST_UNITS_DEFINE_HELPER(subtract, -, quantity)
-BOOST_UNITS_DEFINE_HELPER(multiply, *, unit)
-BOOST_UNITS_DEFINE_HELPER(multiply, *, quantity)
-BOOST_UNITS_DEFINE_HELPER(divide, /, unit)
-BOOST_UNITS_DEFINE_HELPER(divide, /, quantity)
-
-#undef BOOST_UNITS_DEFINE_HELPER
-
-#define BOOST_UNITS_DEFINE_HELPER(name, symbol) \
- \
-template<class T1, class T2> \
-struct name ## _typeof_helper<constant<T1>, constant<T2> > \
-{ \
- typedef typename name ## _typeof_helper<typename T1::value_type, typename T2::value_type>::type type;\
-}; \
- \
-template<class T1, class T2> \
-BOOST_CONSTEXPR \
-typename name ## _typeof_helper<typename T1::value_type, typename T2::value_type>::type \
-operator symbol(const constant<T1>& t, const constant<T2>& u) \
-{ \
- return(t.value() symbol u.value()); \
-} \
- \
-template<class T1, class T2> \
-struct name ## _typeof_helper<constant<T1>, T2> \
-{ \
- typedef typename name ## _typeof_helper<typename T1::value_type, T2>::type type;\
-}; \
- \
-template<class T1, class T2> \
-struct name ## _typeof_helper<T1, constant<T2> > \
-{ \
- typedef typename name ## _typeof_helper<T1, typename T2::value_type>::type type;\
-}; \
- \
-template<class T1, class T2> \
-BOOST_CONSTEXPR \
-typename name ## _typeof_helper<typename T1::value_type, T2>::type \
-operator symbol(const constant<T1>& t, const T2& u) \
-{ \
- return(t.value() symbol u); \
-} \
- \
-template<class T1, class T2> \
-BOOST_CONSTEXPR \
-typename name ## _typeof_helper<T1, typename T2::value_type>::type \
-operator symbol(const T1& t, const constant<T2>& u) \
-{ \
- return(t symbol u.value()); \
-}
-
-BOOST_UNITS_DEFINE_HELPER(add, +)
-BOOST_UNITS_DEFINE_HELPER(subtract, -)
-BOOST_UNITS_DEFINE_HELPER(multiply, *)
-BOOST_UNITS_DEFINE_HELPER(divide, /)
-
-#undef BOOST_UNITS_DEFINE_HELPER
-
-#define BOOST_UNITS_DEFINE_HELPER(name, symbol) \
- \
-template<class T1> \
-struct name ## _typeof_helper<constant<T1>, one> \
-{ \
- typedef typename name ## _typeof_helper<typename T1::value_type, one>::type type;\
-}; \
- \
-template<class T2> \
-struct name ## _typeof_helper<one, constant<T2> > \
-{ \
- typedef typename name ## _typeof_helper<one, typename T2::value_type>::type type;\
-}; \
- \
-template<class T1> \
-BOOST_CONSTEXPR \
-typename name ## _typeof_helper<typename T1::value_type, one>::type \
-operator symbol(const constant<T1>& t, const one& u) \
-{ \
- return(t.value() symbol u); \
-} \
- \
-template<class T2> \
-BOOST_CONSTEXPR \
-typename name ## _typeof_helper<one, typename T2::value_type>::type \
-operator symbol(const one& t, const constant<T2>& u) \
-{ \
- return(t symbol u.value()); \
-}
-
-BOOST_UNITS_DEFINE_HELPER(multiply, *)
-BOOST_UNITS_DEFINE_HELPER(divide, /)
-
-#undef BOOST_UNITS_DEFINE_HELPER
-
-template<class T1, long N, long D>
-struct power_typeof_helper<constant<T1>, static_rational<N,D> >
-{
- typedef power_typeof_helper<typename T1::value_type, static_rational<N,D> > base;
- typedef typename base::type type;
- static BOOST_CONSTEXPR type value(const constant<T1>& arg)
- {
- return base::value(arg.value());
- }
-};
-
-#define BOOST_UNITS_DEFINE_HELPER(name, symbol) \
- \
-template<class T1, class E> \
-struct name ## _typeof_helper<constant<T1> > \
-{ \
- typedef typename name ## _typeof_helper<typename T1::value_type, E>::type type;\
-}; \
- \
-template<class T1> \
-BOOST_CONSTEXPR \
-typename name ## _typeof_helper<typename T1::value_type, one>::type \
-operator symbol(const constant<T1>& t, const one& u) \
-{ \
- return(t.value() symbol u); \
-} \
- \
-template<class T2> \
-BOOST_CONSTEXPR \
-typename name ## _typeof_helper<one, typename T2::value_type>::type \
-operator symbol(const one& t, const constant<T2>& u) \
-{ \
- return(t symbol u.value()); \
-}
-
-#define BOOST_UNITS_PHYSICAL_CONSTANT(name, type, value_, uncertainty_) \
-struct name ## _t { \
- typedef type value_type; \
- BOOST_CONSTEXPR operator value_type() const { return value_; } \
- BOOST_CONSTEXPR value_type value() const { return value_; } \
- BOOST_CONSTEXPR value_type uncertainty() const { return uncertainty_; } \
- BOOST_CONSTEXPR value_type lower_bound() const { return value_-uncertainty_; } \
- BOOST_CONSTEXPR value_type upper_bound() const { return value_+uncertainty_; } \
-}; \
-BOOST_UNITS_STATIC_CONSTANT(name, boost::units::constant<boost::units::physical_constant<name ## _t> >) = { }
-
-// stream output
-template<class Char, class Traits, class Y>
-inline
-std::basic_ostream<Char,Traits>& operator<<(std::basic_ostream<Char,Traits>& os,const physical_constant<Y>& val)
-{
- boost::io::ios_precision_saver precision_saver(os);
- //boost::io::ios_width_saver width_saver(os);
- boost::io::ios_flags_saver flags_saver(os);
-
- //os << std::setw(21);
- typedef typename Y::value_type value_type;
-
- if (val.uncertainty() > value_type())
- {
- const double relative_uncertainty = std::abs(val.uncertainty()/val.value());
-
- const double exponent = std::log10(relative_uncertainty);
- const long digits_of_precision = static_cast<long>(std::ceil(std::abs(exponent)))+3;
-
- // should try to replicate NIST CODATA syntax
- os << std::setprecision(digits_of_precision)
- //<< std::setw(digits_of_precision+8)
- //<< std::scientific
- << val.value();
-// << long(10*(relative_uncertainty/std::pow(Y(10),Y(exponent))));
-
- os << " (rel. unc. = "
- << std::setprecision(1)
- //<< std::setw(7)
- << std::scientific
- << relative_uncertainty << ")";
- }
- else
- {
- os << val.value() << " (exact)";
- }
-
- return os;
-}
-
-// stream output
-template<class Char, class Traits, class Y>
-inline
-std::basic_ostream<Char,Traits>& operator<<(std::basic_ostream<Char,Traits>& os,const constant<Y>&)
-{
- os << Y();
- return os;
-}
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/information.hpp b/contrib/restricted/boost/boost/units/systems/information.hpp
deleted file mode 100644
index a3ceb65bb9..0000000000
--- a/contrib/restricted/boost/boost/units/systems/information.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_INFORMATION_HPP
-#define BOOST_UNITS_INFORMATION_HPP
-
-#include <boost/units/systems/information/byte.hpp>
-#include <boost/units/systems/information/bit.hpp>
-#include <boost/units/systems/information/nat.hpp>
-#include <boost/units/systems/information/hartley.hpp>
-#include <boost/units/systems/information/shannon.hpp>
-#include <boost/units/systems/information/prefixes.hpp>
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/systems/information/bit.hpp b/contrib/restricted/boost/boost/units/systems/information/bit.hpp
deleted file mode 100644
index bd8f34bb8a..0000000000
--- a/contrib/restricted/boost/boost/units/systems/information/bit.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_SYSTEMS_INFORMATION_BIT_HPP_INCLUDED
-#define BOOST_UNITS_SYSTEMS_INFORMATION_BIT_HPP_INCLUDED
-
-#include <boost/units/systems/information/byte.hpp>
-#include <boost/units/base_units/information/bit.hpp>
-
-namespace boost {
-namespace units {
-namespace information {
-
-namespace hu {
-namespace bit {
-typedef unit<information_dimension, make_system<bit_base_unit>::type> info;
-} // namespace bit
-} // namespace hu
-
-BOOST_UNITS_STATIC_CONSTANT(bit, hu::bit::info);
-BOOST_UNITS_STATIC_CONSTANT(bits, hu::bit::info);
-
-} // namespace information
-} // namespace units
-} // namespace boost
-
-#endif // BOOST_UNITS_SYSTEMS_INFORMATION_BIT_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/systems/information/byte.hpp b/contrib/restricted/boost/boost/units/systems/information/byte.hpp
deleted file mode 100644
index 8ea743cd9d..0000000000
--- a/contrib/restricted/boost/boost/units/systems/information/byte.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_SYSTEMS_INFORMATION_BYTE_HPP_INCLUDED
-#define BOOST_UNITS_SYSTEMS_INFORMATION_BYTE_HPP_INCLUDED
-
-#include <boost/units/make_system.hpp>
-#include <boost/units/unit.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/base_units/information/byte.hpp>
-
-namespace boost {
-namespace units {
-namespace information {
-
-typedef make_system<byte_base_unit>::type system;
-
-typedef unit<dimensionless_type, system> dimensionless;
-
-namespace hu {
-namespace byte {
-typedef unit<information_dimension, system> info;
-} // namespace bit
-} // namespace hu
-
-BOOST_UNITS_STATIC_CONSTANT(byte, hu::byte::info);
-BOOST_UNITS_STATIC_CONSTANT(bytes, hu::byte::info);
-
-// I'm going to define boost::units::information::info (the "default")
-// to be hu::byte::info -- other variants such as hu::bit::info, hu::nat::info, etc
-// must be explicitly referred to
-typedef hu::byte::info info;
-
-} // namespace information
-} // namespace units
-} // namespace boost
-
-#endif // BOOST_UNITS_SYSTEMS_INFORMATION_BYTE_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/systems/information/hartley.hpp b/contrib/restricted/boost/boost/units/systems/information/hartley.hpp
deleted file mode 100644
index d0b25b7bce..0000000000
--- a/contrib/restricted/boost/boost/units/systems/information/hartley.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_SYSTEMS_INFORMATION_HARTLEY_HPP_INCLUDED
-#define BOOST_UNITS_SYSTEMS_INFORMATION_HARTLEY_HPP_INCLUDED
-
-#include <boost/units/systems/information/byte.hpp>
-#include <boost/units/base_units/information/hartley.hpp>
-
-namespace boost {
-namespace units {
-namespace information {
-
-namespace hu {
-namespace hartley {
-typedef unit<information_dimension, make_system<hartley_base_unit>::type> info;
-} // namespace bit
-} // namespace hu
-
-BOOST_UNITS_STATIC_CONSTANT(hartley, hu::hartley::info);
-BOOST_UNITS_STATIC_CONSTANT(hartleys, hu::hartley::info);
-
-} // namespace information
-} // namespace units
-} // namespace boost
-
-#endif // BOOST_UNITS_SYSTEMS_INFORMATION_HARTLEY_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/systems/information/nat.hpp b/contrib/restricted/boost/boost/units/systems/information/nat.hpp
deleted file mode 100644
index eb24178940..0000000000
--- a/contrib/restricted/boost/boost/units/systems/information/nat.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_SYSTEMS_INFORMATION_NAT_HPP_INCLUDED
-#define BOOST_UNITS_SYSTEMS_INFORMATION_NAT_HPP_INCLUDED
-
-#include <boost/units/systems/information/byte.hpp>
-#include <boost/units/base_units/information/nat.hpp>
-
-namespace boost {
-namespace units {
-namespace information {
-
-namespace hu {
-namespace nat {
-typedef unit<information_dimension, make_system<nat_base_unit>::type> info;
-} // namespace bit
-} // namespace hu
-
-BOOST_UNITS_STATIC_CONSTANT(nat, hu::nat::info);
-BOOST_UNITS_STATIC_CONSTANT(nats, hu::nat::info);
-
-} // namespace information
-} // namespace units
-} // namespace boost
-
-#endif // BOOST_UNITS_SYSTEMS_INFORMATION_NAT_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/systems/information/prefixes.hpp b/contrib/restricted/boost/boost/units/systems/information/prefixes.hpp
deleted file mode 100644
index 1c092f9ae4..0000000000
--- a/contrib/restricted/boost/boost/units/systems/information/prefixes.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_SYSTEMS_INFORMATION_PREFIXES_HPP_INCLUDED
-#define BOOST_UNITS_SYSTEMS_INFORMATION_PREFIXES_HPP_INCLUDED
-
-#include <boost/units/make_scaled_unit.hpp>
-#include <boost/units/static_rational.hpp>
-#include <boost/units/scale.hpp>
-
-#include <boost/units/systems/information/byte.hpp>
-
-#define BOOST_UNITS_INFOSYS_PREFIX(exponent, name) \
- typedef make_scaled_unit<dimensionless, scale<2, static_rational<exponent> > >::type name ## _pf_type; \
- BOOST_UNITS_STATIC_CONSTANT(name, name ## _pf_type)
-
-namespace boost {
-namespace units {
-namespace information {
-
-// Note, these are defined (somewhat arbitrarily) against the 'byte' system.
-// They work smoothly with bit_information, nat_information, etc, so it is
-// transparent to the user.
-BOOST_UNITS_INFOSYS_PREFIX(10, kibi);
-BOOST_UNITS_INFOSYS_PREFIX(20, mebi);
-BOOST_UNITS_INFOSYS_PREFIX(30, gibi);
-BOOST_UNITS_INFOSYS_PREFIX(40, tebi);
-BOOST_UNITS_INFOSYS_PREFIX(50, pebi);
-BOOST_UNITS_INFOSYS_PREFIX(60, exbi);
-BOOST_UNITS_INFOSYS_PREFIX(70, zebi);
-BOOST_UNITS_INFOSYS_PREFIX(80, yobi);
-
-} // namespace information
-} // namespace units
-} // namespace boost
-
-#undef BOOST_UNITS_INFOSYS_PREFIX
-
-#endif // BOOST_UNITS_SYSTEMS_INFORMATION_PREFIXES_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/systems/information/shannon.hpp b/contrib/restricted/boost/boost/units/systems/information/shannon.hpp
deleted file mode 100644
index e3069c953a..0000000000
--- a/contrib/restricted/boost/boost/units/systems/information/shannon.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2014 Erik Erlandson
-//
-// 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)
-
-#ifndef BOOST_UNITS_SYSTEMS_INFORMATION_SHANNON_HPP_INCLUDED
-#define BOOST_UNITS_SYSTEMS_INFORMATION_SHANNON_HPP_INCLUDED
-
-#include <boost/units/systems/information/byte.hpp>
-#include <boost/units/base_units/information/shannon.hpp>
-
-namespace boost {
-namespace units {
-namespace information {
-
-namespace hu {
-namespace shannon {
-typedef unit<information_dimension, make_system<shannon_base_unit>::type> info;
-} // namespace bit
-} // namespace hu
-
-BOOST_UNITS_STATIC_CONSTANT(shannon, hu::shannon::info);
-BOOST_UNITS_STATIC_CONSTANT(shannons, hu::shannon::info);
-
-} // namespace information
-} // namespace units
-} // namespace boost
-
-#endif // BOOST_UNITS_SYSTEMS_INFORMATION_SHANNON_HPP_INCLUDED
diff --git a/contrib/restricted/boost/boost/units/systems/si.hpp b/contrib/restricted/boost/boost/units/systems/si.hpp
deleted file mode 100644
index 727982b44a..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_HPP
-#define BOOST_UNITS_SI_HPP
-
-/// \file
-/// Includes all the si unit headers
-
-#include <string>
-
-#include <boost/units/quantity.hpp>
-
-#include <boost/units/systems/si/base.hpp>
-
-#include <boost/units/systems/si/absorbed_dose.hpp>
-#include <boost/units/systems/si/acceleration.hpp>
-#include <boost/units/systems/si/action.hpp>
-#include <boost/units/systems/si/activity.hpp>
-#include <boost/units/systems/si/amount.hpp>
-#include <boost/units/systems/si/angular_acceleration.hpp>
-#include <boost/units/systems/si/angular_momentum.hpp>
-#include <boost/units/systems/si/angular_velocity.hpp>
-#include <boost/units/systems/si/area.hpp>
-#include <boost/units/systems/si/capacitance.hpp>
-#include <boost/units/systems/si/catalytic_activity.hpp>
-#include <boost/units/systems/si/conductance.hpp>
-#include <boost/units/systems/si/conductivity.hpp>
-#include <boost/units/systems/si/current.hpp>
-#include <boost/units/systems/si/dimensionless.hpp>
-#include <boost/units/systems/si/dose_equivalent.hpp>
-#include <boost/units/systems/si/dynamic_viscosity.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/electric_potential.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/force.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/illuminance.hpp>
-#include <boost/units/systems/si/impedance.hpp>
-#include <boost/units/systems/si/inductance.hpp>
-#include <boost/units/systems/si/kinematic_viscosity.hpp>
-#include <boost/units/systems/si/length.hpp>
-#include <boost/units/systems/si/luminous_flux.hpp>
-#include <boost/units/systems/si/luminous_intensity.hpp>
-#include <boost/units/systems/si/magnetic_field_intensity.hpp>
-#include <boost/units/systems/si/magnetic_flux.hpp>
-#include <boost/units/systems/si/magnetic_flux_density.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/mass_density.hpp>
-#include <boost/units/systems/si/moment_of_inertia.hpp>
-#include <boost/units/systems/si/momentum.hpp>
-#include <boost/units/systems/si/permeability.hpp>
-#include <boost/units/systems/si/permittivity.hpp>
-#include <boost/units/systems/si/plane_angle.hpp>
-#include <boost/units/systems/si/power.hpp>
-#include <boost/units/systems/si/pressure.hpp>
-#include <boost/units/systems/si/reluctance.hpp>
-#include <boost/units/systems/si/resistance.hpp>
-#include <boost/units/systems/si/resistivity.hpp>
-#include <boost/units/systems/si/solid_angle.hpp>
-#include <boost/units/systems/si/surface_density.hpp>
-#include <boost/units/systems/si/surface_tension.hpp>
-#include <boost/units/systems/si/temperature.hpp>
-#include <boost/units/systems/si/time.hpp>
-#include <boost/units/systems/si/torque.hpp>
-#include <boost/units/systems/si/velocity.hpp>
-#include <boost/units/systems/si/volume.hpp>
-#include <boost/units/systems/si/wavenumber.hpp>
-
-#endif // BOOST_UNITS_SI_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/absorbed_dose.hpp b/contrib/restricted/boost/boost/units/systems/si/absorbed_dose.hpp
deleted file mode 100644
index f59ec513b1..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/absorbed_dose.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_ABSORBED_DOSE_HPP
-#define BOOST_UNITS_SI_ABSORBED_DOSE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/absorbed_dose.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<absorbed_dose_dimension,si::system> absorbed_dose;
-
-BOOST_UNITS_STATIC_CONSTANT(gray,absorbed_dose);
-BOOST_UNITS_STATIC_CONSTANT(grays,absorbed_dose);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_ABSORBED_DOSE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/acceleration.hpp b/contrib/restricted/boost/boost/units/systems/si/acceleration.hpp
deleted file mode 100644
index 54ac29f0b8..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/acceleration.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_ACCELERATION_HPP
-#define BOOST_UNITS_SI_ACCELERATION_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/acceleration.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<acceleration_dimension,si::system> acceleration;
-
-BOOST_UNITS_STATIC_CONSTANT(meter_per_second_squared,acceleration);
-BOOST_UNITS_STATIC_CONSTANT(meters_per_second_squared,acceleration);
-BOOST_UNITS_STATIC_CONSTANT(metre_per_second_squared,acceleration);
-BOOST_UNITS_STATIC_CONSTANT(metres_per_second_squared,acceleration);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_ACCELERATION_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/action.hpp b/contrib/restricted/boost/boost/units/systems/si/action.hpp
deleted file mode 100644
index 43b6629369..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/action.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_ACTION_HPP
-#define BOOST_UNITS_SI_ACTION_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/action.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<action_dimension,si::system> action;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_ACTION_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/activity.hpp b/contrib/restricted/boost/boost/units/systems/si/activity.hpp
deleted file mode 100644
index d31f0028d2..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/activity.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_ACTIVITY_HPP
-#define BOOST_UNITS_SI_ACTIVITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/activity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<activity_dimension,si::system> activity;
-
-BOOST_UNITS_STATIC_CONSTANT(becquerel,activity);
-BOOST_UNITS_STATIC_CONSTANT(becquerels,activity);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_ACTIVITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/amount.hpp b/contrib/restricted/boost/boost/units/systems/si/amount.hpp
deleted file mode 100644
index 7fe8f413cd..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/amount.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_AMOUNT_HPP
-#define BOOST_UNITS_SI_AMOUNT_HPP
-
-#include <boost/units/systems/si/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<amount_dimension,si::system> amount;
-
-BOOST_UNITS_STATIC_CONSTANT(mole,amount);
-BOOST_UNITS_STATIC_CONSTANT(moles,amount);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_AMOUNT_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/angular_acceleration.hpp b/contrib/restricted/boost/boost/units/systems/si/angular_acceleration.hpp
deleted file mode 100644
index ff20102691..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/angular_acceleration.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_ANGULAR_ACCELERATION_HPP
-#define BOOST_UNITS_SI_ANGULAR_ACCELERATION_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/angular_acceleration.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<angular_acceleration_dimension,si::system> angular_acceleration;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_ANGULAR_ACCELERATION_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/angular_momentum.hpp b/contrib/restricted/boost/boost/units/systems/si/angular_momentum.hpp
deleted file mode 100644
index 7c20f5b4b5..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/angular_momentum.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_ANGULAR_MOMENTUM_HPP
-#define BOOST_UNITS_SI_ANGULAR_MOMENTUM_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/angular_momentum.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<angular_momentum_dimension,si::system> angular_momentum;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_ANGULAR_MOMENTUM_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/angular_velocity.hpp b/contrib/restricted/boost/boost/units/systems/si/angular_velocity.hpp
deleted file mode 100644
index 3149dc6eef..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/angular_velocity.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_ANGULAR_VELOCITY_HPP
-#define BOOST_UNITS_SI_ANGULAR_VELOCITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/angular_velocity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<angular_velocity_dimension,si::system> angular_velocity;
-
-BOOST_UNITS_STATIC_CONSTANT(radian_per_second,angular_velocity);
-BOOST_UNITS_STATIC_CONSTANT(radians_per_second,angular_velocity);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_ANGULAR_VELOCITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/area.hpp b/contrib/restricted/boost/boost/units/systems/si/area.hpp
deleted file mode 100644
index 568b80a5da..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/area.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_AREA_HPP
-#define BOOST_UNITS_SI_AREA_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/area.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<area_dimension,si::system> area;
-
-BOOST_UNITS_STATIC_CONSTANT(square_meter,area);
-BOOST_UNITS_STATIC_CONSTANT(square_meters,area);
-BOOST_UNITS_STATIC_CONSTANT(square_metre,area);
-BOOST_UNITS_STATIC_CONSTANT(square_metres,area);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_AREA_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/base.hpp b/contrib/restricted/boost/boost/units/systems/si/base.hpp
deleted file mode 100644
index 469b294297..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/base.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_BASE_HPP
-#define BOOST_UNITS_SI_BASE_HPP
-
-#include <string>
-
-#include <boost/units/static_constant.hpp>
-#include <boost/units/unit.hpp>
-#include <boost/units/make_system.hpp>
-
-#include <boost/units/base_units/si/meter.hpp>
-#include <boost/units/base_units/si/kilogram.hpp>
-#include <boost/units/base_units/si/second.hpp>
-#include <boost/units/base_units/si/ampere.hpp>
-#include <boost/units/base_units/si/kelvin.hpp>
-#include <boost/units/base_units/si/mole.hpp>
-#include <boost/units/base_units/si/candela.hpp>
-#include <boost/units/base_units/angle/radian.hpp>
-#include <boost/units/base_units/angle/steradian.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-/// placeholder class defining si unit system
-typedef make_system<meter_base_unit,
- kilogram_base_unit,
- second_base_unit,
- ampere_base_unit,
- kelvin_base_unit,
- mole_base_unit,
- candela_base_unit,
- angle::radian_base_unit,
- angle::steradian_base_unit>::type system;
-
-/// dimensionless si unit
-typedef unit<dimensionless_type,system> dimensionless;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_BASE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/capacitance.hpp b/contrib/restricted/boost/boost/units/systems/si/capacitance.hpp
deleted file mode 100644
index 076de71de9..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/capacitance.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_CAPACITANCE_HPP
-#define BOOST_UNITS_SI_CAPACITANCE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/capacitance.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<capacitance_dimension,si::system> capacitance;
-
-BOOST_UNITS_STATIC_CONSTANT(farad,capacitance);
-BOOST_UNITS_STATIC_CONSTANT(farads,capacitance);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_CAPACITANCE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/catalytic_activity.hpp b/contrib/restricted/boost/boost/units/systems/si/catalytic_activity.hpp
deleted file mode 100644
index 2a2e538657..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/catalytic_activity.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_CATALYTIC_ACTIVITY_HPP
-#define BOOST_UNITS_SI_CATALYTIC_ACTIVITY_HPP
-
-#include <boost/units/derived_dimension.hpp>
-#include <boost/units/systems/si/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-/// catalytic activity : T^-1 A^1
-typedef derived_dimension<time_base_dimension,-1,amount_base_dimension,1>::type catalytic_activity_dim;
-
-typedef unit<si::catalytic_activity_dim,si::system> catalytic_activity;
-
-BOOST_UNITS_STATIC_CONSTANT(katal,catalytic_activity);
-BOOST_UNITS_STATIC_CONSTANT(katals,catalytic_activity);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_CATALYTIC_ACTIVITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/alpha_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/alpha_constants.hpp
deleted file mode 100644
index fa6e7f5a21..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/alpha_constants.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_ALPHA_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_ALPHA_CONSTANTS_HPP
-
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/systems/detail/constants.hpp>
-#include <boost/units/systems/si/amount.hpp>
-#include <boost/units/systems/si/area.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/length.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/magnetic_flux_density.hpp>
-#include <boost/units/systems/si/time.hpp>
-#include <boost/units/systems/si/wavenumber.hpp>
-
-#include <boost/units/systems/si/codata/typedefs.hpp>
-
-/// \file
-/// CODATA recommended values of fundamental atomic and nuclear constants
-/// CODATA 2006 values as of 2007/03/30
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-/// CODATA recommended values of the fundamental physical constants: NIST SP 961
-
-/// alpha particle mass
-BOOST_UNITS_PHYSICAL_CONSTANT(m_alpha,quantity<mass>,6.64465620e-27*kilograms,3.3e-34*kilograms);
-/// alpha-electron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_alpha_over_m_e,quantity<dimensionless>,7294.2995365*dimensionless(),3.1e-6*dimensionless());
-/// alpha-proton mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_alpha_over_m_p,quantity<dimensionless>,3.97259968951*dimensionless(),4.1e-10*dimensionless());
-/// alpha molar mass
-BOOST_UNITS_PHYSICAL_CONSTANT(M_alpha,quantity<mass_over_amount>,4.001506179127e-3*kilograms/mole,6.2e-14*kilograms/mole);
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_ALPHA_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/atomic-nuclear_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/atomic-nuclear_constants.hpp
deleted file mode 100644
index 80b4c279e2..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/atomic-nuclear_constants.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_ATOMIC_AND_NUCLEAR_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_ATOMIC_AND_NUCLEAR_CONSTANTS_HPP
-
-#include <boost/units/systems/si/codata/alpha_constants.hpp>
-#include <boost/units/systems/si/codata/deuteron_constants.hpp>
-#include <boost/units/systems/si/codata/electron_constants.hpp>
-#include <boost/units/systems/si/codata/helion_constants.hpp>
-#include <boost/units/systems/si/codata/muon_constants.hpp>
-#include <boost/units/systems/si/codata/neutron_constants.hpp>
-#include <boost/units/systems/si/codata/proton_constants.hpp>
-#include <boost/units/systems/si/codata/tau_constants.hpp>
-#include <boost/units/systems/si/codata/triton_constants.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-/// CODATA recommended values of the fundamental physical constants: NIST SP 961
-
-// ATOMIC AND NUCLEAR
-/// fine structure constant
-BOOST_UNITS_PHYSICAL_CONSTANT(alpha,quantity<dimensionless>,7.2973525376e-3*dimensionless(),5.0e-12*dimensionless());
-/// Rydberg constant
-BOOST_UNITS_PHYSICAL_CONSTANT(R_infinity,quantity<wavenumber>,10973731.568527/meter,7.3e-5/meter);
-/// Bohr radius
-BOOST_UNITS_PHYSICAL_CONSTANT(a_0,quantity<length>,0.52917720859e-10*meters,3.6e-20*meters);
-/// Hartree energy
-BOOST_UNITS_PHYSICAL_CONSTANT(E_h,quantity<energy>,4.35974394e-18*joules,2.2e-25*joules);
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_ATOMIC_AND_NUCLEAR_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/deuteron_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/deuteron_constants.hpp
deleted file mode 100644
index 167c576756..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/deuteron_constants.hpp
+++ /dev/null
@@ -1,82 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_DEUTERON_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_DEUTERON_CONSTANTS_HPP
-
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/systems/detail/constants.hpp>
-#include <boost/units/systems/si/amount.hpp>
-#include <boost/units/systems/si/area.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/length.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/magnetic_flux_density.hpp>
-#include <boost/units/systems/si/time.hpp>
-#include <boost/units/systems/si/wavenumber.hpp>
-
-#include <boost/units/systems/si/codata/typedefs.hpp>
-
-/// \file
-/// CODATA recommended values of fundamental atomic and nuclear constants
-/// CODATA 2006 values as of 2007/03/30
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-/// CODATA recommended values of the fundamental physical constants: NIST SP 961
-
-/// deuteron mass
-BOOST_UNITS_PHYSICAL_CONSTANT(m_d,quantity<mass>,3.34358320e-27*kilograms,1.7e-34*kilograms);
-/// deuteron-electron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_d_over_m_e,quantity<dimensionless>,3670.4829654*dimensionless(),1.6e-6*dimensionless());
-/// deuteron-proton mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_d_over_m_p,quantity<dimensionless>,1.99900750108*dimensionless(),2.2e-10*dimensionless());
-/// deuteron molar mass
-BOOST_UNITS_PHYSICAL_CONSTANT(M_d,quantity<mass_over_amount>,2.013553212724e-3*kilograms/mole,7.8e-14*kilograms/mole);
-/// deuteron rms charge radius
-BOOST_UNITS_PHYSICAL_CONSTANT(R_d,quantity<length>,2.1402e-15*meters,2.8e-18*meters);
-/// deuteron magnetic moment
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_d,quantity<energy_over_magnetic_flux_density>,0.433073465e-26*joules/tesla,1.1e-34*joules/tesla);
-/// deuteron-Bohr magneton ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_d_over_mu_B,quantity<dimensionless>,0.4669754556e-3*dimensionless(),3.9e-12*dimensionless());
-/// deuteron-nuclear magneton ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_d_over_mu_N,quantity<dimensionless>,0.8574382308*dimensionless(),7.2e-9*dimensionless());
-/// deuteron g-factor
-BOOST_UNITS_PHYSICAL_CONSTANT(g_d,quantity<dimensionless>,0.8574382308*dimensionless(),7.2e-9*dimensionless());
-/// deuteron-electron magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_d_over_mu_e,quantity<dimensionless>,-4.664345537e-4*dimensionless(),3.9e-12*dimensionless());
-/// deuteron-proton magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_d_over_mu_p,quantity<dimensionless>,0.3070122070*dimensionless(),2.4e-9*dimensionless());
-/// deuteron-neutron magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_d_over_mu_n,quantity<dimensionless>,-0.44820652*dimensionless(),1.1e-7*dimensionless());
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_DEUTERON_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/electromagnetic_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/electromagnetic_constants.hpp
deleted file mode 100644
index bad7be528a..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/electromagnetic_constants.hpp
+++ /dev/null
@@ -1,75 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_ELECTROMAGNETIC_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_ELECTROMAGNETIC_CONSTANTS_HPP
-
-///
-/// \file
-/// \brief CODATA recommended values of fundamental electromagnetic constants.
-/// \details CODATA recommended values of the fundamental physical constants: NIST SP 961
-/// CODATA 2006 values as of 2007/03/30
-///
-
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/systems/detail/constants.hpp>
-#include <boost/units/systems/si/conductance.hpp>
-#include <boost/units/systems/si/current.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/electric_potential.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/magnetic_flux.hpp>
-#include <boost/units/systems/si/magnetic_flux_density.hpp>
-#include <boost/units/systems/si/resistance.hpp>
-
-#include <boost/units/systems/si/codata/typedefs.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-// ELECTROMAGNETIC
-/// elementary charge
-BOOST_UNITS_PHYSICAL_CONSTANT(e,quantity<electric_charge>,1.602176487e-19*coulombs,4.0e-27*coulombs);
-/// elementary charge to Planck constant ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(e_over_h,quantity<current_over_energy>,2.417989454e14*amperes/joule,6.0e6*amperes/joule);
-/// magnetic flux quantum
-BOOST_UNITS_PHYSICAL_CONSTANT(Phi_0,quantity<magnetic_flux>,2.067833667e-15*webers,5.2e-23*webers);
-/// conductance quantum
-BOOST_UNITS_PHYSICAL_CONSTANT(G_0,quantity<conductance>,7.7480917004e-5*siemens,5.3e-14*siemens);
-/// Josephson constant
-BOOST_UNITS_PHYSICAL_CONSTANT(K_J,quantity<frequency_over_electric_potential>,483597.891e9*hertz/volt,1.2e7*hertz/volt);
-/// von Klitzing constant
-BOOST_UNITS_PHYSICAL_CONSTANT(R_K,quantity<resistance>,25812.807557*ohms,1.77e-5*ohms);
-/// Bohr magneton
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_B,quantity<energy_over_magnetic_flux_density>,927.400915e-26*joules/tesla,2.3e-31*joules/tesla);
-/// nuclear magneton
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_N,quantity<energy_over_magnetic_flux_density>,5.05078324e-27*joules/tesla,1.3e-34*joules/tesla);
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_ELECTROMAGNETIC_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/electron_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/electron_constants.hpp
deleted file mode 100644
index 4582c79912..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/electron_constants.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_ELECTRON_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_ELECTRON_CONSTANTS_HPP
-
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/systems/detail/constants.hpp>
-#include <boost/units/systems/si/amount.hpp>
-#include <boost/units/systems/si/area.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/length.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/magnetic_flux_density.hpp>
-#include <boost/units/systems/si/time.hpp>
-#include <boost/units/systems/si/wavenumber.hpp>
-
-#include <boost/units/systems/si/codata/typedefs.hpp>
-
-/// \file
-/// CODATA recommended values of fundamental atomic and nuclear constants
-/// CODATA 2006 values as of 2007/03/30
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-/// CODATA recommended values of the fundamental physical constants: NIST SP 961
-
-/// electron mass
-BOOST_UNITS_PHYSICAL_CONSTANT(m_e,quantity<mass>,9.10938215e-31*kilograms,4.5e-38*kilograms);
-/// electron-muon mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_e_over_m_mu,quantity<dimensionless>,4.83633171e-3*dimensionless(),1.2e-10*dimensionless());
-/// electron-tau mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_e_over_m_tau,quantity<dimensionless>,2.87564e-4*dimensionless(),4.7e-8*dimensionless());
-/// electron-proton mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_e_over_m_p,quantity<dimensionless>,5.4461702177e-4*dimensionless(),2.4e-13*dimensionless());
-/// electron-neutron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_e_over_m_n,quantity<dimensionless>,5.4386734459e-4*dimensionless(),3.3e-13*dimensionless());
-/// electron-deuteron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_e_over_m_d,quantity<dimensionless>,2.7244371093e-4*dimensionless(),1.2e-13*dimensionless());
-/// electron-alpha particle mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_e_over_m_alpha,quantity<dimensionless>,1.37093355570e-4*dimensionless(),5.8e-14*dimensionless());
-/// electron charge to mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(e_over_m_e,quantity<electric_charge_over_mass>,1.758820150e11*coulombs/kilogram,4.4e3*coulombs/kilogram);
-/// electron molar mass
-BOOST_UNITS_PHYSICAL_CONSTANT(M_e,quantity<mass_over_amount>,5.4857990943e-7*kilograms/mole,2.3e-16*kilograms/mole);
-/// Compton wavelength
-BOOST_UNITS_PHYSICAL_CONSTANT(lambda_C,quantity<length>,2.4263102175e-12*meters,3.3e-21*meters);
-/// classical electron radius
-BOOST_UNITS_PHYSICAL_CONSTANT(r_e,quantity<length>,2.8179402894e-15*meters,5.8e-24*meters);
-/// Thompson cross section
-BOOST_UNITS_PHYSICAL_CONSTANT(sigma_e,quantity<area>,0.6652458558e-28*square_meters,2.7e-37*square_meters);
-/// electron magnetic moment
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_e,quantity<energy_over_magnetic_flux_density>,-928.476377e-26*joules/tesla,2.3e-31*joules/tesla);
-/// electron-Bohr magenton moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_B,quantity<dimensionless>,-1.00115965218111*dimensionless(),7.4e-13*dimensionless());
-/// electron-nuclear magneton moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_N,quantity<dimensionless>,-183.28197092*dimensionless(),8.0e-7*dimensionless());
-/// electron magnetic moment anomaly
-BOOST_UNITS_PHYSICAL_CONSTANT(a_e,quantity<dimensionless>,1.15965218111e-3*dimensionless(),7.4e-13*dimensionless());
-/// electron g-factor
-BOOST_UNITS_PHYSICAL_CONSTANT(g_e,quantity<dimensionless>,-2.0023193043622*dimensionless(),1.5e-12*dimensionless());
-/// electron-muon magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_mu,quantity<dimensionless>,206.7669877*dimensionless(),5.2e-6*dimensionless());
-/// electron-proton magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_p,quantity<dimensionless>,-658.2106848*dimensionless(),5.4e-6*dimensionless());
-/// electron-shielded proton magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_p_prime,quantity<dimensionless>,-658.2275971*dimensionless(),7.2e-6*dimensionless());
-/// electron-neutron magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_n,quantity<dimensionless>,960.92050*dimensionless(),2.3e-4*dimensionless());
-/// electron-deuteron magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_d,quantity<dimensionless>,-2143.923498*dimensionless(),1.8e-5*dimensionless());
-/// electron-shielded helion magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_e_over_mu_h_prime,quantity<dimensionless>,864.058257*dimensionless(),1.0e-5*dimensionless());
-/// electron gyromagnetic ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(gamma_e,quantity<frequency_over_magnetic_flux_density>,1.760859770e11/second/tesla,4.4e3/second/tesla);
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_ELECTRON_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/helion_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/helion_constants.hpp
deleted file mode 100644
index 4e88242da0..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/helion_constants.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_HELION_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_HELION_CONSTANTS_HPP
-
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/systems/detail/constants.hpp>
-#include <boost/units/systems/si/amount.hpp>
-#include <boost/units/systems/si/area.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/length.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/magnetic_flux_density.hpp>
-#include <boost/units/systems/si/time.hpp>
-#include <boost/units/systems/si/wavenumber.hpp>
-
-#include <boost/units/systems/si/codata/typedefs.hpp>
-
-/// \file
-/// CODATA recommended values of fundamental atomic and nuclear constants
-/// CODATA 2006 values as of 2007/03/30
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-/// CODATA recommended values of the fundamental physical constants: NIST SP 961
-
-/// helion mass
-BOOST_UNITS_PHYSICAL_CONSTANT(m_h,quantity<mass>,5.00641192e-27*kilograms,2.5e-34*kilograms);
-/// helion-electron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_h_over_m_e,quantity<dimensionless>,5495.8852765*dimensionless(),5.2e-6*dimensionless());
-/// helion-proton mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_h_over_m_p,quantity<dimensionless>,2.9931526713*dimensionless(),2.6e-9*dimensionless());
-/// helion molar mass
-BOOST_UNITS_PHYSICAL_CONSTANT(M_h,quantity<mass_over_amount>,3.0149322473e-3*kilograms/mole,2.6e-12*kilograms/mole);
-/// helion shielded magnetic moment
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_h_prime,quantity<energy_over_magnetic_flux_density>,-1.074552982e-26*joules/tesla,3.0e-34*joules/tesla);
-/// shielded helion-Bohr magneton ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_h_prime_over_mu_B,quantity<dimensionless>,-1.158671471e-3*dimensionless(),1.4e-11*dimensionless());
-/// shielded helion-nuclear magneton ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_h_prime_over_mu_N,quantity<dimensionless>,-2.127497718*dimensionless(),2.5e-8*dimensionless());
-/// shielded helion-proton magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_h_prime_over_mu_p,quantity<dimensionless>,-0.761766558*dimensionless(),1.1e-8*dimensionless());
-/// shielded helion-shielded proton magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_h_prime_over_mu_p_prime,quantity<dimensionless>,-0.7617861313*dimensionless(),3.3e-8*dimensionless());
-/// shielded helion gyromagnetic ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(gamma_h_prime,quantity<frequency_over_magnetic_flux_density>,2.037894730e8/second/tesla,5.6e-0/second/tesla);
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_HELION_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/muon_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/muon_constants.hpp
deleted file mode 100644
index c580e3c2ce..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/muon_constants.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_MUON_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_MUON_CONSTANTS_HPP
-
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/systems/detail/constants.hpp>
-#include <boost/units/systems/si/amount.hpp>
-#include <boost/units/systems/si/area.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/length.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/magnetic_flux_density.hpp>
-#include <boost/units/systems/si/time.hpp>
-#include <boost/units/systems/si/wavenumber.hpp>
-
-#include <boost/units/systems/si/codata/typedefs.hpp>
-
-/// \file
-/// CODATA recommended values of fundamental atomic and nuclear constants
-/// CODATA 2006 values as of 2007/03/30
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-/// CODATA recommended values of the fundamental physical constants: NIST SP 961
-
-/// muon mass
-BOOST_UNITS_PHYSICAL_CONSTANT(m_mu,quantity<mass>,1.88353130e-28*kilograms,1.1e-35*kilograms);
-/// muon-electron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_mu_over_m_e,quantity<dimensionless>,206.7682823*dimensionless(),5.2e-6*dimensionless());
-/// muon-tau mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_mu_over_m_tau,quantity<dimensionless>,5.94592e-2*dimensionless(),9.7e-6*dimensionless());
-/// muon-proton mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_mu_over_m_p,quantity<dimensionless>,0.1126095261*dimensionless(),2.9e-9*dimensionless());
-/// muon-neutron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_mu_over_m_n,quantity<dimensionless>,0.1124545167*dimensionless(),2.9e-9*dimensionless());
-/// muon molar mass
-BOOST_UNITS_PHYSICAL_CONSTANT(M_mu,quantity<mass_over_amount>,0.1134289256e-3*kilograms/mole,2.9e-12*kilograms/mole);
-/// muon Compton wavelength
-BOOST_UNITS_PHYSICAL_CONSTANT(lambda_C_mu,quantity<length>,11.73444104e-15*meters,3.0e-22*meters);
-/// muon magnetic moment
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_mu,quantity<energy_over_magnetic_flux_density>,-4.49044786e-26*joules/tesla,1.6e-33*joules/tesla);
-/// muon-Bohr magneton ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_mu_over_mu_B,quantity<dimensionless>,-4.84197049e-3*dimensionless(),1.2e-10*dimensionless());
-/// muon-nuclear magneton ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_mu_over_mu_N,quantity<dimensionless>,-8.89059705*dimensionless(),2.3e-7*dimensionless());
-/// muon magnetic moment anomaly
-BOOST_UNITS_PHYSICAL_CONSTANT(a_mu,quantity<dimensionless>,1.16592069e-3*dimensionless(),6.0e-10*dimensionless());
-/// muon g-factor
-BOOST_UNITS_PHYSICAL_CONSTANT(g_mu,quantity<dimensionless>,-2.0023318414*dimensionless(),1.2e-9*dimensionless());
-/// muon-proton magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_mu_over_mu_p,quantity<dimensionless>,-3.183345137*dimensionless(),8.5e-8*dimensionless());
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_MUON_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/neutron_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/neutron_constants.hpp
deleted file mode 100644
index fb971246d2..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/neutron_constants.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_NEUTRON_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_NEUTRON_CONSTANTS_HPP
-
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/systems/detail/constants.hpp>
-#include <boost/units/systems/si/amount.hpp>
-#include <boost/units/systems/si/area.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/length.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/magnetic_flux_density.hpp>
-#include <boost/units/systems/si/time.hpp>
-#include <boost/units/systems/si/wavenumber.hpp>
-
-#include <boost/units/systems/si/codata/typedefs.hpp>
-
-/// \file
-/// CODATA recommended values of fundamental atomic and nuclear constants
-/// CODATA 2006 values as of 2007/03/30
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-/// CODATA recommended values of the fundamental physical constants: NIST SP 961
-
-/// neutron mass
-BOOST_UNITS_PHYSICAL_CONSTANT(m_n,quantity<mass>,1.674927211e-27*kilograms,8.4e-35*kilograms);
-/// neutron-electron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_n_over_m_e,quantity<dimensionless>,1838.6836605*dimensionless(),1.1e-6*dimensionless());
-/// neutron-muon mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_n_over_m_mu,quantity<dimensionless>,8.89248409*dimensionless(),2.3e-7*dimensionless());
-/// neutron-tau mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_n_over_m_tau,quantity<dimensionless>,0.528740*dimensionless(),8.6e-5*dimensionless());
-/// neutron-proton mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_n_over_m_p,quantity<dimensionless>,1.00137841918*dimensionless(),4.6e-10*dimensionless());
-/// neutron molar mass
-BOOST_UNITS_PHYSICAL_CONSTANT(M_n,quantity<mass_over_amount>,1.00866491597e-3*kilograms/mole,4.3e-13*kilograms/mole);
-/// neutron Compton wavelength
-BOOST_UNITS_PHYSICAL_CONSTANT(lambda_C_n,quantity<length>,1.3195908951e-15*meters,2.0e-24*meters);
-/// neutron magnetic moment
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_n,quantity<energy_over_magnetic_flux_density>,-0.96623641e-26*joules/tesla,2.3e-33*joules/tesla);
-/// neutron g-factor
-BOOST_UNITS_PHYSICAL_CONSTANT(g_n,quantity<dimensionless>,-3.82608545*dimensionless(),9.0e-7*dimensionless());
-/// neutron-electron magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_n_over_mu_e,quantity<dimensionless>,1.04066882e-3*dimensionless(),2.5e-10*dimensionless());
-/// neutron-proton magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_n_over_mu_p,quantity<dimensionless>,-0.68497934*dimensionless(),1.6e-7*dimensionless());
-/// neutron-shielded proton magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_n_over_mu_p_prime,quantity<dimensionless>,-0.68499694*dimensionless(),1.6e-7*dimensionless());
-/// neutron gyromagnetic ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(gamma_n,quantity<frequency_over_magnetic_flux_density>,1.83247185e8/second/tesla,4.3e1/second/tesla);
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_NEUTRON_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/physico-chemical_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/physico-chemical_constants.hpp
deleted file mode 100644
index e9ed035f9c..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/physico-chemical_constants.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_PHYSICO_CHEMICAL_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_PHYSICO_CHEMICAL_CONSTANTS_HPP
-
-#include <boost/units/pow.hpp>
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/systems/detail/constants.hpp>
-#include <boost/units/systems/si/amount.hpp>
-#include <boost/units/systems/si/area.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/power.hpp>
-#include <boost/units/systems/si/solid_angle.hpp>
-#include <boost/units/systems/si/temperature.hpp>
-
-#include <boost/units/systems/si/codata/typedefs.hpp>
-
-/// \file
-/// CODATA recommended values of fundamental physico-chemical constants
-/// CODATA 2014 values as of 2016/04/26
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-// PHYSICO-CHEMICAL
-/// Avogadro constant
-BOOST_UNITS_PHYSICAL_CONSTANT(N_A,quantity<inverse_amount>,6.022140857e23/mole,7.4e15/mole);
-/// atomic mass constant
-BOOST_UNITS_PHYSICAL_CONSTANT(m_u,quantity<mass>,1.660539040e-27*kilograms,2.0e-35*kilograms);
-/// Faraday constant
-BOOST_UNITS_PHYSICAL_CONSTANT(F,quantity<electric_charge_over_amount>,96485.33289*coulombs/mole,5.9e-4*coulombs/mole);
-/// molar gas constant
-BOOST_UNITS_PHYSICAL_CONSTANT(R,quantity<energy_over_temperature_amount>,8.3144598*joules/kelvin/mole,4.8e-06*joules/kelvin/mole);
-/// Boltzmann constant
-BOOST_UNITS_PHYSICAL_CONSTANT(k_B,quantity<energy_over_temperature>,1.38064852e-23*joules/kelvin,7.9e-30*joules/kelvin);
-/// Stefan-Boltzmann constant
-BOOST_UNITS_PHYSICAL_CONSTANT(sigma_SB,quantity<power_over_area_temperature_4>,5.670367e-8*watts/square_meter/pow<4>(kelvin),1.3e-13*watts/square_meter/pow<4>(kelvin));
-/// first radiation constant
-BOOST_UNITS_PHYSICAL_CONSTANT(c_1,quantity<power_area>,3.741771790e-16*watt*square_meters,4.6e-24*watt*square_meters);
-/// first radiation constant for spectral radiance
-BOOST_UNITS_PHYSICAL_CONSTANT(c_1L,quantity<power_area_over_solid_angle>,1.191042953e-16*watt*square_meters/steradian,1.5e-24*watt*square_meters/steradian);
-/// second radiation constant
-BOOST_UNITS_PHYSICAL_CONSTANT(c_2,quantity<length_temperature>,1.43877736e-2*meter*kelvin,8.3e-9*meter*kelvin);
-/// Wien displacement law constant : lambda_max T
-BOOST_UNITS_PHYSICAL_CONSTANT(b,quantity<length_temperature>,2.8977729e-3*meter*kelvin,1.7e-9*meter*kelvin);
-/// Wien displacement law constant : nu_max/T
-BOOST_UNITS_PHYSICAL_CONSTANT(b_prime,quantity<frequency_over_temperature>,5.8789238e10*hertz/kelvin,3.4e4*hertz/kelvin);
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_PHYSICO_CHEMICAL_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/proton_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/proton_constants.hpp
deleted file mode 100644
index 78cce8c16b..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/proton_constants.hpp
+++ /dev/null
@@ -1,98 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_PROTON_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_PROTON_CONSTANTS_HPP
-
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/systems/detail/constants.hpp>
-#include <boost/units/systems/si/amount.hpp>
-#include <boost/units/systems/si/area.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/length.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/magnetic_flux_density.hpp>
-#include <boost/units/systems/si/time.hpp>
-#include <boost/units/systems/si/wavenumber.hpp>
-
-#include <boost/units/systems/si/codata/typedefs.hpp>
-
-/// \file
-/// CODATA recommended values of fundamental atomic and nuclear constants
-/// CODATA 2006 values as of 2007/03/30
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-/// CODATA recommended values of the fundamental physical constants: NIST SP 961
-
-/// proton mass
-BOOST_UNITS_PHYSICAL_CONSTANT(m_p,quantity<mass>,1.672621637e-27*kilograms,8.3e-35*kilograms);
-/// proton-electron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_p_over_m_e,quantity<dimensionless>,1836.15267247*dimensionless(),8.0e-7*dimensionless());
-/// proton-muon mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_p_over_m_mu,quantity<dimensionless>,8.88024339*dimensionless(),2.3e-7*dimensionless());
-/// proton-tau mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_p_over_m_tau,quantity<dimensionless>,0.528012*dimensionless(),8.6e-5*dimensionless());
-/// proton-neutron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_p_over_m_n,quantity<dimensionless>,0.99862347824*dimensionless(),4.6e-10*dimensionless());
-/// proton charge to mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(e_over_m_p,quantity<electric_charge_over_mass>,9.57883392e7*coulombs/kilogram,2.4e0*coulombs/kilogram);
-/// proton molar mass
-BOOST_UNITS_PHYSICAL_CONSTANT(M_p,quantity<mass_over_amount>,1.00727646677e-3*kilograms/mole,1.0e-13*kilograms/mole);
-/// proton Compton wavelength
-BOOST_UNITS_PHYSICAL_CONSTANT(lambda_C_p,quantity<length>,1.3214098446e-15*meters,1.9e-24*meters);
-/// proton rms charge radius
-BOOST_UNITS_PHYSICAL_CONSTANT(R_p,quantity<length>,0.8768e-15*meters,6.9e-18*meters);
-/// proton magnetic moment
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_p,quantity<energy_over_magnetic_flux_density>,1.410606662e-26*joules/tesla,3.7e-34*joules/tesla);
-/// proton-Bohr magneton ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_p_over_mu_B,quantity<dimensionless>,1.521032209e-3*dimensionless(),1.2e-11*dimensionless());
-/// proton-nuclear magneton ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_p_over_mu_N,quantity<dimensionless>,2.792847356*dimensionless(),2.3e-8*dimensionless());
-/// proton g-factor
-BOOST_UNITS_PHYSICAL_CONSTANT(g_p,quantity<dimensionless>,5.585694713*dimensionless(),4.6e-8*dimensionless());
-/// proton-neutron magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_p_over_mu_n,quantity<dimensionless>,-1.45989806*dimensionless(),3.4e-7*dimensionless());
-/// shielded proton magnetic moment
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_p_prime,quantity<energy_over_magnetic_flux_density>,1.410570419e-26*joules/tesla,3.8e-34*joules/tesla);
-/// shielded proton-Bohr magneton ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_p_prime_over_mu_B,quantity<dimensionless>,1.520993128e-3*dimensionless(),1.7e-11*dimensionless());
-/// shielded proton-nuclear magneton ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_p_prime_over_mu_N,quantity<dimensionless>,2.792775598*dimensionless(),3.0e-8*dimensionless());
-/// proton magnetic shielding correction
-BOOST_UNITS_PHYSICAL_CONSTANT(sigma_p_prime,quantity<dimensionless>,25.694e-6*dimensionless(),1.4e-8*dimensionless());
-/// proton gyromagnetic ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(gamma_p,quantity<frequency_over_magnetic_flux_density>,2.675222099e8/second/tesla,7.0e0/second/tesla);
-/// shielded proton gyromagnetic ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(gamma_p_prime,quantity<frequency_over_magnetic_flux_density>,2.675153362e8/second/tesla,7.3e0/second/tesla);
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_PROTON_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/tau_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/tau_constants.hpp
deleted file mode 100644
index ea047bcd1d..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/tau_constants.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_TAU_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_TAU_CONSTANTS_HPP
-
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/systems/detail/constants.hpp>
-#include <boost/units/systems/si/amount.hpp>
-#include <boost/units/systems/si/area.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/length.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/magnetic_flux_density.hpp>
-#include <boost/units/systems/si/time.hpp>
-#include <boost/units/systems/si/wavenumber.hpp>
-
-#include <boost/units/systems/si/codata/typedefs.hpp>
-
-/// \file
-/// CODATA recommended values of fundamental atomic and nuclear constants
-/// CODATA 2006 values as of 2007/03/30
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-/// CODATA recommended values of the fundamental physical constants: NIST SP 961
-
-/// tau mass
-BOOST_UNITS_PHYSICAL_CONSTANT(m_tau,quantity<mass>,3.16777e-27*kilograms,5.2e-31*kilograms);
-/// tau-electron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_tau_over_m_e,quantity<dimensionless>,3477.48*dimensionless(),5.7e-1*dimensionless());
-/// tau-muon mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_tau_over_m_mu,quantity<dimensionless>,16.8183*dimensionless(),2.7e-3*dimensionless());
-/// tau-proton mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_tau_over_m_p,quantity<dimensionless>,1.89390*dimensionless(),3.1e-4*dimensionless());
-/// tau-neutron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_tau_over_m_n,quantity<dimensionless>,1.89129*dimensionless(),3.1e-4*dimensionless());
-/// tau molar mass
-BOOST_UNITS_PHYSICAL_CONSTANT(M_tau,quantity<mass_over_amount>,1.90768e-3*kilograms/mole,3.1e-7*kilograms/mole);
-/// tau Compton wavelength
-BOOST_UNITS_PHYSICAL_CONSTANT(lambda_C_tau,quantity<length>,0.69772e-15*meters,1.1e-19*meters);
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_TAU_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/triton_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/triton_constants.hpp
deleted file mode 100644
index 58660827d8..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/triton_constants.hpp
+++ /dev/null
@@ -1,80 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_TRITON_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_TRITON_CONSTANTS_HPP
-
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/systems/detail/constants.hpp>
-#include <boost/units/systems/si/amount.hpp>
-#include <boost/units/systems/si/area.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/length.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/magnetic_flux_density.hpp>
-#include <boost/units/systems/si/time.hpp>
-#include <boost/units/systems/si/wavenumber.hpp>
-
-#include <boost/units/systems/si/codata/typedefs.hpp>
-
-/// \file
-/// CODATA recommended values of fundamental atomic and nuclear constants
-/// CODATA 2006 values as of 2007/03/30
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-/// CODATA recommended values of the fundamental physical constants: NIST SP 961
-
-/// triton mass
-BOOST_UNITS_PHYSICAL_CONSTANT(m_t,quantity<mass>,5.00735588e-27*kilograms,2.5e-34*kilograms);
-/// triton-electron mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_t_over_m_e,quantity<dimensionless>,5496.9215269*dimensionless(),5.1e-6*dimensionless());
-/// triton-proton mass ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(m_t_over_m_p,quantity<dimensionless>,2.9937170309*dimensionless(),2.5e-9*dimensionless());
-/// triton molar mass
-BOOST_UNITS_PHYSICAL_CONSTANT(M_t,quantity<mass_over_amount>,3.0155007134e-3*kilograms/mole,2.5e-12*kilograms/mole);
-/// triton magnetic moment
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_t,quantity<energy_over_magnetic_flux_density>,1.504609361e-26*joules/tesla,4.2e-34*joules/tesla);
-/// triton-Bohr magneton ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_t_over_mu_B,quantity<dimensionless>,1.622393657e-3*dimensionless(),2.1e-11*dimensionless());
-/// triton-nuclear magneton ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_t_over_mu_N,quantity<dimensionless>,2.978962448*dimensionless(),3.8e-8*dimensionless());
-/// triton g-factor
-BOOST_UNITS_PHYSICAL_CONSTANT(g_t,quantity<dimensionless>,5.957924896*dimensionless(),7.6e-8*dimensionless());
-/// triton-electron magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_t_over_mu_e,quantity<dimensionless>,-1.620514423e-3*dimensionless(),2.1e-11*dimensionless());
-/// triton-proton magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_t_over_mu_p,quantity<dimensionless>,1.066639908*dimensionless(),1.0e-8*dimensionless());
-/// triton-neutron magnetic moment ratio
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_t_over_mu_n,quantity<dimensionless>,-1.55718553*dimensionless(),3.7e-7*dimensionless());
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_TRITON_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/typedefs.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/typedefs.hpp
deleted file mode 100644
index 27330ce061..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/typedefs.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_TYPEDEFS_HPP
-#define BOOST_UNITS_CODATA_TYPEDEFS_HPP
-
-#include <boost/units/operators.hpp>
-#include <boost/units/systems/si/amount.hpp>
-#include <boost/units/systems/si/area.hpp>
-#include <boost/units/systems/si/capacitance.hpp>
-#include <boost/units/systems/si/electric_charge.hpp>
-#include <boost/units/systems/si/current.hpp>
-#include <boost/units/systems/si/electric_potential.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/force.hpp>
-#include <boost/units/systems/si/frequency.hpp>
-#include <boost/units/systems/si/magnetic_flux_density.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/length.hpp>
-#include <boost/units/systems/si/power.hpp>
-#include <boost/units/systems/si/solid_angle.hpp>
-#include <boost/units/systems/si/temperature.hpp>
-#include <boost/units/systems/si/time.hpp>
-#include <boost/units/systems/si/volume.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-typedef divide_typeof_helper<frequency,electric_potential>::type frequency_over_electric_potential;
-typedef divide_typeof_helper<electric_charge,mass>::type electric_charge_over_mass;
-typedef divide_typeof_helper<mass,amount>::type mass_over_amount;
-typedef divide_typeof_helper<energy,magnetic_flux_density>::type energy_over_magnetic_flux_density;
-typedef divide_typeof_helper<frequency,magnetic_flux_density>::type frequency_over_magnetic_flux_density;
-typedef divide_typeof_helper<current,energy>::type current_over_energy;
-typedef divide_typeof_helper<dimensionless,amount>::type inverse_amount;
-typedef divide_typeof_helper<energy,temperature>::type energy_over_temperature;
-typedef divide_typeof_helper<energy_over_temperature,amount>::type energy_over_temperature_amount;
-typedef divide_typeof_helper<
- divide_typeof_helper<power,area>::type,
- power_typeof_helper<temperature,static_rational<4> >::type
- >::type power_over_area_temperature_4;
-typedef multiply_typeof_helper<power,area>::type power_area;
-typedef divide_typeof_helper<power_area,solid_angle>::type power_area_over_solid_angle;
-typedef multiply_typeof_helper<length,temperature>::type length_temperature;
-typedef divide_typeof_helper<frequency,temperature>::type frequency_over_temperature;
-typedef divide_typeof_helper<divide_typeof_helper<force,current>::type,current>::type force_over_current_squared;
-typedef divide_typeof_helper<capacitance,length>::type capacitance_over_length;
-typedef divide_typeof_helper<
- divide_typeof_helper<divide_typeof_helper<volume,mass>::type,time>::type,
- time
- >::type volume_over_mass_time_squared;
-typedef multiply_typeof_helper<energy,time>::type energy_time;
-typedef divide_typeof_helper<electric_charge,amount>::type electric_charge_over_amount;
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata/universal_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata/universal_constants.hpp
deleted file mode 100644
index 9aa64c4aef..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata/universal_constants.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_UNIVERSAL_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_UNIVERSAL_CONSTANTS_HPP
-
-#include <boost/units/quantity.hpp>
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/systems/detail/constants.hpp>
-#include <boost/units/systems/si/capacitance.hpp>
-#include <boost/units/systems/si/current.hpp>
-#include <boost/units/systems/si/energy.hpp>
-#include <boost/units/systems/si/force.hpp>
-#include <boost/units/systems/si/length.hpp>
-#include <boost/units/systems/si/mass.hpp>
-#include <boost/units/systems/si/resistance.hpp>
-#include <boost/units/systems/si/temperature.hpp>
-#include <boost/units/systems/si/time.hpp>
-#include <boost/units/systems/si/velocity.hpp>
-#include <boost/units/systems/si/volume.hpp>
-#include <boost/units/systems/si/codata/typedefs.hpp>
-
-/// \file
-/// CODATA recommended values of fundamental universal constants
-/// using CODATA 2006 values as of 2007/03/30
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-namespace constants {
-
-namespace codata {
-
-/// CODATA recommended values of the fundamental physical constants: NIST SP 961
-
-// UNIVERSAL
-/// speed of light
-BOOST_UNITS_PHYSICAL_CONSTANT(c,quantity<velocity>,299792458.0*meters/second,0.0*meters/second);
-/// magnetic constant (exactly 4 pi x 10^(-7) - error is due to finite precision of pi)
-BOOST_UNITS_PHYSICAL_CONSTANT(mu_0,quantity<force_over_current_squared>,12.56637061435917295385057353311801153679e-7*newtons/ampere/ampere,0.0*newtons/ampere/ampere);
-/// electric constant
-BOOST_UNITS_PHYSICAL_CONSTANT(epsilon_0,quantity<capacitance_over_length>,8.854187817620389850536563031710750260608e-12*farad/meter,0.0*farad/meter);
-/// characteristic impedance of vacuum
-BOOST_UNITS_PHYSICAL_CONSTANT(Z_0,quantity<resistance>,376.7303134617706554681984004203193082686*ohm,0.0*ohm);
-/// Newtonian constant of gravitation
-BOOST_UNITS_PHYSICAL_CONSTANT(G,quantity<volume_over_mass_time_squared>,6.67428e-11*cubic_meters/kilogram/second/second,6.7e-15*cubic_meters/kilogram/second/second);
-/// Planck constant
-BOOST_UNITS_PHYSICAL_CONSTANT(h,quantity<energy_time>,6.62606896e-34*joule*seconds,3.3e-41*joule*seconds);
-/// Dirac constant
-BOOST_UNITS_PHYSICAL_CONSTANT(hbar,quantity<energy_time>,1.054571628e-34*joule*seconds,5.3e-42*joule*seconds);
-/// Planck mass
-BOOST_UNITS_PHYSICAL_CONSTANT(m_P,quantity<mass>,2.17644e-8*kilograms,1.1e-12*kilograms);
-/// Planck temperature
-BOOST_UNITS_PHYSICAL_CONSTANT(T_P,quantity<temperature>,1.416785e32*kelvin,7.1e27*kelvin);
-/// Planck length
-BOOST_UNITS_PHYSICAL_CONSTANT(l_P,quantity<length>,1.616252e-35*meters,8.1e-40*meters);
-/// Planck time
-BOOST_UNITS_PHYSICAL_CONSTANT(t_P,quantity<time>,5.39124e-44*seconds,2.7e-48*seconds);
-
-} // namespace codata
-
-} // namespace constants
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_CODATA_UNIVERSAL_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/codata_constants.hpp b/contrib/restricted/boost/boost/units/systems/si/codata_constants.hpp
deleted file mode 100644
index 69bb858a24..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/codata_constants.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_CODATA_CONSTANTS_HPP
-#define BOOST_UNITS_CODATA_CONSTANTS_HPP
-
-#include <boost/units/systems/si/codata/atomic-nuclear_constants.hpp>
-#include <boost/units/systems/si/codata/electromagnetic_constants.hpp>
-#include <boost/units/systems/si/codata/physico-chemical_constants.hpp>
-#include <boost/units/systems/si/codata/universal_constants.hpp>
-
-#endif // BOOST_UNITS_CODATA_CONSTANTS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/conductance.hpp b/contrib/restricted/boost/boost/units/systems/si/conductance.hpp
deleted file mode 100644
index 68c82c9648..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/conductance.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_CONDUCTANCE_HPP
-#define BOOST_UNITS_SI_CONDUCTANCE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/conductance.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<conductance_dimension,si::system> conductance;
-
-BOOST_UNITS_STATIC_CONSTANT(siemen,conductance);
-BOOST_UNITS_STATIC_CONSTANT(siemens,conductance);
-BOOST_UNITS_STATIC_CONSTANT(mho,conductance);
-BOOST_UNITS_STATIC_CONSTANT(mhos,conductance);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_CONDUCTANCE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/conductivity.hpp b/contrib/restricted/boost/boost/units/systems/si/conductivity.hpp
deleted file mode 100644
index 0f48b64e49..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/conductivity.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_CONDUCTIVITY_HPP
-#define BOOST_UNITS_SI_CONDUCTIVITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/conductivity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<conductivity_dimension,si::system> conductivity;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_CONDUCTIVITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/current.hpp b/contrib/restricted/boost/boost/units/systems/si/current.hpp
deleted file mode 100644
index e2ba345b80..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/current.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_CURRENT_HPP
-#define BOOST_UNITS_SI_CURRENT_HPP
-
-#include <boost/units/systems/si/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<current_dimension,si::system> current;
-
-BOOST_UNITS_STATIC_CONSTANT(ampere,current);
-BOOST_UNITS_STATIC_CONSTANT(amperes,current);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_CURRENT_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/dimensionless.hpp b/contrib/restricted/boost/boost/units/systems/si/dimensionless.hpp
deleted file mode 100644
index aa7b2c380d..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/dimensionless.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_DIMENSIONLESS_HPP
-#define BOOST_UNITS_SI_DIMENSIONLESS_HPP
-
-#include <boost/units/systems/si/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-BOOST_UNITS_STATIC_CONSTANT(si_dimensionless,dimensionless);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_DIMENSIONLESS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/dose_equivalent.hpp b/contrib/restricted/boost/boost/units/systems/si/dose_equivalent.hpp
deleted file mode 100644
index 0be0d3b000..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/dose_equivalent.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_DOSE_EQUIVALENT_HPP
-#define BOOST_UNITS_SI_DOSE_EQUIVALENT_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/dose_equivalent.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<dose_equivalent_dimension,si::system> dose_equivalent;
-
-BOOST_UNITS_STATIC_CONSTANT(sievert,dose_equivalent);
-BOOST_UNITS_STATIC_CONSTANT(sieverts,dose_equivalent);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_DOSE_EQUIVALENT_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/dynamic_viscosity.hpp b/contrib/restricted/boost/boost/units/systems/si/dynamic_viscosity.hpp
deleted file mode 100644
index f72523feca..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/dynamic_viscosity.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_DYNAMIC_VISCOSITY_HPP
-#define BOOST_UNITS_SI_DYNAMIC_VISCOSITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/dynamic_viscosity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<dynamic_viscosity_dimension,si::system> dynamic_viscosity;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_DYNAMIC_VISCOSITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/electric_charge.hpp b/contrib/restricted/boost/boost/units/systems/si/electric_charge.hpp
deleted file mode 100644
index fa1ccff018..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/electric_charge.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_ELECTRIC_CHARGE_HPP
-#define BOOST_UNITS_SI_ELECTRIC_CHARGE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/electric_charge.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<electric_charge_dimension,si::system> electric_charge;
-
-BOOST_UNITS_STATIC_CONSTANT(coulomb,electric_charge);
-BOOST_UNITS_STATIC_CONSTANT(coulombs,electric_charge);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_ELECTRIC_CHARGE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/electric_potential.hpp b/contrib/restricted/boost/boost/units/systems/si/electric_potential.hpp
deleted file mode 100644
index e737985bc8..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/electric_potential.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_ELECTRIC_POTENTIAL_HPP
-#define BOOST_UNITS_SI_ELECTRIC_POTENTIAL_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/electric_potential.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<electric_potential_dimension,si::system> electric_potential;
-
-BOOST_UNITS_STATIC_CONSTANT(volt,electric_potential);
-BOOST_UNITS_STATIC_CONSTANT(volts,electric_potential);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_ELECTRIC_POTENTIAL_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/energy.hpp b/contrib/restricted/boost/boost/units/systems/si/energy.hpp
deleted file mode 100644
index 4fb1aa806d..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/energy.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_ENERGY_HPP
-#define BOOST_UNITS_SI_ENERGY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/energy.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<energy_dimension,si::system> energy;
-
-BOOST_UNITS_STATIC_CONSTANT(joule,energy);
-BOOST_UNITS_STATIC_CONSTANT(joules,energy);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_ENERGY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/force.hpp b/contrib/restricted/boost/boost/units/systems/si/force.hpp
deleted file mode 100644
index cd2689f6b3..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/force.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_FORCE_HPP
-#define BOOST_UNITS_SI_FORCE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/force.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<force_dimension,si::system> force;
-
-BOOST_UNITS_STATIC_CONSTANT(newton,force);
-BOOST_UNITS_STATIC_CONSTANT(newtons,force);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_FORCE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/frequency.hpp b/contrib/restricted/boost/boost/units/systems/si/frequency.hpp
deleted file mode 100644
index 83fbb5cff2..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/frequency.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_FREQUENCY_HPP
-#define BOOST_UNITS_SI_FREQUENCY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/frequency.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<frequency_dimension,si::system> frequency;
-
-BOOST_UNITS_STATIC_CONSTANT(hertz,frequency);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_FREQUENCY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/illuminance.hpp b/contrib/restricted/boost/boost/units/systems/si/illuminance.hpp
deleted file mode 100644
index 96f28c70b7..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/illuminance.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_ILLUMINANCE_HPP
-#define BOOST_UNITS_SI_ILLUMINANCE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/illuminance.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<illuminance_dimension,si::system> illuminance;
-
-BOOST_UNITS_STATIC_CONSTANT(lux,illuminance);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_ILLUMINANCE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/impedance.hpp b/contrib/restricted/boost/boost/units/systems/si/impedance.hpp
deleted file mode 100644
index d2d7195e64..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/impedance.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_IMPEDANCE_HPP
-#define BOOST_UNITS_SI_IMPEDANCE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/impedance.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<impedance_dimension,si::system> impedance;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_IMPEDANCE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/inductance.hpp b/contrib/restricted/boost/boost/units/systems/si/inductance.hpp
deleted file mode 100644
index a3f8f3ad31..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/inductance.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_INDUCTANCE_HPP
-#define BOOST_UNITS_SI_INDUCTANCE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/inductance.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<inductance_dimension,si::system> inductance;
-
-BOOST_UNITS_STATIC_CONSTANT(henry,inductance);
-BOOST_UNITS_STATIC_CONSTANT(henrys,inductance);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_INDUCTANCE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/io.hpp b/contrib/restricted/boost/boost/units/systems/si/io.hpp
deleted file mode 100644
index 3f096cae83..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/io.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_IO_HPP
-#define BOOST_UNITS_SI_IO_HPP
-
-#include <boost/units/io.hpp>
-#include <boost/units/reduce_unit.hpp>
-
-#include <boost/units/systems/si.hpp>
-
-namespace boost {
-
-namespace units {
-
-// gray and sievert are indistinguishable
-inline std::string name_string(const reduce_unit<si::absorbed_dose>::type&) { return "gray"; }
-inline std::string symbol_string(const reduce_unit<si::absorbed_dose>::type&) { return "Gy"; }
-
-// activity and frequency are indistinguishable - would need a "decays" base unit
-//inline std::string name_string(const si::activity&) { return "becquerel"; }
-//inline std::string symbol_string(const si::activity&) { return "Bq"; }
-
-inline std::string name_string(const reduce_unit<si::capacitance>::type&) { return "farad"; }
-inline std::string symbol_string(const reduce_unit<si::capacitance>::type&) { return "F"; }
-
-inline std::string name_string(const reduce_unit<si::catalytic_activity>::type&) { return "katal"; }
-inline std::string symbol_string(const reduce_unit<si::catalytic_activity>::type&) { return "kat"; }
-
-inline std::string name_string(const reduce_unit<si::conductance>::type&) { return "siemen"; }
-inline std::string symbol_string(const reduce_unit<si::conductance>::type&) { return "S"; }
-
-// gray and sievert are indistinguishable
-//inline std::string name_string(const si::dose_equivalent&) { return "sievert"; }
-//inline std::string symbol_string(const si::dose_equivalent&) { return "Sv"; }
-
-inline std::string name_string(const reduce_unit<si::electric_charge>::type&) { return "coulomb"; }
-inline std::string symbol_string(const reduce_unit<si::electric_charge>::type&) { return "C"; }
-
-inline std::string name_string(const reduce_unit<si::electric_potential>::type&) { return "volt"; }
-inline std::string symbol_string(const reduce_unit<si::electric_potential>::type&) { return "V"; }
-
-inline std::string name_string(const reduce_unit<si::energy>::type&) { return "joule"; }
-inline std::string symbol_string(const reduce_unit<si::energy>::type&) { return "J"; }
-
-inline std::string name_string(const reduce_unit<si::force>::type&) { return "newton"; }
-inline std::string symbol_string(const reduce_unit<si::force>::type&) { return "N"; }
-
-inline std::string name_string(const reduce_unit<si::frequency>::type&) { return "hertz"; }
-inline std::string symbol_string(const reduce_unit<si::frequency>::type&) { return "Hz"; }
-
-inline std::string name_string(const reduce_unit<si::illuminance>::type&) { return "lux"; }
-inline std::string symbol_string(const reduce_unit<si::illuminance>::type&) { return "lx"; }
-
-inline std::string name_string(const reduce_unit<si::inductance>::type&) { return "henry"; }
-inline std::string symbol_string(const reduce_unit<si::inductance>::type&) { return "H"; }
-
-inline std::string name_string(const reduce_unit<si::luminous_flux>::type&) { return "lumen"; }
-inline std::string symbol_string(const reduce_unit<si::luminous_flux>::type&) { return "lm"; }
-
-inline std::string name_string(const reduce_unit<si::magnetic_flux>::type&) { return "weber"; }
-inline std::string symbol_string(const reduce_unit<si::magnetic_flux>::type&) { return "Wb"; }
-
-inline std::string name_string(const reduce_unit<si::magnetic_flux_density>::type&) { return "tesla"; }
-inline std::string symbol_string(const reduce_unit<si::magnetic_flux_density>::type&) { return "T"; }
-
-inline std::string name_string(const reduce_unit<si::power>::type&) { return "watt"; }
-inline std::string symbol_string(const reduce_unit<si::power>::type&) { return "W"; }
-
-inline std::string name_string(const reduce_unit<si::pressure>::type&) { return "pascal"; }
-inline std::string symbol_string(const reduce_unit<si::pressure>::type&) { return "Pa"; }
-
-inline std::string name_string(const reduce_unit<si::resistance>::type&) { return "ohm"; }
-inline std::string symbol_string(const reduce_unit<si::resistance>::type&) { return "Ohm"; }
-
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_IO_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/kinematic_viscosity.hpp b/contrib/restricted/boost/boost/units/systems/si/kinematic_viscosity.hpp
deleted file mode 100644
index 0224644c1e..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/kinematic_viscosity.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_KINEMATIC_VISCOSITY_HPP
-#define BOOST_UNITS_SI_KINEMATIC_VISCOSITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/kinematic_viscosity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<kinematic_viscosity_dimension,si::system> kinematic_viscosity;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_KINEMATIC_VISCOSITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/length.hpp b/contrib/restricted/boost/boost/units/systems/si/length.hpp
deleted file mode 100644
index 40eab13dbc..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/length.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_LENGTH_HPP
-#define BOOST_UNITS_SI_LENGTH_HPP
-
-#include <boost/units/systems/si/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<length_dimension,si::system> length;
-
-BOOST_UNITS_STATIC_CONSTANT(meter,length);
-BOOST_UNITS_STATIC_CONSTANT(meters,length);
-BOOST_UNITS_STATIC_CONSTANT(metre,length);
-BOOST_UNITS_STATIC_CONSTANT(metres,length);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_LENGTH_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/luminous_flux.hpp b/contrib/restricted/boost/boost/units/systems/si/luminous_flux.hpp
deleted file mode 100644
index 99a1acf859..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/luminous_flux.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_LUMINOUS_FLUX_HPP
-#define BOOST_UNITS_SI_LUMINOUS_FLUX_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/luminous_flux.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<luminous_flux_dimension,si::system> luminous_flux;
-
-BOOST_UNITS_STATIC_CONSTANT(lumen,luminous_flux);
-BOOST_UNITS_STATIC_CONSTANT(lumens,luminous_flux);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_LUMINOUS_FLUX_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/luminous_intensity.hpp b/contrib/restricted/boost/boost/units/systems/si/luminous_intensity.hpp
deleted file mode 100644
index 2558c9e470..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/luminous_intensity.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_LUMINOUS_INTENSITY_HPP
-#define BOOST_UNITS_SI_LUMINOUS_INTENSITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<luminous_intensity_dimension,si::system> luminous_intensity;
-
-BOOST_UNITS_STATIC_CONSTANT(candela,luminous_intensity);
-BOOST_UNITS_STATIC_CONSTANT(candelas,luminous_intensity);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_LUMINOUS_INTENSITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/magnetic_field_intensity.hpp b/contrib/restricted/boost/boost/units/systems/si/magnetic_field_intensity.hpp
deleted file mode 100644
index 2f36d9054f..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/magnetic_field_intensity.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_MAGNETIC_FIELD_INTENSITY_HPP
-#define BOOST_UNITS_SI_MAGNETIC_FIELD_INTENSITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/magnetic_field_intensity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<magnetic_field_intensity_dimension,si::system> magnetic_field_intensity;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_MAGNETIC_FIELD_INTENSITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/magnetic_flux.hpp b/contrib/restricted/boost/boost/units/systems/si/magnetic_flux.hpp
deleted file mode 100644
index 602a380ea2..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/magnetic_flux.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_MAGNETIC_FLUX_HPP
-#define BOOST_UNITS_SI_MAGNETIC_FLUX_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/magnetic_flux.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<magnetic_flux_dimension,si::system> magnetic_flux;
-
-BOOST_UNITS_STATIC_CONSTANT(weber,magnetic_flux);
-BOOST_UNITS_STATIC_CONSTANT(webers,magnetic_flux);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_MAGNETIC_FLUX_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/magnetic_flux_density.hpp b/contrib/restricted/boost/boost/units/systems/si/magnetic_flux_density.hpp
deleted file mode 100644
index fc89069b3f..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/magnetic_flux_density.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_MAGNETIC_FLUX_DENSITY_HPP
-#define BOOST_UNITS_SI_MAGNETIC_FLUX_DENSITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/magnetic_flux_density.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<magnetic_flux_density_dimension,si::system> magnetic_flux_density;
-
-BOOST_UNITS_STATIC_CONSTANT(tesla,magnetic_flux_density);
-BOOST_UNITS_STATIC_CONSTANT(teslas,magnetic_flux_density);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_MAGNETIC_FLUX_DENSITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/mass.hpp b/contrib/restricted/boost/boost/units/systems/si/mass.hpp
deleted file mode 100644
index 5f35225c65..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/mass.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_MASS_HPP
-#define BOOST_UNITS_SI_MASS_HPP
-
-#include <boost/units/systems/si/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<mass_dimension,si::system> mass;
-
-BOOST_UNITS_STATIC_CONSTANT(kilogram,mass);
-BOOST_UNITS_STATIC_CONSTANT(kilograms,mass);
-BOOST_UNITS_STATIC_CONSTANT(kilogramme,mass);
-BOOST_UNITS_STATIC_CONSTANT(kilogrammes,mass);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_MASS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/mass_density.hpp b/contrib/restricted/boost/boost/units/systems/si/mass_density.hpp
deleted file mode 100644
index a321e084ff..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/mass_density.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_MASS_DENSITY_HPP
-#define BOOST_UNITS_SI_MASS_DENSITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/mass_density.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<mass_density_dimension,si::system> mass_density;
-
-BOOST_UNITS_STATIC_CONSTANT(kilogram_per_cubic_meter,mass_density);
-BOOST_UNITS_STATIC_CONSTANT(kilograms_per_cubic_meter,mass_density);
-BOOST_UNITS_STATIC_CONSTANT(kilogramme_per_cubic_metre,mass_density);
-BOOST_UNITS_STATIC_CONSTANT(kilogrammes_per_cubic_metre,mass_density);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_MASS_DENSITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/moment_of_inertia.hpp b/contrib/restricted/boost/boost/units/systems/si/moment_of_inertia.hpp
deleted file mode 100644
index b86c0e66f4..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/moment_of_inertia.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_MOMENT_OF_INERTIA_HPP
-#define BOOST_UNITS_SI_MOMENT_OF_INERTIA_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/moment_of_inertia.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<moment_of_inertia_dimension,si::system> moment_of_inertia;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_MOMENT_OF_INERTIA_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/momentum.hpp b/contrib/restricted/boost/boost/units/systems/si/momentum.hpp
deleted file mode 100644
index fb6f2d344a..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/momentum.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_MOMENTUM_HPP
-#define BOOST_UNITS_SI_MOMENTUM_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/momentum.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<momentum_dimension,si::system> momentum;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_MOMENTUM_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/permeability.hpp b/contrib/restricted/boost/boost/units/systems/si/permeability.hpp
deleted file mode 100644
index 72ee3336e5..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/permeability.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_PERMEABILITY_HPP
-#define BOOST_UNITS_SI_PERMEABILITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/permeability.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<permeability_dimension,si::system> permeability;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_PERMEABILITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/permittivity.hpp b/contrib/restricted/boost/boost/units/systems/si/permittivity.hpp
deleted file mode 100644
index b46c7ae6f0..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/permittivity.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_PERMITTIVITY_HPP
-#define BOOST_UNITS_SI_PERMITTIVITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/permittivity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<permittivity_dimension,si::system> permittivity;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_PERMITTIVITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/plane_angle.hpp b/contrib/restricted/boost/boost/units/systems/si/plane_angle.hpp
deleted file mode 100644
index 918900c6a4..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/plane_angle.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_PLANE_ANGLE_HPP
-#define BOOST_UNITS_SI_PLANE_ANGLE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<plane_angle_dimension,si::system> plane_angle;
-
-BOOST_UNITS_STATIC_CONSTANT(radian,plane_angle);
-BOOST_UNITS_STATIC_CONSTANT(radians,plane_angle);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_PLANE_ANGLE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/power.hpp b/contrib/restricted/boost/boost/units/systems/si/power.hpp
deleted file mode 100644
index 9d1b979bfd..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/power.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_POWER_HPP
-#define BOOST_UNITS_SI_POWER_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/power.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<power_dimension,si::system> power;
-
-BOOST_UNITS_STATIC_CONSTANT(watt,power);
-BOOST_UNITS_STATIC_CONSTANT(watts,power);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_POWER_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/prefixes.hpp b/contrib/restricted/boost/boost/units/systems/si/prefixes.hpp
deleted file mode 100644
index ec36fd0d8a..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/prefixes.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2007-2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_PREFIXES_HPP
-#define BOOST_UNITS_SI_PREFIXES_HPP
-
-#include <boost/units/static_constant.hpp>
-
-#include <boost/units/make_scaled_unit.hpp>
-#include <boost/units/systems/si/dimensionless.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-#define BOOST_UNITS_METRIC_PREFIX(exponent, name) \
- typedef make_scaled_unit<dimensionless, scale<10, static_rational<exponent> > >::type name ## _type;\
- BOOST_UNITS_STATIC_CONSTANT(name, name ## _type)
-
-BOOST_UNITS_METRIC_PREFIX(-24, yocto);
-BOOST_UNITS_METRIC_PREFIX(-21, zepto);
-BOOST_UNITS_METRIC_PREFIX(-18, atto);
-BOOST_UNITS_METRIC_PREFIX(-15, femto);
-BOOST_UNITS_METRIC_PREFIX(-12, pico);
-BOOST_UNITS_METRIC_PREFIX(-9, nano);
-BOOST_UNITS_METRIC_PREFIX(-6, micro);
-BOOST_UNITS_METRIC_PREFIX(-3, milli);
-BOOST_UNITS_METRIC_PREFIX(-2, centi);
-BOOST_UNITS_METRIC_PREFIX(-1, deci);
-BOOST_UNITS_METRIC_PREFIX(1, deka);
-BOOST_UNITS_METRIC_PREFIX(2, hecto);
-BOOST_UNITS_METRIC_PREFIX(3, kilo);
-BOOST_UNITS_METRIC_PREFIX(6, mega);
-BOOST_UNITS_METRIC_PREFIX(9, giga);
-BOOST_UNITS_METRIC_PREFIX(12, tera);
-BOOST_UNITS_METRIC_PREFIX(15, peta);
-BOOST_UNITS_METRIC_PREFIX(18, exa);
-BOOST_UNITS_METRIC_PREFIX(21, zetta);
-BOOST_UNITS_METRIC_PREFIX(24, yotta);
-
-/*BOOST_UNITS_STATIC_CONSTANT(yocto,long double) = (1e-24); ///< metric prefix for 1.0e-24
-BOOST_UNITS_STATIC_CONSTANT(zepto,long double) = (1e-21); ///< metric prefix for 1.0e-21
-BOOST_UNITS_STATIC_CONSTANT(atto,long double) = (1e-18); ///< metric prefix for 1.0e-18
-BOOST_UNITS_STATIC_CONSTANT(femto,long double) = (1e-15); ///< metric prefix for 1.0e-15
-BOOST_UNITS_STATIC_CONSTANT(pico,long double) = (1e-12); ///< metric prefix for 1.0e-12
-BOOST_UNITS_STATIC_CONSTANT(nano,long double) = (1e-9); ///< metric prefix for 1.0e-9
-BOOST_UNITS_STATIC_CONSTANT(micro,long double) = (1e-6); ///< metric prefix for 1.0e-6
-BOOST_UNITS_STATIC_CONSTANT(milli,long double) = (1e-3); ///< metric prefix for 1.0e-3
-BOOST_UNITS_STATIC_CONSTANT(centi,long double) = (1e-2); ///< metric prefix for 1.0e-2
-BOOST_UNITS_STATIC_CONSTANT(deci,long double) = (1e-1); ///< metric prefix for 1.0e-1
-BOOST_UNITS_STATIC_CONSTANT(deka,long double) = (1e1); ///< metric prefix for 1.0e+1
-BOOST_UNITS_STATIC_CONSTANT(hecto,long double) = (1e2); ///< metric prefix for 1.0e+2
-BOOST_UNITS_STATIC_CONSTANT(kilo,long double) = (1e3); ///< metric prefix for 1.0e+3
-BOOST_UNITS_STATIC_CONSTANT(mega,long double) = (1e6); ///< metric prefix for 1.0e+6
-BOOST_UNITS_STATIC_CONSTANT(giga,long double) = (1e9); ///< metric prefix for 1.0e+9
-BOOST_UNITS_STATIC_CONSTANT(tera,long double) = (1e12); ///< metric prefix for 1.0e+12
-BOOST_UNITS_STATIC_CONSTANT(peta,long double) = (1e15); ///< metric prefix for 1.0e+15
-BOOST_UNITS_STATIC_CONSTANT(exa,long double) = (1e18); ///< metric prefix for 1.0e+18
-BOOST_UNITS_STATIC_CONSTANT(zetta,long double) = (1e21); ///< metric prefix for 1.0e+21
-BOOST_UNITS_STATIC_CONSTANT(yotta,long double) = (1e24); ///< metric prefix for 1.0e+24 */
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_PREFIXES_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/pressure.hpp b/contrib/restricted/boost/boost/units/systems/si/pressure.hpp
deleted file mode 100644
index b9105e44ec..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/pressure.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_PRESSURE_HPP
-#define BOOST_UNITS_SI_PRESSURE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/pressure.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<pressure_dimension,si::system> pressure;
-
-// windef.h #defines pascal on Metrowerks compilers
-#if defined(__MWERKS__)
- #if !__option(only_std_keywords)
- #define BOOST_UNITS_NO_PASCAL 1
- #elif defined(pascal)
- #define BOOST_UNITS_NO_PASCAL 1
- #endif
-#elif defined(pascal)
- #define BOOST_UNITS_NO_PASCAL 1
-#elif BOOST_MSVC
- #define BOOST_UNITS_NO_PASCAL 1
-#endif
-
-#ifndef BOOST_UNITS_NO_PASCAL
-BOOST_UNITS_STATIC_CONSTANT(pascal,pressure);
-#endif
-BOOST_UNITS_STATIC_CONSTANT(pascals,pressure);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_PRESSURE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/reluctance.hpp b/contrib/restricted/boost/boost/units/systems/si/reluctance.hpp
deleted file mode 100644
index 30014cc460..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/reluctance.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_RELUCTANCE_HPP
-#define BOOST_UNITS_SI_RELUCTANCE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/reluctance.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<reluctance_dimension,si::system> reluctance;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_RELUCTANCE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/resistance.hpp b/contrib/restricted/boost/boost/units/systems/si/resistance.hpp
deleted file mode 100644
index 4bcb13f6cd..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/resistance.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_RESISTANCE_HPP
-#define BOOST_UNITS_SI_RESISTANCE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/resistance.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<resistance_dimension,si::system> resistance;
-
-BOOST_UNITS_STATIC_CONSTANT(ohm,resistance);
-BOOST_UNITS_STATIC_CONSTANT(ohms,resistance);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_RESISTANCE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/resistivity.hpp b/contrib/restricted/boost/boost/units/systems/si/resistivity.hpp
deleted file mode 100644
index bebfc4a042..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/resistivity.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_RESISTIVITY_HPP
-#define BOOST_UNITS_SI_RESISTIVITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/resistivity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<resistivity_dimension,si::system> resistivity;
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_RESISTIVITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/solid_angle.hpp b/contrib/restricted/boost/boost/units/systems/si/solid_angle.hpp
deleted file mode 100644
index a5036c7bf2..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/solid_angle.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_SOLID_ANGLE_HPP
-#define BOOST_UNITS_SI_SOLID_ANGLE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<solid_angle_dimension,si::system> solid_angle;
-
-BOOST_UNITS_STATIC_CONSTANT(steradian,solid_angle);
-BOOST_UNITS_STATIC_CONSTANT(steradians,solid_angle);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_SOLID_ANGLE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/surface_density.hpp b/contrib/restricted/boost/boost/units/systems/si/surface_density.hpp
deleted file mode 100644
index f686c3d672..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/surface_density.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_SURFACE_DENSITY_HPP
-#define BOOST_UNITS_SI_SURFACE_DENSITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/surface_density.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<surface_density_dimension,si::system> surface_density;
-
-BOOST_UNITS_STATIC_CONSTANT(kilogram_per_square_meter,surface_density);
-BOOST_UNITS_STATIC_CONSTANT(kilograms_per_square_meter,surface_density);
-BOOST_UNITS_STATIC_CONSTANT(kilogramme_per_square_metre,surface_density);
-BOOST_UNITS_STATIC_CONSTANT(kilogrammes_per_square_metre,surface_density);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_SURFACE_DENSITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/surface_tension.hpp b/contrib/restricted/boost/boost/units/systems/si/surface_tension.hpp
deleted file mode 100644
index b4b181f508..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/surface_tension.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_SURFACE_TENSION_HPP
-#define BOOST_UNITS_SI_SURFACE_TENSION_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/surface_tension.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<surface_tension_dimension,si::system> surface_tension;
-
-BOOST_UNITS_STATIC_CONSTANT(newton_per_meter,surface_tension);
-BOOST_UNITS_STATIC_CONSTANT(newtons_per_meter,surface_tension);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_SURFACE_TENSION_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/temperature.hpp b/contrib/restricted/boost/boost/units/systems/si/temperature.hpp
deleted file mode 100644
index 2bb70dd60b..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/temperature.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_TEMPERATURE_HPP
-#define BOOST_UNITS_SI_TEMPERATURE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<temperature_dimension,si::system> temperature;
-
-BOOST_UNITS_STATIC_CONSTANT(kelvin,temperature);
-BOOST_UNITS_STATIC_CONSTANT(kelvins,temperature);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_TEMPERATURE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/time.hpp b/contrib/restricted/boost/boost/units/systems/si/time.hpp
deleted file mode 100644
index 1b22de51b6..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/time.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_TIME_HPP
-#define BOOST_UNITS_SI_TIME_HPP
-
-#include <boost/units/systems/si/base.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<time_dimension,si::system> time;
-
-BOOST_UNITS_STATIC_CONSTANT(second,time);
-BOOST_UNITS_STATIC_CONSTANT(seconds,time);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_TIME_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/torque.hpp b/contrib/restricted/boost/boost/units/systems/si/torque.hpp
deleted file mode 100644
index de9e685707..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/torque.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_TORQUE_HPP
-#define BOOST_UNITS_SI_TORQUE_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/torque.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<torque_dimension,si::system> torque;
-
-BOOST_UNITS_STATIC_CONSTANT(newton_meter,torque);
-BOOST_UNITS_STATIC_CONSTANT(newton_meters,torque);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_TORQUE_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/velocity.hpp b/contrib/restricted/boost/boost/units/systems/si/velocity.hpp
deleted file mode 100644
index 44a5911c13..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/velocity.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_VELOCITY_HPP
-#define BOOST_UNITS_SI_VELOCITY_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/velocity.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<velocity_dimension,si::system> velocity;
-
-BOOST_UNITS_STATIC_CONSTANT(meter_per_second,velocity);
-BOOST_UNITS_STATIC_CONSTANT(meters_per_second,velocity);
-BOOST_UNITS_STATIC_CONSTANT(metre_per_second,velocity);
-BOOST_UNITS_STATIC_CONSTANT(metres_per_second,velocity);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_VELOCITY_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/volume.hpp b/contrib/restricted/boost/boost/units/systems/si/volume.hpp
deleted file mode 100644
index 2bc9dc22b9..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/volume.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_VOLUME_HPP
-#define BOOST_UNITS_SI_VOLUME_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/volume.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<volume_dimension,si::system> volume;
-
-BOOST_UNITS_STATIC_CONSTANT(cubic_meter,volume);
-BOOST_UNITS_STATIC_CONSTANT(cubic_meters,volume);
-BOOST_UNITS_STATIC_CONSTANT(cubic_metre,volume);
-BOOST_UNITS_STATIC_CONSTANT(cubic_metres,volume);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_VOLUME_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/si/wavenumber.hpp b/contrib/restricted/boost/boost/units/systems/si/wavenumber.hpp
deleted file mode 100644
index a593d011bf..0000000000
--- a/contrib/restricted/boost/boost/units/systems/si/wavenumber.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_SI_WAVENUMBER_HPP
-#define BOOST_UNITS_SI_WAVENUMBER_HPP
-
-#include <boost/units/systems/si/base.hpp>
-#include <boost/units/physical_dimensions/wavenumber.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace si {
-
-typedef unit<wavenumber_dimension,si::system> wavenumber;
-
-BOOST_UNITS_STATIC_CONSTANT(reciprocal_meter,wavenumber);
-BOOST_UNITS_STATIC_CONSTANT(reciprocal_meters,wavenumber);
-BOOST_UNITS_STATIC_CONSTANT(reciprocal_metre,wavenumber);
-BOOST_UNITS_STATIC_CONSTANT(reciprocal_metres,wavenumber);
-
-} // namespace si
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_SI_WAVENUMBER_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/temperature/celsius.hpp b/contrib/restricted/boost/boost/units/systems/temperature/celsius.hpp
deleted file mode 100644
index 5b8a41bed9..0000000000
--- a/contrib/restricted/boost/boost/units/systems/temperature/celsius.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_TEMPERATURE_CELSIUS_HPP
-#define BOOST_UNITS_TEMPERATURE_CELSIUS_HPP
-
-#include <string>
-
-#include <boost/units/absolute.hpp>
-#include <boost/units/static_constant.hpp>
-#include <boost/units/make_system.hpp>
-#include <boost/units/base_units/temperature/celsius.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace celsius {
-
-typedef make_system<boost::units::temperature::celsius_base_unit>::type system;
-
-typedef unit<temperature_dimension,system> temperature;
-
-BOOST_UNITS_STATIC_CONSTANT(degree,temperature);
-BOOST_UNITS_STATIC_CONSTANT(degrees,temperature);
-
-} // namespace celsius
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_TEMPERATURE_CELSIUS_HPP
diff --git a/contrib/restricted/boost/boost/units/systems/temperature/fahrenheit.hpp b/contrib/restricted/boost/boost/units/systems/temperature/fahrenheit.hpp
deleted file mode 100644
index 3065723b57..0000000000
--- a/contrib/restricted/boost/boost/units/systems/temperature/fahrenheit.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_TEMPERATURE_FAHRENHEIT_HPP
-#define BOOST_UNITS_TEMPERATURE_FAHRENHEIT_HPP
-
-#include <string>
-
-#include <boost/units/absolute.hpp>
-#include <boost/units/make_system.hpp>
-#include <boost/units/static_constant.hpp>
-#include <boost/units/base_units/temperature/fahrenheit.hpp>
-
-namespace boost {
-
-namespace units {
-
-namespace fahrenheit {
-
-typedef make_system<boost::units::temperature::fahrenheit_base_unit>::type system;
-
-typedef unit<temperature_dimension,system> temperature;
-
-BOOST_UNITS_STATIC_CONSTANT(degree,temperature);
-BOOST_UNITS_STATIC_CONSTANT(degrees,temperature);
-
-} // namespace fahrenheit
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_TEMPERATURE_FAHRENHEIT_HPP
diff --git a/contrib/restricted/boost/boost/units/unit.hpp b/contrib/restricted/boost/boost/units/unit.hpp
deleted file mode 100644
index aa4611cf7f..0000000000
--- a/contrib/restricted/boost/boost/units/unit.hpp
+++ /dev/null
@@ -1,448 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_UNIT_HPP
-#define BOOST_UNITS_UNIT_HPP
-
-#include <boost/static_assert.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/assert.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-#include <boost/units/config.hpp>
-#include <boost/units/dimension.hpp>
-#include <boost/units/operators.hpp>
-#include <boost/units/units_fwd.hpp>
-#include <boost/units/homogeneous_system.hpp>
-#include <boost/units/heterogeneous_system.hpp>
-#include <boost/units/is_dimension_list.hpp>
-#include <boost/units/reduce_unit.hpp>
-#include <boost/units/static_rational.hpp>
-
-namespace boost {
-
-namespace units {
-
-/// class representing a model-dependent unit with no associated value
-
-/// (e.g. meters, Kelvin, feet, etc...)
-template<class Dim,class System, class Enable>
-class unit
-{
- public:
- typedef unit<Dim, System> unit_type;
- typedef unit<Dim,System> this_type;
- typedef Dim dimension_type;
- typedef System system_type;
-
- BOOST_CONSTEXPR unit() { }
- BOOST_CONSTEXPR unit(const this_type&) { }
- //~unit() { }
-
- BOOST_CXX14_CONSTEXPR this_type& operator=(const this_type&) { return *this; }
-
- // sun will ignore errors resulting from templates
- // instantiated in the return type of a function.
- // Make sure that we get an error anyway by putting.
- // the check in the destructor.
- #ifdef __SUNPRO_CC
- ~unit() {
- BOOST_MPL_ASSERT((detail::check_system<System, Dim>));
- BOOST_MPL_ASSERT((is_dimension_list<Dim>));
- }
- #else
- private:
- BOOST_MPL_ASSERT((detail::check_system<System, Dim>));
- BOOST_MPL_ASSERT((is_dimension_list<Dim>));
- #endif
-};
-
-}
-
-}
-
-#if BOOST_UNITS_HAS_BOOST_TYPEOF
-
-#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
-
-BOOST_TYPEOF_REGISTER_TEMPLATE(boost::units::unit, 2)
-
-#endif
-
-namespace boost {
-
-namespace units {
-
-/// Returns a unique type for every unit.
-template<class Dim, class System>
-struct reduce_unit<unit<Dim, System> >
-{
- typedef unit<
- Dim,
- typename detail::make_heterogeneous_system<
- Dim,
- System
- >::type
- > type;
-};
-
-/// INTERNAL ONLY
-template<class S1,class S2>
-struct is_implicitly_convertible :
- boost::is_same<typename reduce_unit<S1>::type, typename reduce_unit<S2>::type>
-{ };
-
-/// unit unary plus typeof helper
-/// INTERNAL ONLY
-template<class Dim,class System>
-struct unary_plus_typeof_helper< unit<Dim,System> >
-{
- typedef unit<Dim,System> type;
-};
-
-/// unit unary minus typeof helper
-/// INTERNAL ONLY
-template<class Dim,class System>
-struct unary_minus_typeof_helper< unit<Dim,System> >
-{
- typedef unit<Dim,System> type;
-};
-
-/// unit add typeof helper
-/// INTERNAL ONLY
-template<class Dim,
- class System>
-struct add_typeof_helper< unit<Dim,System>,unit<Dim,System> >
-{
- typedef unit<Dim,System> type;
-};
-
-/// unit subtract typeof helper
-/// INTERNAL ONLY
-template<class Dim,
- class System>
-struct subtract_typeof_helper< unit<Dim,System>,unit<Dim,System> >
-{
- typedef unit<Dim,System> type;
-};
-
-/// unit multiply typeof helper for two identical homogeneous systems
-/// INTERNAL ONLY
-template<class Dim1,
- class Dim2,
- class System>
-struct multiply_typeof_helper< unit<Dim1,homogeneous_system<System> >,
- unit<Dim2,homogeneous_system<System> > >
-{
- typedef unit<typename mpl::times<Dim1,Dim2>::type,homogeneous_system<System> > type;
-};
-
-/// unit multiply typeof helper for two different homogeneous systems
-/// INTERNAL ONLY
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-struct multiply_typeof_helper< unit<Dim1,homogeneous_system<System1> >,
- unit<Dim2,homogeneous_system<System2> > >
-{
- typedef unit<
- typename mpl::times<Dim1,Dim2>::type,
- typename detail::multiply_systems<
- typename detail::make_heterogeneous_system<Dim1, System1>::type,
- typename detail::make_heterogeneous_system<Dim2, System2>::type
- >::type
- > type;
-};
-
-/// unit multiply typeof helper for a heterogeneous and a homogeneous system
-/// INTERNAL ONLY
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-struct multiply_typeof_helper< unit<Dim1,heterogeneous_system<System1> >,
- unit<Dim2,homogeneous_system<System2> > >
-{
- typedef unit<
- typename mpl::times<Dim1,Dim2>::type,
- typename detail::multiply_systems<
- heterogeneous_system<System1>,
- typename detail::make_heterogeneous_system<Dim2, System2>::type
- >::type
- > type;
-};
-
-/// unit multiply typeof helper for a homogeneous and a heterogeneous system
-/// INTERNAL ONLY
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-struct multiply_typeof_helper< unit<Dim1,homogeneous_system<System1> >,
- unit<Dim2,heterogeneous_system<System2> > >
-{
- typedef unit<
- typename mpl::times<Dim1,Dim2>::type,
- typename detail::multiply_systems<
- typename detail::make_heterogeneous_system<Dim1, System1>::type,
- heterogeneous_system<System2>
- >::type
- > type;
-};
-
-/// unit multiply typeof helper for two heterogeneous systems
-/// INTERNAL ONLY
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-struct multiply_typeof_helper< unit<Dim1,heterogeneous_system<System1> >,
- unit<Dim2,heterogeneous_system<System2> > >
-{
- typedef unit<
- typename mpl::times<Dim1,Dim2>::type,
- typename detail::multiply_systems<
- heterogeneous_system<System1>,
- heterogeneous_system<System2>
- >::type
- > type;
-};
-
-/// unit divide typeof helper for two identical homogeneous systems
-/// INTERNAL ONLY
-template<class Dim1,
- class Dim2,
- class System>
-struct divide_typeof_helper< unit<Dim1,homogeneous_system<System> >,
- unit<Dim2,homogeneous_system<System> > >
-{
- typedef unit<typename mpl::divides<Dim1,Dim2>::type,homogeneous_system<System> > type;
-};
-
-/// unit divide typeof helper for two different homogeneous systems
-/// INTERNAL ONLY
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-struct divide_typeof_helper< unit<Dim1,homogeneous_system<System1> >,
- unit<Dim2,homogeneous_system<System2> > >
-{
- typedef unit<
- typename mpl::divides<Dim1,Dim2>::type,
- typename detail::divide_systems<
- typename detail::make_heterogeneous_system<Dim1, System1>::type,
- typename detail::make_heterogeneous_system<Dim2, System2>::type
- >::type
- > type;
-};
-
-/// unit divide typeof helper for a heterogeneous and a homogeneous system
-/// INTERNAL ONLY
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-struct divide_typeof_helper< unit<Dim1,heterogeneous_system<System1> >,
- unit<Dim2,homogeneous_system<System2> > >
-{
- typedef unit<
- typename mpl::divides<Dim1,Dim2>::type,
- typename detail::divide_systems<
- heterogeneous_system<System1>,
- typename detail::make_heterogeneous_system<Dim2, System2>::type
- >::type
- > type;
-};
-
-/// unit divide typeof helper for a homogeneous and a heterogeneous system
-/// INTERNAL ONLY
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-struct divide_typeof_helper< unit<Dim1,homogeneous_system<System1> >,
- unit<Dim2,heterogeneous_system<System2> > >
-{
- typedef unit<
- typename mpl::divides<Dim1,Dim2>::type,
- typename detail::divide_systems<
- typename detail::make_heterogeneous_system<Dim1, System1>::type,
- heterogeneous_system<System2>
- >::type
- > type;
-};
-
-/// unit divide typeof helper for two heterogeneous systems
-/// INTERNAL ONLY
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-struct divide_typeof_helper< unit<Dim1,heterogeneous_system<System1> >,
- unit<Dim2,heterogeneous_system<System2> > >
-{
- typedef unit<
- typename mpl::divides<Dim1,Dim2>::type,
- typename detail::divide_systems<
- heterogeneous_system<System1>,
- heterogeneous_system<System2>
- >::type
- > type;
-};
-
-/// raise unit to a @c static_rational power
-template<class Dim,class System,long N,long D>
-struct power_typeof_helper<unit<Dim,System>,static_rational<N,D> >
-{
- typedef unit<typename static_power<Dim,static_rational<N,D> >::type,typename static_power<System, static_rational<N,D> >::type> type;
-
- static BOOST_CONSTEXPR type value(const unit<Dim,System>&)
- {
- return type();
- }
-};
-
-/// take the @c static_rational root of a unit
-template<class Dim,class System,long N,long D>
-struct root_typeof_helper<unit<Dim,System>,static_rational<N,D> >
-{
- typedef unit<typename static_root<Dim,static_rational<N,D> >::type,typename static_root<System, static_rational<N,D> >::type> type;
-
- static BOOST_CONSTEXPR type value(const unit<Dim,System>&)
- {
- return type();
- }
-};
-
-/// unit runtime unary plus
-template<class Dim,class System>
-BOOST_CONSTEXPR
-typename unary_plus_typeof_helper< unit<Dim,System> >::type
-operator+(const unit<Dim,System>&)
-{
- typedef typename unary_plus_typeof_helper< unit<Dim,System> >::type type;
-
- return type();
-}
-
-/// unit runtime unary minus
-template<class Dim,class System>
-BOOST_CONSTEXPR
-typename unary_minus_typeof_helper< unit<Dim,System> >::type
-operator-(const unit<Dim,System>&)
-{
- typedef typename unary_minus_typeof_helper< unit<Dim,System> >::type type;
-
- return type();
-}
-
-/// runtime add two units
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-BOOST_CONSTEXPR
-typename add_typeof_helper< unit<Dim1,System1>,
- unit<Dim2,System2> >::type
-operator+(const unit<Dim1,System1>&,const unit<Dim2,System2>&)
-{
- BOOST_STATIC_ASSERT((boost::is_same<System1,System2>::value == true));
-
- typedef System1 system_type;
- typedef typename add_typeof_helper< unit<Dim1,system_type>,
- unit<Dim2,system_type> >::type type;
-
- return type();
-}
-
-/// runtime subtract two units
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-BOOST_CONSTEXPR
-typename subtract_typeof_helper< unit<Dim1,System1>,
- unit<Dim2,System2> >::type
-operator-(const unit<Dim1,System1>&,const unit<Dim2,System2>&)
-{
- BOOST_STATIC_ASSERT((boost::is_same<System1,System2>::value == true));
-
- typedef System1 system_type;
- typedef typename subtract_typeof_helper< unit<Dim1,system_type>,
- unit<Dim2,system_type> >::type type;
-
- return type();
-}
-
-/// runtime multiply two units
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-BOOST_CONSTEXPR
-typename multiply_typeof_helper< unit<Dim1,System1>,
- unit<Dim2,System2> >::type
-operator*(const unit<Dim1,System1>&,const unit<Dim2,System2>&)
-{
- typedef typename multiply_typeof_helper< unit<Dim1,System1>,
- unit<Dim2,System2> >::type type;
-
- return type();
-}
-
-/// runtime divide two units
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-BOOST_CONSTEXPR
-typename divide_typeof_helper< unit<Dim1,System1>,
- unit<Dim2,System2> >::type
-operator/(const unit<Dim1,System1>&,const unit<Dim2,System2>&)
-{
- typedef typename divide_typeof_helper< unit<Dim1,System1>,
- unit<Dim2,System2> >::type type;
-
- return type();
-}
-
-/// unit runtime @c operator==
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-inline
-BOOST_CONSTEXPR
-bool
-operator==(const unit<Dim1,System1>&,const unit<Dim2,System2>&)
-{
- return boost::is_same<typename reduce_unit<unit<Dim1,System1> >::type, typename reduce_unit<unit<Dim2,System2> >::type>::value;
-}
-
-/// unit runtime @c operator!=
-template<class Dim1,
- class Dim2,
- class System1,
- class System2>
-inline
-BOOST_CONSTEXPR
-bool
-operator!=(const unit<Dim1,System1>&,const unit<Dim2,System2>&)
-{
- return !boost::is_same<typename reduce_unit<unit<Dim1,System1> >::type, typename reduce_unit<unit<Dim2,System2> >::type>::value;
-}
-
-} // namespace units
-
-} // namespace boost
-
-#endif // BOOST_UNITS_UNIT_HPP
diff --git a/contrib/restricted/boost/boost/units/units_fwd.hpp b/contrib/restricted/boost/boost/units/units_fwd.hpp
deleted file mode 100644
index cca5c0b15a..0000000000
--- a/contrib/restricted/boost/boost/units/units_fwd.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-// Boost.Units - A C++ library for zero-overhead dimensional analysis and
-// unit/quantity manipulation and conversion
-//
-// Copyright (C) 2003-2008 Matthias Christian Schabel
-// Copyright (C) 2008 Steven Watanabe
-//
-// 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)
-
-#ifndef BOOST_UNITS_UNITS_FWD_HPP
-#define BOOST_UNITS_UNITS_FWD_HPP
-
-///
-/// \file
-/// \brief Forward declarations of library components.
-/// \details Forward declarations of units library - dimensions, systems, quantity and string components.
-///
-
-#ifndef BOOST_UNITS_DOXYGEN
-
-#include <string>
-
-namespace boost {
-
-namespace units {
-
-template<typename T,typename V> struct dim;
-template<typename T> struct is_dim;
-
-struct dimensionless_type;
-template<class Item,class Next> struct list;
-template<typename Seq> struct make_dimension_list;
-
-template<class T> struct is_dimensionless;
-template<class S1,class S2> struct is_implicitly_convertible;
-template<class T> struct get_dimension;
-template<class T> struct get_system;
-
-template<class Y> class absolute;
-
-template<class Dim,class System, class Enable=void> class unit;
-
-template<long Base, class Exponent> struct scale;
-
-template<class BaseUnitTag> struct base_unit_info;
-template<class System> struct dimensionless_unit;
-template<class T> struct is_unit;
-template<class T,class Dim> struct is_unit_of_dimension;
-template<class T,class System> struct is_unit_of_system;
-
-template<class Unit,class Y = double> class quantity;
-
-template<class System,class Y> struct dimensionless_quantity;
-template<class T> struct is_quantity;
-template<class T,class Dim> struct is_quantity_of_dimension;
-template<class T,class System> struct is_quantity_of_system;
-
-template<class From,class To> struct conversion_helper;
-
-template<class T> std::string to_string(const T&);
-template<class T> std::string name_string(const T&);
-template<class T> std::string symbol_string(const T&);
-template<class T> std::string raw_string(const T&);
-template<class T> std::string typename_string(const T&);
-
-} // namespace units
-
-} // namespace boost
-
-#endif
-
-#endif // BOOST_UNITS_UNITS_FWD_HPP
diff --git a/contrib/restricted/boost/units/CMakeLists.txt b/contrib/restricted/boost/units/CMakeLists.txt
new file mode 100644
index 0000000000..8bdd2d3de3
--- /dev/null
+++ b/contrib/restricted/boost/units/CMakeLists.txt
@@ -0,0 +1,30 @@
+
+# This file was gererated by the build system used internally in the Yandex monorepo.
+# Only simple modifications are allowed (adding source-files to targets, adding simple properties
+# like target_include_directories). These modifications will be ported to original
+# ya.make files by maintainers. Any complex modifications which can't be ported back to the
+# original buildsystem will not be accepted.
+
+
+
+add_library(restricted-boost-units INTERFACE)
+target_include_directories(restricted-boost-units INTERFACE
+ ${CMAKE_SOURCE_DIR}/contrib/restricted/boost/units/include
+)
+target_link_libraries(restricted-boost-units INTERFACE
+ contrib-libs-cxxsupp
+ yutil
+ restricted-boost-assert
+ restricted-boost-config
+ restricted-boost-core
+ restricted-boost-integer
+ restricted-boost-io
+ restricted-boost-lambda
+ restricted-boost-math
+ restricted-boost-mpl
+ restricted-boost-preprocessor
+ restricted-boost-serialization
+ restricted-boost-static_assert
+ restricted-boost-type_traits
+ restricted-boost-typeof
+)
diff --git a/contrib/restricted/boost/units/README.md b/contrib/restricted/boost/units/README.md
new file mode 100644
index 0000000000..685cb464aa
--- /dev/null
+++ b/contrib/restricted/boost/units/README.md
@@ -0,0 +1,38 @@
+Boost.Units
+===========
+
+Boost.Units, part of collection of the [Boost C++ Libraries](http://github.com/boostorg),
+implements dimensional analysis in a general and extensible manner,
+treating it as a generic compile-time metaprogramming problem.
+With appropriate compiler optimization, no runtime execution cost is introduced,
+facilitating the use of this library to provide dimension checking in performance-critical code.
+
+### Directories
+
+* **doc** - QuickBook documentation sources
+* **example** - examples
+* **images** - images for documention
+* **include** - Interface headers
+* **test** - unit tests
+* **test_headers** - unit tests for self containment of headers
+* **tutorial** - tutorial
+
+### Test results
+
+@ | Travis | AppVeyor
+--------|-------------|---------
+master | [![Build Status](https://travis-ci.org/boostorg/units.svg?branch=master)](https://travis-ci.org/boostorg/units) | [![Build Status](https://ci.appveyor.com/api/projects/status/github/boostorg/units?branch=master&svg=true)](https://ci.appveyor.com/project/boostorg/units)
+develop | [![Build Status](https://travis-ci.org/boostorg/units.svg)](https://travis-ci.org/boostorg/units) | [![Build Status](https://ci.appveyor.com/api/projects/status/github/boostorg/units?svg=true)](https://ci.appveyor.com/project/boostorg/units)
+
+<a href="https://scan.coverity.com/projects/boostorg-units">
+ <img alt="Coverity Scan Build Status"
+ src="https://img.shields.io/coverity/scan/14037.svg"/>
+</a>
+
+### More information
+
+* [Documentation](http://boost.org/libs/units)
+
+### License
+
+Distributed under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt).