LuminousIntensity.h

Go to the documentation of this file.
00001 
00007 /* Copyright (C) 2002 - 2009, Bernd Speiser */
00008 
00009 /* This file is part of Quantities.
00010 
00011 PhysicalQuantities is free software; you can redistribute it and/or
00012 modify it under the terms of the GNU General Public License
00013 as published by the Free Software Foundation; either version 2
00014 of the License, or (at your option) any later version.
00015 
00016 PhysicalQuantities is distributed in the hope that it will be useful,
00017 but WITHOUT ANY WARRANTY; without even the implied warranty of
00018 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019 GNU General Public License for more details.
00020   
00021 You should have received a copy of the GNU General Public License
00022 along with this program; if not, write to the Free Software
00023 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
00024 02111-1307, USA.
00025 */
00026 
00027 #ifndef _LuminousIntensity_h
00028 #define _LuminousIntensity_h
00029 
00030 // Quantity includes
00031 #include "Quantity/Variable.h"
00032 #include "Quantity/Constant.h"
00033 #include "Quantity/QuantityCluster.h"
00034 
00035 namespace quantity {
00036   namespace luminousIntensity {
00037 
00039 class Class;
00040 
00042 class Unit;
00043 
00044 /* declaration of LuminousIntensity units */
00045 class CandelaUnits;
00046 
00048 typedef unit::Prefixable<Unit, CandelaUnits> Candelas;
00049 
00051 typedef unit::Prefixed<Candelas> Candela;
00052 
00054 typedef LOKI_TYPELIST_1(Candelas::Units) Units;
00055 
00056 /* declare some abbreviated luminous intensity units */
00057 
00058 typedef Candela cd;
00059 
00060 /* LuminousIntensity quantity */
00061 
00062 typedef Quantity<Class> Quantity;
00063 
00064 class DerivedLuminousIntensity;
00065 
00066   } // end namespace luminousIntensity
00067 
00069 
00071   template<typename ST>
00072     struct Standard<luminousIntensity::Candelas, ST>
00073     {
00074       static const ST ratio;
00075       static const bool exact;
00076     };
00077 
00079 template<typename ST> const ST Standard<luminousIntensity::Candelas, ST>::ratio = 1.0;
00080 
00082 template<typename ST> const bool Standard<luminousIntensity::Candelas, ST>::exact = true;
00083 
00085 template<>
00086   struct QuantityTraits<luminousIntensity::Class>
00087   {
00088     typedef
00089       dimension::Dimension<BSUtilities::Rational<0>,
00090         BSUtilities::Rational<0>, BSUtilities::Rational<0>,
00091           BSUtilities::Rational<0>, BSUtilities::Rational<0>,
00092             BSUtilities::Rational<0>, BSUtilities::Rational<1> > Dimension;
00093     typedef luminousIntensity::Unit UnitType;
00094     typedef luminousIntensity::Units UnitList;
00095     typedef luminousIntensity::Candela DefaultUnit;
00096 
00097     typedef luminousIntensity::DerivedLuminousIntensity DefaultDerivedQuantityType;
00098 
00099     static const std::string NameString;
00100     static const std::string SymbolString;
00101   };
00102 
00103 // the derived quantity traits template for Candela LuminousIntensity
00104 template<>
00105   struct DerivedQuantityTraits<luminousIntensity::Class, luminousIntensity::DerivedLuminousIntensity>
00106   {
00107     static const bool OverwriteName = false;
00108     static const bool OverwriteSymbol = false;
00109 
00110     static const std::string NameString;
00111     static const std::string SymbolString;
00112 
00113   };
00114 
00116 typedef Variable<luminousIntensity::Quantity> LuminousIntensity;
00117 
00119 typedef Constant<luminousIntensity::Quantity> LuminousIntensityConstant;
00120 
00122 typedef QuantityVector<Variable, luminousIntensity::Quantity> 
00123                                                 LuminousIntensityVector;
00124 
00125 } // end namespace quantity
00126 
00127 #endif /* _LuminousIntensity_h */

Generated on Mon Jul 27 15:55:45 2009 for Quantities by  doxygen 1.5.3