58 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								// Boost.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>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/// 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
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/// 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
							 |