mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-19 19:59:09 +00:00
Change all CRLF-text files to LF-text files
to match H'uru for patching
This commit is contained in:
@ -1,243 +1,243 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#ifndef _PL_UNIFIEDTIME_INC_
|
||||
#define _PL_UNIFIEDTIME_INC_
|
||||
|
||||
#include "hsTypes.h"
|
||||
#include "hsStlUtils.h"
|
||||
|
||||
#if HS_BUILD_FOR_WIN32
|
||||
#include "hsWindows.h"
|
||||
#endif
|
||||
|
||||
//
|
||||
// Plasma Unified System Time & Data Class
|
||||
// the time and date are in secs and micros from
|
||||
// Jan 1, 1970 00:00:00
|
||||
//
|
||||
|
||||
struct timeval;
|
||||
class hsStream;
|
||||
|
||||
#ifdef GetCurrentTime
|
||||
#undef GetCurrentTime
|
||||
#endif
|
||||
|
||||
enum plUnifiedTime_CtorNow { kNow };
|
||||
|
||||
|
||||
class plUnifiedTime //
|
||||
{
|
||||
public:
|
||||
enum Mode
|
||||
{
|
||||
kGmt,
|
||||
kLocal
|
||||
};
|
||||
|
||||
protected:
|
||||
time_t fSecs;
|
||||
UInt32 fMicros;
|
||||
Mode fMode;
|
||||
|
||||
static Int32 fLocalTimeZoneOffset;
|
||||
|
||||
struct tm * IGetTime(const time_t * timer) const;
|
||||
|
||||
static Int32 IGetLocalTimeZoneOffset( void );
|
||||
|
||||
public:
|
||||
plUnifiedTime() : fSecs(0),fMicros(0), fMode(kGmt) { } // set ToEpoch() at start
|
||||
plUnifiedTime(double secsDouble) { SetSecsDouble(secsDouble); }
|
||||
plUnifiedTime(plUnifiedTime_CtorNow,int mode=kLocal);
|
||||
plUnifiedTime(const timeval & tv);
|
||||
plUnifiedTime(int mode, const struct tm & src);
|
||||
plUnifiedTime(time_t t);
|
||||
plUnifiedTime(unsigned long t);
|
||||
plUnifiedTime(int year, int month, int day, int hour, int min, int sec, unsigned long usec=0, int dst=-1);
|
||||
plUnifiedTime(int mode, const char * buf, const char * fmt);
|
||||
plUnifiedTime(const plUnifiedTime & src);
|
||||
plUnifiedTime(const plUnifiedTime * src);
|
||||
static plUnifiedTime GetCurrentTime(Mode mode=kGmt);
|
||||
|
||||
// assignment
|
||||
const plUnifiedTime & operator=(const plUnifiedTime & src);
|
||||
const plUnifiedTime & operator=(const plUnifiedTime * src);
|
||||
const plUnifiedTime & operator=(const struct timeval & src);
|
||||
const plUnifiedTime & operator=(time_t src);
|
||||
const plUnifiedTime & operator=(unsigned long t);
|
||||
const plUnifiedTime & operator=(const struct tm & src);
|
||||
|
||||
// getters
|
||||
time_t GetSecs() const { return fSecs; }
|
||||
UInt32 GetMicros() const { return fMicros; }
|
||||
double GetSecsDouble() const; // get the secs and micros as a double floating point value
|
||||
hsBool GetTime(short &year, short &month, short &day, short &hour, short &minute, short &second) const;
|
||||
struct tm * GetTm(struct tm * ptm=nil) const;
|
||||
int GetYear() const;
|
||||
int GetMonth() const;
|
||||
int GetDay() const;
|
||||
int GetHour() const;
|
||||
int GetMinute() const;
|
||||
int GetSecond() const;
|
||||
int GetMillis() const;
|
||||
int GetDayOfWeek() const;
|
||||
int GetMode() const {return fMode;} // local or gmt.
|
||||
|
||||
// setters
|
||||
void SetSecs(const time_t secs) { fSecs = secs; }
|
||||
void SetSecsDouble(double secs);
|
||||
void SetMicros(const UInt32 micros) { fMicros = micros; }
|
||||
hsBool SetTime(short year, short month, short day, short hour, short minute, short second, unsigned long usec=0, int dst=-1);
|
||||
hsBool SetGMTime(short year, short month, short day, short hour, short minute, short second, unsigned long usec=0);
|
||||
hsBool SetToUTC();
|
||||
void ToCurrentTime();
|
||||
void ToEpoch() { fSecs = 0; fMicros = 0;}
|
||||
void SetMode(Mode mode) { fMode=mode;}
|
||||
#if HS_BUILD_FOR_WIN32
|
||||
hsBool SetFromWinFileTime(const FILETIME ft);
|
||||
#endif
|
||||
|
||||
// query
|
||||
bool AtEpoch() const { return fSecs == 0 && fMicros == 0;}
|
||||
|
||||
void Read(hsStream* s);
|
||||
void Write(hsStream* s) const;
|
||||
|
||||
// time math
|
||||
const plUnifiedTime & operator+=(const plUnifiedTime & rhs);
|
||||
const plUnifiedTime & operator-=(const plUnifiedTime & rhs);
|
||||
friend plUnifiedTime operator -(const plUnifiedTime & left, const plUnifiedTime & right);
|
||||
friend plUnifiedTime operator +(const plUnifiedTime & left, const plUnifiedTime & right);
|
||||
static double GetTimeDifference(const plUnifiedTime& timeA, const plUnifiedTime& timeB); // handles negative
|
||||
|
||||
// time compare
|
||||
bool operator==(const plUnifiedTime & rhs) const;
|
||||
bool operator!=(const plUnifiedTime & rhs) const;
|
||||
bool operator <(const plUnifiedTime & rhs) const;
|
||||
bool operator >(const plUnifiedTime & rhs) const;
|
||||
bool operator<=(const plUnifiedTime & rhs) const;
|
||||
bool operator>=(const plUnifiedTime & rhs) const;
|
||||
|
||||
friend bool operator <(const plUnifiedTime & time, int secs);
|
||||
|
||||
|
||||
// casting
|
||||
operator time_t() const { return fSecs;}
|
||||
operator timeval() const;
|
||||
operator struct tm() const;
|
||||
|
||||
// formatting (ala strftime)
|
||||
std::string Format(const char * fmt) const;
|
||||
|
||||
// parsing
|
||||
bool FromString(const char * buf, const char * fmt);
|
||||
|
||||
const char* Print() const; // print as simple string
|
||||
const char* PrintWMillis() const; // print as simple string w/ millis
|
||||
/*
|
||||
FromString: (from glibc's strptime() man page)
|
||||
Converts the character string pointed to by buf to values which are
|
||||
stored in the ``tm'' structure pointed to by tm, using the format
|
||||
specified by format.
|
||||
|
||||
The following conversion specifications are supported:
|
||||
|
||||
%% A `%' is written. No argument is converted.
|
||||
%a the day of week, using the locale's weekday names; either the ab-
|
||||
breviated or full name may be specified.
|
||||
%A the same as %a.
|
||||
%b the month, using the locale's month names; either the abbreviated
|
||||
or full name may be specified.
|
||||
%B the same as %b.
|
||||
%c the date and time, using the locale's date and time format.
|
||||
%C the century number [0,99]; leading zeros are permitted but not re-
|
||||
quired. This conversion should be used in conjunction with the %y
|
||||
conversion.
|
||||
%d the day of month [1,31]; leading zeros are permitted but not re-
|
||||
quired.
|
||||
%D the date as %m/%d/%y.
|
||||
%e the same as %d.
|
||||
%h the same as %b.
|
||||
%H the hour (24-hour clock) [0,23]; leading zeros are permitted but
|
||||
not required.
|
||||
%I the hour (12-hour clock) [1,12]; leading zeros are permitted but
|
||||
not required.
|
||||
%j the day number of the year [1,366]; leading zeros are permitted but
|
||||
not required.
|
||||
%k the same as %H.
|
||||
%l the same as %I.
|
||||
%m the month number [1,12]; leading zeros are permitted but not re-
|
||||
quired.
|
||||
%M the minute [0,59]; leading zeros are permitted but not required.
|
||||
%n any white-space, including none.
|
||||
%p the locale's equivalent of a.m. or p.m..
|
||||
%r the time (12-hour clock) with %p, using the locale's time format.
|
||||
%R the time as %H:%M.
|
||||
%S the seconds [0,61]; leading zeros are permitted but not required.
|
||||
%t any white-space, including none.
|
||||
%T the time as %H:%M:%S.
|
||||
%U the week number of the year (Sunday as the first day of the week)
|
||||
as a decimal number [0,53]; leading zeros are permitted but not re-
|
||||
quired. All days in a year preceding the first Sunday are consid-
|
||||
ered to be in week 0.
|
||||
%w the weekday as a decimal number [0,6], with 0 representing Sunday;
|
||||
leading zeros are permitted but not required.
|
||||
%W the week number of the year (Monday as the first day of the week)
|
||||
as a decimal number [0,53]; leading zeros are permitted but not re-
|
||||
quired. All days in a year preceding the first Monday are consid-
|
||||
ered to be in week 0.
|
||||
%x the date, using the locale's date format.
|
||||
%X the time, using the locale's time format.
|
||||
%y the year within the 20th century [69,99] or the 21st century
|
||||
[0,68]; leading zeros are permitted but not required. If specified
|
||||
in conjunction with %C, specifies the year [0,99] within that cen-
|
||||
tury.
|
||||
%Y the year, including the century (i.e., 1996).
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
plUnifiedTime operator -(const plUnifiedTime & left, const plUnifiedTime & right);
|
||||
plUnifiedTime operator +(const plUnifiedTime & left, const plUnifiedTime & right);
|
||||
|
||||
#endif //_PL_UNIFIEDTIME_INC_
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
#ifndef _PL_UNIFIEDTIME_INC_
|
||||
#define _PL_UNIFIEDTIME_INC_
|
||||
|
||||
#include "hsTypes.h"
|
||||
#include "hsStlUtils.h"
|
||||
|
||||
#if HS_BUILD_FOR_WIN32
|
||||
#include "hsWindows.h"
|
||||
#endif
|
||||
|
||||
//
|
||||
// Plasma Unified System Time & Data Class
|
||||
// the time and date are in secs and micros from
|
||||
// Jan 1, 1970 00:00:00
|
||||
//
|
||||
|
||||
struct timeval;
|
||||
class hsStream;
|
||||
|
||||
#ifdef GetCurrentTime
|
||||
#undef GetCurrentTime
|
||||
#endif
|
||||
|
||||
enum plUnifiedTime_CtorNow { kNow };
|
||||
|
||||
|
||||
class plUnifiedTime //
|
||||
{
|
||||
public:
|
||||
enum Mode
|
||||
{
|
||||
kGmt,
|
||||
kLocal
|
||||
};
|
||||
|
||||
protected:
|
||||
time_t fSecs;
|
||||
UInt32 fMicros;
|
||||
Mode fMode;
|
||||
|
||||
static Int32 fLocalTimeZoneOffset;
|
||||
|
||||
struct tm * IGetTime(const time_t * timer) const;
|
||||
|
||||
static Int32 IGetLocalTimeZoneOffset( void );
|
||||
|
||||
public:
|
||||
plUnifiedTime() : fSecs(0),fMicros(0), fMode(kGmt) { } // set ToEpoch() at start
|
||||
plUnifiedTime(double secsDouble) { SetSecsDouble(secsDouble); }
|
||||
plUnifiedTime(plUnifiedTime_CtorNow,int mode=kLocal);
|
||||
plUnifiedTime(const timeval & tv);
|
||||
plUnifiedTime(int mode, const struct tm & src);
|
||||
plUnifiedTime(time_t t);
|
||||
plUnifiedTime(unsigned long t);
|
||||
plUnifiedTime(int year, int month, int day, int hour, int min, int sec, unsigned long usec=0, int dst=-1);
|
||||
plUnifiedTime(int mode, const char * buf, const char * fmt);
|
||||
plUnifiedTime(const plUnifiedTime & src);
|
||||
plUnifiedTime(const plUnifiedTime * src);
|
||||
static plUnifiedTime GetCurrentTime(Mode mode=kGmt);
|
||||
|
||||
// assignment
|
||||
const plUnifiedTime & operator=(const plUnifiedTime & src);
|
||||
const plUnifiedTime & operator=(const plUnifiedTime * src);
|
||||
const plUnifiedTime & operator=(const struct timeval & src);
|
||||
const plUnifiedTime & operator=(time_t src);
|
||||
const plUnifiedTime & operator=(unsigned long t);
|
||||
const plUnifiedTime & operator=(const struct tm & src);
|
||||
|
||||
// getters
|
||||
time_t GetSecs() const { return fSecs; }
|
||||
UInt32 GetMicros() const { return fMicros; }
|
||||
double GetSecsDouble() const; // get the secs and micros as a double floating point value
|
||||
hsBool GetTime(short &year, short &month, short &day, short &hour, short &minute, short &second) const;
|
||||
struct tm * GetTm(struct tm * ptm=nil) const;
|
||||
int GetYear() const;
|
||||
int GetMonth() const;
|
||||
int GetDay() const;
|
||||
int GetHour() const;
|
||||
int GetMinute() const;
|
||||
int GetSecond() const;
|
||||
int GetMillis() const;
|
||||
int GetDayOfWeek() const;
|
||||
int GetMode() const {return fMode;} // local or gmt.
|
||||
|
||||
// setters
|
||||
void SetSecs(const time_t secs) { fSecs = secs; }
|
||||
void SetSecsDouble(double secs);
|
||||
void SetMicros(const UInt32 micros) { fMicros = micros; }
|
||||
hsBool SetTime(short year, short month, short day, short hour, short minute, short second, unsigned long usec=0, int dst=-1);
|
||||
hsBool SetGMTime(short year, short month, short day, short hour, short minute, short second, unsigned long usec=0);
|
||||
hsBool SetToUTC();
|
||||
void ToCurrentTime();
|
||||
void ToEpoch() { fSecs = 0; fMicros = 0;}
|
||||
void SetMode(Mode mode) { fMode=mode;}
|
||||
#if HS_BUILD_FOR_WIN32
|
||||
hsBool SetFromWinFileTime(const FILETIME ft);
|
||||
#endif
|
||||
|
||||
// query
|
||||
bool AtEpoch() const { return fSecs == 0 && fMicros == 0;}
|
||||
|
||||
void Read(hsStream* s);
|
||||
void Write(hsStream* s) const;
|
||||
|
||||
// time math
|
||||
const plUnifiedTime & operator+=(const plUnifiedTime & rhs);
|
||||
const plUnifiedTime & operator-=(const plUnifiedTime & rhs);
|
||||
friend plUnifiedTime operator -(const plUnifiedTime & left, const plUnifiedTime & right);
|
||||
friend plUnifiedTime operator +(const plUnifiedTime & left, const plUnifiedTime & right);
|
||||
static double GetTimeDifference(const plUnifiedTime& timeA, const plUnifiedTime& timeB); // handles negative
|
||||
|
||||
// time compare
|
||||
bool operator==(const plUnifiedTime & rhs) const;
|
||||
bool operator!=(const plUnifiedTime & rhs) const;
|
||||
bool operator <(const plUnifiedTime & rhs) const;
|
||||
bool operator >(const plUnifiedTime & rhs) const;
|
||||
bool operator<=(const plUnifiedTime & rhs) const;
|
||||
bool operator>=(const plUnifiedTime & rhs) const;
|
||||
|
||||
friend bool operator <(const plUnifiedTime & time, int secs);
|
||||
|
||||
|
||||
// casting
|
||||
operator time_t() const { return fSecs;}
|
||||
operator timeval() const;
|
||||
operator struct tm() const;
|
||||
|
||||
// formatting (ala strftime)
|
||||
std::string Format(const char * fmt) const;
|
||||
|
||||
// parsing
|
||||
bool FromString(const char * buf, const char * fmt);
|
||||
|
||||
const char* Print() const; // print as simple string
|
||||
const char* PrintWMillis() const; // print as simple string w/ millis
|
||||
/*
|
||||
FromString: (from glibc's strptime() man page)
|
||||
Converts the character string pointed to by buf to values which are
|
||||
stored in the ``tm'' structure pointed to by tm, using the format
|
||||
specified by format.
|
||||
|
||||
The following conversion specifications are supported:
|
||||
|
||||
%% A `%' is written. No argument is converted.
|
||||
%a the day of week, using the locale's weekday names; either the ab-
|
||||
breviated or full name may be specified.
|
||||
%A the same as %a.
|
||||
%b the month, using the locale's month names; either the abbreviated
|
||||
or full name may be specified.
|
||||
%B the same as %b.
|
||||
%c the date and time, using the locale's date and time format.
|
||||
%C the century number [0,99]; leading zeros are permitted but not re-
|
||||
quired. This conversion should be used in conjunction with the %y
|
||||
conversion.
|
||||
%d the day of month [1,31]; leading zeros are permitted but not re-
|
||||
quired.
|
||||
%D the date as %m/%d/%y.
|
||||
%e the same as %d.
|
||||
%h the same as %b.
|
||||
%H the hour (24-hour clock) [0,23]; leading zeros are permitted but
|
||||
not required.
|
||||
%I the hour (12-hour clock) [1,12]; leading zeros are permitted but
|
||||
not required.
|
||||
%j the day number of the year [1,366]; leading zeros are permitted but
|
||||
not required.
|
||||
%k the same as %H.
|
||||
%l the same as %I.
|
||||
%m the month number [1,12]; leading zeros are permitted but not re-
|
||||
quired.
|
||||
%M the minute [0,59]; leading zeros are permitted but not required.
|
||||
%n any white-space, including none.
|
||||
%p the locale's equivalent of a.m. or p.m..
|
||||
%r the time (12-hour clock) with %p, using the locale's time format.
|
||||
%R the time as %H:%M.
|
||||
%S the seconds [0,61]; leading zeros are permitted but not required.
|
||||
%t any white-space, including none.
|
||||
%T the time as %H:%M:%S.
|
||||
%U the week number of the year (Sunday as the first day of the week)
|
||||
as a decimal number [0,53]; leading zeros are permitted but not re-
|
||||
quired. All days in a year preceding the first Sunday are consid-
|
||||
ered to be in week 0.
|
||||
%w the weekday as a decimal number [0,6], with 0 representing Sunday;
|
||||
leading zeros are permitted but not required.
|
||||
%W the week number of the year (Monday as the first day of the week)
|
||||
as a decimal number [0,53]; leading zeros are permitted but not re-
|
||||
quired. All days in a year preceding the first Monday are consid-
|
||||
ered to be in week 0.
|
||||
%x the date, using the locale's date format.
|
||||
%X the time, using the locale's time format.
|
||||
%y the year within the 20th century [69,99] or the 21st century
|
||||
[0,68]; leading zeros are permitted but not required. If specified
|
||||
in conjunction with %C, specifies the year [0,99] within that cen-
|
||||
tury.
|
||||
%Y the year, including the century (i.e., 1996).
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
plUnifiedTime operator -(const plUnifiedTime & left, const plUnifiedTime & right);
|
||||
plUnifiedTime operator +(const plUnifiedTime & left, const plUnifiedTime & right);
|
||||
|
||||
#endif //_PL_UNIFIEDTIME_INC_
|
||||
|
Reference in New Issue
Block a user