00001 00007 /* Copyright (C) 2008 - 2010, Bernd Speiser */ 00008 00009 /* This file is part of PhysicalQuantities. 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 _Pi_h 00028 #define _Pi_h 00029 00030 // Quantity includes 00031 #include "Quantities/Quantity/UniqueConstant.h" 00032 #include "Quantities/PhysicalQuantities/PureNumber.h" 00033 00034 namespace quantity { 00035 namespace pi { 00036 00037 typedef pureNumber::Quantity Quantity; 00038 00039 class DerivedPi; 00040 00041 } // end namespace pi 00042 00043 // the derived quantity traits template for PureNumber Pi 00044 template<> 00045 struct DerivedQuantityTraits<pureNumber::Class, pi::DerivedPi> 00046 { 00047 static const bool OverwriteName = true; 00048 static const bool OverwriteSymbol = true; 00049 00050 static const std::string NameString (); 00051 static const std::string SymbolString (); 00052 00053 }; 00054 00055 typedef Loki::SingletonHolder<UniqueConstant <pureNumber::Quantity, 00056 DerivedQuantity<pureNumber::Class, pureNumber::Unity, pi::DerivedPi> > > Pi; 00057 00058 #define PI Pi::Instance() 00059 00060 } 00061 00062 #endif /* _Pi_h */