1 // Boost.Units - A C++ library for zero-overhead dimensional analysis and 2 // unit/quantity manipulation and conversion 3 // 4 // Copyright (C) 2003-2008 Matthias Christian Schabel 5 // Copyright (C) 2008 Steven Watanabe 6 // 7 // Distributed under the Boost Software License, Version 1.0. (See 8 // accompanying file LICENSE_1_0.txt or copy at 9 // http://www.boost.org/LICENSE_1_0.txt) 10 11 #ifndef BOOST_UNITS_SI_IO_HPP 12 #define BOOST_UNITS_SI_IO_HPP 13 14 #include <boost/units/io.hpp> 15 #include <boost/units/reduce_unit.hpp> 16 17 #include <boost/units/systems/si.hpp> 18 19 namespace boost { 20 21 namespace units { 22 23 // gray and sievert are indistinguishable name_string(const reduce_unit<si::absorbed_dose>::type &)24inline std::string name_string(const reduce_unit<si::absorbed_dose>::type&) { return "gray"; } symbol_string(const reduce_unit<si::absorbed_dose>::type &)25inline std::string symbol_string(const reduce_unit<si::absorbed_dose>::type&) { return "Gy"; } 26 27 // activity and frequency are indistinguishable - would need a "decays" base unit 28 //inline std::string name_string(const si::activity&) { return "becquerel"; } 29 //inline std::string symbol_string(const si::activity&) { return "Bq"; } 30 name_string(const reduce_unit<si::capacitance>::type &)31inline std::string name_string(const reduce_unit<si::capacitance>::type&) { return "farad"; } symbol_string(const reduce_unit<si::capacitance>::type &)32inline std::string symbol_string(const reduce_unit<si::capacitance>::type&) { return "F"; } 33 name_string(const reduce_unit<si::catalytic_activity>::type &)34inline std::string name_string(const reduce_unit<si::catalytic_activity>::type&) { return "katal"; } symbol_string(const reduce_unit<si::catalytic_activity>::type &)35inline std::string symbol_string(const reduce_unit<si::catalytic_activity>::type&) { return "kat"; } 36 name_string(const reduce_unit<si::conductance>::type &)37inline std::string name_string(const reduce_unit<si::conductance>::type&) { return "siemen"; } symbol_string(const reduce_unit<si::conductance>::type &)38inline std::string symbol_string(const reduce_unit<si::conductance>::type&) { return "S"; } 39 40 // gray and sievert are indistinguishable 41 //inline std::string name_string(const si::dose_equivalent&) { return "sievert"; } 42 //inline std::string symbol_string(const si::dose_equivalent&) { return "Sv"; } 43 name_string(const reduce_unit<si::electric_charge>::type &)44inline std::string name_string(const reduce_unit<si::electric_charge>::type&) { return "coulomb"; } symbol_string(const reduce_unit<si::electric_charge>::type &)45inline std::string symbol_string(const reduce_unit<si::electric_charge>::type&) { return "C"; } 46 name_string(const reduce_unit<si::electric_potential>::type &)47inline std::string name_string(const reduce_unit<si::electric_potential>::type&) { return "volt"; } symbol_string(const reduce_unit<si::electric_potential>::type &)48inline std::string symbol_string(const reduce_unit<si::electric_potential>::type&) { return "V"; } 49 name_string(const reduce_unit<si::energy>::type &)50inline std::string name_string(const reduce_unit<si::energy>::type&) { return "joule"; } symbol_string(const reduce_unit<si::energy>::type &)51inline std::string symbol_string(const reduce_unit<si::energy>::type&) { return "J"; } 52 name_string(const reduce_unit<si::force>::type &)53inline std::string name_string(const reduce_unit<si::force>::type&) { return "newton"; } symbol_string(const reduce_unit<si::force>::type &)54inline std::string symbol_string(const reduce_unit<si::force>::type&) { return "N"; } 55 name_string(const reduce_unit<si::frequency>::type &)56inline std::string name_string(const reduce_unit<si::frequency>::type&) { return "hertz"; } symbol_string(const reduce_unit<si::frequency>::type &)57inline std::string symbol_string(const reduce_unit<si::frequency>::type&) { return "Hz"; } 58 name_string(const reduce_unit<si::illuminance>::type &)59inline std::string name_string(const reduce_unit<si::illuminance>::type&) { return "lux"; } symbol_string(const reduce_unit<si::illuminance>::type &)60inline std::string symbol_string(const reduce_unit<si::illuminance>::type&) { return "lx"; } 61 name_string(const reduce_unit<si::inductance>::type &)62inline std::string name_string(const reduce_unit<si::inductance>::type&) { return "henry"; } symbol_string(const reduce_unit<si::inductance>::type &)63inline std::string symbol_string(const reduce_unit<si::inductance>::type&) { return "H"; } 64 name_string(const reduce_unit<si::luminous_flux>::type &)65inline std::string name_string(const reduce_unit<si::luminous_flux>::type&) { return "lumen"; } symbol_string(const reduce_unit<si::luminous_flux>::type &)66inline std::string symbol_string(const reduce_unit<si::luminous_flux>::type&) { return "lm"; } 67 name_string(const reduce_unit<si::magnetic_flux>::type &)68inline std::string name_string(const reduce_unit<si::magnetic_flux>::type&) { return "weber"; } symbol_string(const reduce_unit<si::magnetic_flux>::type &)69inline std::string symbol_string(const reduce_unit<si::magnetic_flux>::type&) { return "Wb"; } 70 name_string(const reduce_unit<si::magnetic_flux_density>::type &)71inline std::string name_string(const reduce_unit<si::magnetic_flux_density>::type&) { return "tesla"; } symbol_string(const reduce_unit<si::magnetic_flux_density>::type &)72inline std::string symbol_string(const reduce_unit<si::magnetic_flux_density>::type&) { return "T"; } 73 name_string(const reduce_unit<si::power>::type &)74inline std::string name_string(const reduce_unit<si::power>::type&) { return "watt"; } symbol_string(const reduce_unit<si::power>::type &)75inline std::string symbol_string(const reduce_unit<si::power>::type&) { return "W"; } 76 name_string(const reduce_unit<si::pressure>::type &)77inline std::string name_string(const reduce_unit<si::pressure>::type&) { return "pascal"; } symbol_string(const reduce_unit<si::pressure>::type &)78inline std::string symbol_string(const reduce_unit<si::pressure>::type&) { return "Pa"; } 79 name_string(const reduce_unit<si::resistance>::type &)80inline std::string name_string(const reduce_unit<si::resistance>::type&) { return "ohm"; } symbol_string(const reduce_unit<si::resistance>::type &)81inline std::string symbol_string(const reduce_unit<si::resistance>::type&) { return "Ohm"; } 82 83 84 } // namespace units 85 86 } // namespace boost 87 88 #endif // BOOST_UNITS_SI_IO_HPP 89