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

SimpleTimeDuration.h

Go to the documentation of this file.
00001 
00002 // simpleduration.h
00003 //
00004 // Purpose: SimpleTimeDuration is a nonnegative
00005 // distance in time. Various comparison and
00006 // arithmetic operations are supported.
00007 // 
00008 // Author: Erik Zeitler  Date: 2000-09-06
00009 //
00011 
00012 // TODO:
00013 // - Make functions to convert to/from more human readable strings i.e. 
00014 //   day(), hour(), min(), sec(), ns(). 
00015 
00016 #ifndef SIMPLE_DURATION_H
00017 #define SIMPLE_DURATION_H
00018 #include <iostream>
00019 
00020 // Win32 does not support properly unsigned 64 bit integers
00021 #ifdef _WIN32
00022 typedef __int64 DurationT;
00023 const DurationT Billion=1000000000;
00024 #else
00025 //-ap, 17-may-2001: 
00026 //     On request from the ConditionsDB people (forwarded by Stefano Paoli)
00027 //     the type of "DurationT" has been changed from "unsigned long long" to "long long"
00028 //-ap end
00029 typedef long long DurationT;
00030 const DurationT Billion=1000000000LL;
00031 #endif
00032 
00033 #include "SimpleTime.h"
00034 
00035 class SimpleTimeInterval;
00036 
00037 
00038 
00048 class SimpleTimeDuration {
00049  public:
00050   // Construction/Destruction
00051   SimpleTimeDuration(DurationT nsec=Billion) {durationval=nsec;};
00052   SimpleTimeDuration(const SimpleTimeDuration &d) {durationval=d.duration();};
00053   SimpleTimeDuration(const SimpleTime &, const SimpleTime &);
00054   SimpleTimeDuration(const SimpleTimeInterval &);
00055   ~SimpleTimeDuration() {};
00056 
00057   // Auxiliary functions
00058   DurationT duration() const;
00059   void setDuration(const SimpleTimeDuration &);
00060   void setDuration(const SimpleTimeInterval &);
00062   void setDuration(const SimpleTime &, const SimpleTime &);
00063   void setPlusInf();
00064   bool isPlusInf() const;
00065 
00067   bool isShorterThan(const SimpleTimeDuration &) const;
00068 
00069   // Operators
00070   void operator  = (const SimpleTimeDuration &);
00071   void operator += (const SimpleTimeDuration &);
00072   void operator -= (const SimpleTimeDuration &);
00073   void operator *= (const double &);
00074   void operator /= (const double &);
00075 
00076  private:
00077   DurationT durationval;
00078 };
00079 
00080 bool operator < (const SimpleTimeDuration &, const SimpleTimeDuration &);
00081 bool operator > (const SimpleTimeDuration &, const SimpleTimeDuration &);
00082 SimpleTimeDuration operator * (const SimpleTimeDuration &, const double &);
00083 SimpleTimeDuration operator / (const SimpleTimeDuration &, const double &);
00084 double operator / (const SimpleTimeDuration &, const SimpleTimeDuration &);
00085 SimpleTimeDuration operator + (const SimpleTimeDuration &,
00086                                const SimpleTimeDuration &);
00087 SimpleTimeDuration operator - (const SimpleTimeDuration &,
00088                                const SimpleTimeDuration &);
00089 // Streaming __int64 is not supported on NT
00090 #ifndef _WIN32
00091 AIDA_STD::ostream & operator << (AIDA_STD::ostream & out, const SimpleTimeDuration &);
00092 #endif
00093 
00094 #endif

Generated on Tue May 20 14:50:25 2003 for HepUtilities by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002