Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

AnnotationNumberFormater.cpp

Go to the documentation of this file.
00001 #include "AnnotationNumberFormater.h"
00002 
00003 #ifdef OLDSTREAMS
00004 # include <strstream>
00005 # define ios_base ios
00006 # define ostringstream ostrstream
00007 #else
00008 # include <sstream>
00009 #endif
00010 
00011 #include <iomanip>
00012 #include <cmath>
00013 
00014 Anaphe::AIDA_Histogram_native::AnnotationNumberFormater::AnnotationNumberFormater():
00015   m_precisionDigits( Anaphe::AIDA_Histogram_native::AnnotationNumberFormater::defaultPrecisionDigits )
00016 {}
00017 
00018 std::string
00019 Anaphe::AIDA_Histogram_native::AnnotationNumberFormater::formatInteger( int number ) const
00020 {
00021   std::ostringstream os;
00022   os << number;
00023 #ifndef BADENDS
00024   os << std::ends;
00025 #endif
00026   return os.str();
00027 }
00028 
00029 
00030 std::string
00031 Anaphe::AIDA_Histogram_native::AnnotationNumberFormater::formatDouble( double number ) const
00032 {
00033   const double n = std::abs( number );
00034   std::ostringstream os;
00035   if ( n < 0.1 ) {
00036     os << std::setiosflags(std::ios_base::scientific);
00037     os << std::setprecision(m_precisionDigits);
00038   }
00039   else if ( n < 10 ) {
00040     os << std::setiosflags(std::ios_base::fixed);
00041     os << std::setprecision(m_precisionDigits);
00042   }
00043   else if ( n < 100 ) {
00044     os << std::setiosflags(std::ios_base::fixed);
00045     os << std::setprecision(m_precisionDigits-1);
00046   }
00047   else {
00048     os << std::setiosflags(std::ios_base::scientific);
00049     os << std::setprecision(m_precisionDigits);
00050   };
00051 
00052   os << number;
00053 #ifndef BADENDS
00054   os << std::ends;
00055 #endif
00056   return os.str();
00057 }
00058 
00059 
00060 void
00061 Anaphe::AIDA_Histogram_native::AnnotationNumberFormater::setPrecisionDigits( int digits )
00062 {
00063   m_precisionDigits = digits;
00064 }
00065 
00066 
00067 int
00068 Anaphe::AIDA_Histogram_native::AnnotationNumberFormater::precisionDigits() const
00069 {
00070   return m_precisionDigits;
00071 }
00072 

Generated on Tue Nov 19 12:32:17 2002 for AIDA_Histogram_native by doxygen1.2.16