00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _ElectricCharge_h
00027 #define _ElectricCharge_h
00028
00029
00030 #include "Quantities/Quantity/Variable.h"
00031 #include "Quantities/Quantity/Constant.h"
00032 #include "Quantities/Quantity/QuantityAggregates.h"
00033
00034 namespace quantity {
00035 namespace electricCharge {
00036
00038 class Class;
00039
00041 class Unit;
00042
00043
00044 class CoulombUnits;
00045 class FranklinUnit;
00046 class EmuUnit;
00047 class ProtonChargeUnit;
00048
00050 typedef unit::Prefixable<Unit, CoulombUnits> Coulombs;
00051
00053 typedef unit::Prefixed<Coulombs> Coulomb;
00054
00056 typedef unit::Prefixed<Coulombs, unit::Milli> MilliCoulomb;
00057
00059 typedef unit::NonPrefixable<Unit, FranklinUnit> Franklin;
00060
00062 typedef unit::NonPrefixable<Unit, EmuUnit> Emu;
00063
00065 typedef unit::NonPrefixable<Unit, ProtonChargeUnit> ProtonCharge;
00066
00068 typedef Loki::Typelist<Coulombs, Loki::Typelist<Franklin,
00069 Loki::Typelist<Emu, Loki::Typelist<ProtonCharge, Loki::NullType> > > > Units;
00070
00071
00072 typedef Coulomb C;
00073
00074
00075
00076 typedef Quantity<Class> Quantity;
00077
00078 class DerivedElectricCharge;
00079
00080 }
00081
00083 template<>
00084 struct QuantityTraits<electricCharge::Class>
00085 {
00086 typedef
00087 dimension::Dimension<BSUtilities::Rational<0>,
00088 BSUtilities::Rational<0>, BSUtilities::Rational<1>,
00089 BSUtilities::Rational<1>, BSUtilities::Rational<0>,
00090 BSUtilities::Rational<0>, BSUtilities::Rational<0> > Dimension;
00091 typedef electricCharge::Unit UnitType;
00092 typedef electricCharge::Units UnitList;
00093 typedef electricCharge::Coulomb DefaultUnit;
00094
00095 typedef electricCharge::DerivedElectricCharge
00096 DefaultDerivedQuantityType;
00097
00098 static const std::string NameString ();
00099 static const std::string SymbolString ();
00100
00101 };
00102
00103
00104 template<>
00105 struct DerivedQuantityTraits<electricCharge::Class,
00106 electricCharge::DerivedElectricCharge>
00107 {
00108 static const bool OverwriteName = false;
00109 static const bool OverwriteSymbol = false;
00110
00111 static const std::string NameString ();
00112 static const std::string SymbolString ();
00113
00114 };
00115
00116
00118 typedef Variable<electricCharge::Quantity> ElectricCharge;
00119
00121 typedef Constant<electricCharge::Quantity> ElectricChargeConstant;
00122
00124 typedef VariableVector<QuantityVector<electricCharge::Class> >
00125 ElectricChargeVector;
00126
00127 }
00128
00129 #endif