⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timeconv.inl

📁 java开源的企业总线.xmlBlaster
💻 INL
字号:
// Copyright (C) 2001// William E. Kempf//// Permission to use, copy, modify, distribute and sell this software// and its documentation for any purpose is hereby granted without fee,// provided that the above copyright notice appear in all copies and// that both that copyright notice and this permission notice appear// in supporting documentation.  William E. Kempf makes no representations// about the suitability of this software for any purpose.// It is provided "as is" without express or implied warranty.namespace {    const int MILLISECONDS_PER_SECOND = 1000;    const int NANOSECONDS_PER_SECOND = 1000000000;    const int NANOSECONDS_PER_MILLISECOND = 1000000;    const int MICROSECONDS_PER_SECOND = 1000000;    const int NANOSECONDS_PER_MICROSECOND = 1000;    inline void to_time(int milliseconds, boost::xtime& xt)    {        int res = 0;        res = boost::xtime_get(&xt, boost::TIME_UTC);        assert(res == boost::TIME_UTC);        xt.sec += (milliseconds / MILLISECONDS_PER_SECOND);        xt.nsec += ((milliseconds % MILLISECONDS_PER_SECOND) * NANOSECONDS_PER_MILLISECOND);        if (xt.nsec > static_cast<const int>(NANOSECONDS_PER_SECOND))        {            ++xt.sec;            xt.nsec -= NANOSECONDS_PER_SECOND;        }    }#if defined(BOOST_HAS_PTHREADS)    inline void to_timespec(const boost::xtime& xt, timespec& ts)    {        ts.tv_sec = static_cast<int>(xt.sec);        ts.tv_nsec = static_cast<int>(xt.nsec);        if(ts.tv_nsec > static_cast<const int>(NANOSECONDS_PER_SECOND))        {            ts.tv_sec += ts.tv_nsec / NANOSECONDS_PER_SECOND;            ts.tv_nsec %= NANOSECONDS_PER_SECOND;        }    }    inline void to_time(int milliseconds, timespec& ts)    {        boost::xtime xt;        to_time(milliseconds, xt);        to_timespec(xt, ts);    }    inline void to_timespec_duration(const boost::xtime& xt, timespec& ts)    {        boost::xtime cur;        int res = 0;        res = boost::xtime_get(&cur, boost::TIME_UTC);        assert(res == boost::TIME_UTC);        if (boost::xtime_cmp(xt, cur) <= 0)        {            ts.tv_sec = 0;            ts.tv_nsec = 0;        }        else        {            ts.tv_sec = xt.sec - cur.sec;            ts.tv_nsec = xt.nsec - cur.nsec;            if( ts.tv_nsec < 0 )            {                ts.tv_sec -= 1;                ts.tv_nsec += NANOSECONDS_PER_SECOND;            }           if(ts.tv_nsec > static_cast<const int>(NANOSECONDS_PER_SECOND))           {               ts.tv_sec += ts.tv_nsec / NANOSECONDS_PER_SECOND;               ts.tv_nsec %= NANOSECONDS_PER_SECOND;           }        }    }#endif    inline void to_duration(const boost::xtime& xt, int& milliseconds)    {        boost::xtime cur;        int res = 0;        res = boost::xtime_get(&cur, boost::TIME_UTC);        assert(res == boost::TIME_UTC);        if (boost::xtime_cmp(xt, cur) <= 0)            milliseconds = 0;        else        {/*       [cc] c:\Marcel\xmlBlaster\src\c++\libs\thread\src\timeconv.inl(99) : warning C4244: '=' : conversion from 'boost::int_fast64_t' to 'int', possible loss of data       [cc] c:\Marcel\xmlBlaster\src\c++\libs\thread\src\timeconv.inl(116) : warning C4244: '=' : conversion from 'boost::int_fast64_t' to 'int', possible loss of data*/            milliseconds = static_cast<int>((xt.sec - cur.sec) * MILLISECONDS_PER_SECOND) +                (((xt.nsec - cur.nsec) + (NANOSECONDS_PER_MILLISECOND/2)) /                NANOSECONDS_PER_MILLISECOND);        }    }    inline void to_microduration(const boost::xtime& xt, int& microseconds)    {        boost::xtime cur;        int res = 0;        res = boost::xtime_get(&cur, boost::TIME_UTC);        assert(res == boost::TIME_UTC);        if (boost::xtime_get(&cur, boost::TIME_UTC) <= 0)            microseconds = 0;        else        {            microseconds = static_cast<int>((xt.sec - cur.sec) * MICROSECONDS_PER_SECOND) +                (((xt.nsec - cur.nsec) + (NANOSECONDS_PER_MICROSECOND/2)) /                NANOSECONDS_PER_MICROSECOND);        }    }}// Change Log://    1 Jun 01  Initial creation.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -