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 wpl
00029 {
00030
00031 namespace tool
00032 {
00033
00046 template <class T>
00047 struct microseconds_stamp: public T
00048 {
00049 typedef T original_type;
00050
00052 microseconds_stamp(const tool::microseconds&, const T& = T ());
00053
00058 template <class U>
00059 microseconds_stamp(const microseconds_stamp<U>&);
00060
00062
00063 const tool::microseconds& microseconds() const;
00064 tool::microseconds& microseconds();
00066
00074 bool operator == (const microseconds_stamp& rhs) const;
00075 bool operator != (const microseconds_stamp& rhs) const;
00077
00078 private:
00079 tool::microseconds microseconds_;
00080 };
00081
00082 }
00083
00084 }
00085
00086 WP_HASH_NAMESPACE_BEGIN
00087
00088 template <class T>
00089 struct hash< wpl::tool::microseconds_stamp<T> >: public hash<T>
00090 {
00091 size_t operator() (const wpl::tool::microseconds_stamp<T>& s) const;
00092 };
00093
00094 WP_HASH_NAMESPACE_END
00095
00096 # include "microseconds_stamp.hxx"
00097
00098 #endif // TOOL_MICROSECONDS_STAMP_HH_