00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef TOOL_MICROSECONDS_STAMP_HH_
00023 # define TOOL_MICROSECONDS_STAMP_HH_
00024
00025 # include <wipal/tool/microseconds.hh>
00026 # include <wipal/tool/hash.hh>
00027
00028 namespace tool
00029 {
00030
00043 template <class T>
00044 struct microseconds_stamp: public T
00045 {
00047 microseconds_stamp(const tool::microseconds&, const T& = T ());
00048
00053 template <class U>
00054 microseconds_stamp(const microseconds_stamp<U>&);
00055
00057
00058 const tool::microseconds& microseconds() const;
00059 tool::microseconds& microseconds();
00061
00069 bool operator == (const microseconds_stamp& rhs) const;
00070 bool operator != (const microseconds_stamp& rhs) const;
00072
00073 private:
00074 tool::microseconds microseconds_;
00075 };
00076
00077 }
00078
00079 WP_HASH_NAMESPACE_BEGIN
00080
00081 template <class T>
00082 struct hash< tool::microseconds_stamp<T> >: public hash<T>
00083 {
00084 size_t operator() (const tool::microseconds_stamp<T>& s) const;
00085 };
00086
00087 WP_HASH_NAMESPACE_END
00088
00089 # include "microseconds_stamp.hxx"
00090
00091 #endif // TOOL_MICROSECONDS_STAMP_HH_