00001 00005 /* Copyright (C) 2002 - 2005, Bernd Speiser */ 00006 /* This file is part of Quantity. 00007 00008 Quantity is free software; you can redistribute it and/or 00009 modify it under the terms of the GNU General Public License 00010 as published by the Free Software Foundation; either version 2 00011 of the License, or (at your option) any later version. 00012 00013 Quantity is distributed in the hope that it will be useful, 00014 but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 GNU General Public License for more details. 00017 00018 You should have received a copy of the GNU General Public License 00019 along with this program; if not, write to the Free Software 00020 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 00021 02111-1307, USA. 00022 */ 00023 00024 #ifndef _Prefix_h 00025 #define _Prefix_h 00026 00027 #include <string> 00028 00029 namespace unit { 00030 00032 00038 template<class P> class Prefix 00039 { 00040 public: 00041 00043 00048 static const double Factor; 00049 00051 00054 static const std::string Name; 00055 00057 00060 static const std::string Symbol; 00061 }; 00062 00064 00066 class NoPrefix; 00067 00068 typedef Prefix<NoPrefix> No; 00069 00071 00073 class DeciPrefix; 00074 00075 typedef Prefix<DeciPrefix> Deci; 00076 00078 00080 class DeciPrefix; 00081 class CentiPrefix; 00082 00083 typedef Prefix<CentiPrefix> Centi; 00084 00086 00088 class MilliPrefix; 00089 00090 typedef Prefix<MilliPrefix> Milli; 00091 00093 00095 class MicroPrefix; 00096 00097 typedef Prefix<MicroPrefix> Micro; 00098 00100 00102 class NanoPrefix; 00103 00104 typedef Prefix<NanoPrefix> Nano; 00105 00107 00109 class PicoPrefix; 00110 00111 typedef Prefix<PicoPrefix> Pico; 00112 00114 00116 class FemtoPrefix; 00117 00118 typedef Prefix<FemtoPrefix> Femto; 00119 00121 00123 class AttoPrefix; 00124 00125 typedef Prefix<AttoPrefix> Atto; 00126 00128 00130 class ZeptoPrefix; 00131 00132 typedef Prefix<ZeptoPrefix> Zepto; 00133 00135 00137 class YoctoPrefix; 00138 00139 typedef Prefix<YoctoPrefix> Yocto; 00140 00142 00144 class DecaPrefix; 00145 00146 typedef Prefix<DecaPrefix> Deca; 00147 00149 00151 class HectoPrefix; 00152 00153 typedef Prefix<HectoPrefix> Hecto; 00154 00156 00158 class KiloPrefix; 00159 00160 typedef Prefix<KiloPrefix> Kilo; 00161 00163 00165 class MegaPrefix; 00166 00167 typedef Prefix<MegaPrefix> Mega; 00168 00170 00172 class GigaPrefix; 00173 00174 typedef Prefix<GigaPrefix> Giga; 00175 00177 00179 class TeraPrefix; 00180 00181 typedef Prefix<TeraPrefix> Tera; 00182 00184 00186 class PetaPrefix; 00187 00188 typedef Prefix<PetaPrefix> Peta; 00189 00191 00193 class ExaPrefix; 00194 00195 typedef Prefix<ExaPrefix> Exa; 00196 00198 00200 class ZettaPrefix; 00201 00202 typedef Prefix<ZettaPrefix> Zetta; 00203 00205 00207 class YottaPrefix; 00208 00209 typedef Prefix<YottaPrefix> Yotta; 00210 00211 } 00212 00213 #endif /* _Prefix_h */