Ruby  2.0.0p247(2013-06-27revision41674)
Data Structures | Macros | Typedefs | Functions | Variables
time.c File Reference
#include "ruby/ruby.h"
#include <sys/types.h>
#include <time.h>
#include <errno.h>
#include "ruby/encoding.h"
#include "internal.h"
#include <float.h>
#include <math.h>
#include "timev.h"

Go to the source code of this file.

Data Structures

struct  time_object
 

Macros

#define NDIV(x, y)   (-(-((x)+1)/(y))-1)
 
#define NMOD(x, y)   ((y)-(-((x)+1)%(y))-1)
 
#define DIV(n, d)   ((n)<0 ? NDIV((n),(d)) : (n)/(d))
 
#define MOD(n, d)   ((n)<0 ? NMOD((n),(d)) : (n)%(d))
 
#define ne(x, y)   (!eq((x),(y)))
 
#define lt(x, y)   (cmp((x),(y)) < 0)
 
#define gt(x, y)   (cmp((x),(y)) > 0)
 
#define le(x, y)   (cmp((x),(y)) <= 0)
 
#define ge(x, y)   (cmp((x),(y)) >= 0)
 
#define div(x, y)   (rb_funcall((x), id_div, 1, (y)))
 
#define neg(x)   (sub(INT2FIX(0), (x)))
 
#define lshift(x, y)   (rb_funcall((x), id_lshift, 1, (y)))
 
#define mulquo(x, y, z)   (((y) == (z)) ? (x) : quo(mul((x),(y)),(z)))
 
#define WIDEVALUE_IS_WIDER   0
 
#define UWIDEINT_MAX   ULONG_MAX
 
#define WIDEINT_MAX   LONG_MAX
 
#define WIDEINT_MIN   LONG_MIN
 
#define FIXWINT_P(v)   FIXNUM_P(v)
 
#define FIXWV_MAX   FIXNUM_MAX
 
#define FIXWV_MIN   FIXNUM_MIN
 
#define FIXWVABLE(i)   FIXABLE(i)
 
#define WINT2FIXWV(i)   WIDEVAL_WRAP(LONG2FIX(i))
 
#define FIXWV2WINT(w)   FIX2LONG(WIDEVAL_GET(w))
 
#define POSFIXWVABLE(wi)   ((wi) < FIXWV_MAX+1)
 
#define NEGFIXWVABLE(wi)   ((wi) >= FIXWV_MIN)
 
#define FIXWV_P(w)   FIXWINT_P(WIDEVAL_GET(w))
 
#define WIDEVAL_WRAP(v)   (v)
 
#define WIDEVAL_GET(w)   (w)
 
#define WINT2WV(wi)   WIDEVAL_WRAP(LONG2NUM(wi))
 
#define wne(x, y)   (!weq((x),(y)))
 
#define wlt(x, y)   (wcmp((x),(y)) < 0)
 
#define wgt(x, y)   (wcmp((x),(y)) > 0)
 
#define wle(x, y)   (wcmp((x),(y)) <= 0)
 
#define wge(x, y)   (wcmp((x),(y)) >= 0)
 
#define wmulquo(x, y, z)   ((WIDEVAL_GET(y) == WIDEVAL_GET(z)) ? (x) : wquo(wmul((x),(y)),(z)))
 
#define wmulquoll(x, y, z)   (((y) == (z)) ? (x) : wquo(wmul((x),WINT2WV(y)),WINT2WV(z)))
 
#define TYPEOF_TIMEVAL_TV_SEC   time_t
 
#define TYPEOF_TIMEVAL_TV_USEC   long
 
#define TIMET_MAX   (~(time_t)0 <= 0 ? (time_t)((~(unsigned_time_t)0) >> 1) : (time_t)(~(unsigned_time_t)0))
 
#define TIMET_MIN   (~(time_t)0 <= 0 ? (time_t)(((unsigned_time_t)1) << (sizeof(time_t) * CHAR_BIT - 1)) : (time_t)0)
 
#define TIMET2WV(t)   timet2wv(t)
 
#define WV2TIMET(t)   wv2timet(t)
 
#define leap_year_v_p(y)   leap_year_p(NUM2LONG(mod((y), INT2FIX(400))))
 
#define LOCALTIME(tm, result)   (tzset(),rb_localtime_r2((tm), &(result)))
 
#define GMTIME(tm, result)   rb_gmtime_r2((tm), &(result))
 
#define GetTimeval(obj, tobj)   ((tobj) = get_timeval(obj))
 
#define GetNewTimeval(obj, tobj)   ((tobj) = get_new_timeval(obj))
 
#define IsTimeval(obj)   rb_typeddata_is_kind_of((obj), &time_data_type)
 
#define TIME_INIT_P(tobj)   ((tobj)->gmt != -1)
 
#define TIME_UTC_P(tobj)   ((tobj)->gmt == 1)
 
#define TIME_SET_UTC(tobj)   ((tobj)->gmt = 1)
 
#define TIME_LOCALTIME_P(tobj)   ((tobj)->gmt == 0)
 
#define TIME_SET_LOCALTIME(tobj)   ((tobj)->gmt = 0)
 
#define TIME_FIXOFF_P(tobj)   ((tobj)->gmt == 2)
 
#define TIME_SET_FIXOFF(tobj, off)
 
#define TIME_COPY_GMT(tobj1, tobj2)
 
#define MAKE_TM(time, tobj)
 
#define DEBUG_REPORT_GUESSRANGE
 
#define DEBUG_FIND_TIME_NUMGUESS_INC
 
#define GUESS(p)   (DEBUG_FIND_TIME_NUMGUESS_INC (utc_p ? gmtime_with_leapsecond((p), &result) : LOCALTIME((p), result)))
 
#define time_succ   rb_time_succ
 
#define wday_p(n)
 
#define SMALLBUF   100
 
#define get_attr(attr, iffound)
 
#define rb_intern(str)   rb_intern_const(str)
 

Typedefs

typedef unsigned long uwideint_t
 
typedef long wideint_t
 
typedef VALUE WIDEVALUE
 
typedef SIGNED_VALUE SIGNED_WIDEVALUE
 
typedef WIDEVALUE wideval_t
 
typedef unsigned long unsigned_time_t
 

Functions

static int eq (VALUE x, VALUE y)
 
static int cmp (VALUE x, VALUE y)
 
static VALUE add (VALUE x, VALUE y)
 
static VALUE sub (VALUE x, VALUE y)
 
static int long_mul (long x, long y, long *z)
 
static VALUE mul (VALUE x, VALUE y)
 
static VALUE mod (VALUE x, VALUE y)
 
static VALUE quo (VALUE x, VALUE y)
 
static void divmodv (VALUE n, VALUE d, VALUE *q, VALUE *r)
 
static VALUE w2v (wideval_t w)
 
static wideval_t v2w (VALUE v)
 
static int weq (wideval_t wx, wideval_t wy)
 
static int wcmp (wideval_t wx, wideval_t wy)
 
static wideval_t wadd (wideval_t wx, wideval_t wy)
 
static wideval_t wsub (wideval_t wx, wideval_t wy)
 
static int wi_mul (wideint_t x, wideint_t y, wideint_t *z)
 
static wideval_t wmul (wideval_t wx, wideval_t wy)
 
static wideval_t wquo (wideval_t wx, wideval_t wy)
 
static void wdivmod (wideval_t wn, wideval_t wd, wideval_t *wq, wideval_t *wr)
 
static void wmuldivmod (wideval_t wx, wideval_t wy, wideval_t wz, wideval_t *wq, wideval_t *wr)
 
static wideval_t wdiv (wideval_t wx, wideval_t wy)
 
static wideval_t wmod (wideval_t wx, wideval_t wy)
 
static VALUE num_exact (VALUE v)
 
static wideval_t rb_time_magnify (wideval_t w)
 
static wideval_t rb_time_unmagnify (wideval_t w)
 
static VALUE rb_time_unmagnify_to_float (wideval_t w)
 
static void split_second (wideval_t timew, wideval_t *timew_p, VALUE *subsecx_p)
 
static wideval_t timet2wv (time_t t)
 
static time_t wv2timet (wideval_t w)
 
static VALUE time_utc_offset _ ((VALUE))
 
static int obj2int (VALUE obj)
 
static VALUE obj2vint (VALUE obj)
 
static int month_arg (VALUE arg)
 
static void validate_utc_offset (VALUE utc_offset)
 
static void validate_vtm (struct vtm *vtm)
 
static int obj2subsecx (VALUE obj, VALUE *subsecx)
 
static VALUE time_gmtime (VALUE)
 
static VALUE time_localtime (VALUE)
 
static VALUE time_fixoff (VALUE)
 
static time_t timegm_noleapsecond (struct tm *tm)
 
static int tmcmp (struct tm *a, struct tm *b)
 
static int vtmcmp (struct vtm *a, struct vtm *b)
 
static const char * find_time_t (struct tm *tptr, int utc_p, time_t *tp)
 
static struct vtmlocaltimew (wideval_t timew, struct vtm *result)
 
static int leap_year_p (long y)
 
static struct tm * rb_gmtime_r (const time_t *tp, struct tm *result)
 
static struct tm * rb_localtime_r (const time_t *tp, struct tm *result)
 
static struct tm * rb_localtime_r2 (const time_t *t, struct tm *result)
 
static struct tm * rb_gmtime_r2 (const time_t *t, struct tm *result)
 
static int calc_tm_yday (long tm_year, int tm_mon, int tm_mday)
 
static wideval_t timegmw_noleapsecond (struct vtm *vtm)
 
static int zone_str_update (st_data_t *key, st_data_t *value, st_data_t arg, int existing)
 
static const char * zone_str (const char *s)
 
static void gmtimew_noleapsecond (wideval_t timew, struct vtm *vtm)
 
static struct tm * gmtime_with_leapsecond (const time_t *timep, struct tm *result)
 
static void init_leap_second_info (void)
 
static wideval_t timegmw (struct vtm *vtm)
 
static struct vtmgmtimew (wideval_t timew, struct vtm *result)
 
static struct tm * localtime_with_gmtoff_zone (const time_t *t, struct tm *result, long *gmtoff, const char **zone)
 
static int calc_wday (int year, int month, int day)
 
static VALUE guess_local_offset (struct vtm *vtm_utc, int *isdst_ret, const char **zone_ret)
 
static VALUE small_vtm_sub (struct vtm *vtm1, struct vtm *vtm2)
 
static wideval_t timelocalw (struct vtm *vtm)
 
static int timew_out_of_timet_range (wideval_t timew)
 
static VALUE time_get_tm (VALUE, struct time_object *)
 
static void time_mark (void *ptr)
 
static void time_free (void *tobj)
 
static size_t time_memsize (const void *tobj)
 
static VALUE time_s_alloc (VALUE klass)
 
static struct time_objectget_timeval (VALUE obj)
 
static struct time_objectget_new_timeval (VALUE obj)
 
static void time_modify (VALUE time)
 
static wideval_t timespec2timew (struct timespec *ts)
 
static struct timespec timew2timespec (wideval_t timew)
 
static struct timespectimew2timespec_exact (wideval_t timew, struct timespec *ts)
 
static VALUE time_init_0 (VALUE time)
 
static VALUE time_set_utc_offset (VALUE time, VALUE off)
 
static void vtm_add_offset (struct vtm *vtm, VALUE off)
 
static VALUE utc_offset_arg (VALUE arg)
 
static VALUE time_init_1 (int argc, VALUE *argv, VALUE time)
 
static VALUE time_init (int argc, VALUE *argv, VALUE time)
 
static void time_overflow_p (time_t *secp, long *nsecp)
 
static wideval_t nsec2timew (time_t sec, long nsec)
 
static VALUE time_new_timew (VALUE klass, wideval_t timew)
 
VALUE rb_time_new (time_t sec, long usec)
 
VALUE rb_time_nano_new (time_t sec, long nsec)
 
VALUE rb_time_num_new (VALUE timev, VALUE off)
 
static struct timespec time_timespec (VALUE num, int interval)
 
static struct timeval time_timeval (VALUE num, int interval)
 
struct timeval rb_time_interval (VALUE num)
 
struct timeval rb_time_timeval (VALUE time)
 
struct timespec rb_time_timespec (VALUE time)
 
static VALUE time_s_now (VALUE klass)
 
static VALUE time_s_at (int argc, VALUE *argv, VALUE klass)
 
static long usec2subsecx (VALUE obj)
 
static void time_arg (int argc, VALUE *argv, struct vtm *vtm)
 
static VALUE time_utc_or_local (int argc, VALUE *argv, int utc_p, VALUE klass)
 
static VALUE time_s_mkutc (int argc, VALUE *argv, VALUE klass)
 
static VALUE time_s_mktime (int argc, VALUE *argv, VALUE klass)
 
static VALUE time_to_i (VALUE time)
 
static VALUE time_to_f (VALUE time)
 
static VALUE time_to_r (VALUE time)
 
static VALUE time_usec (VALUE time)
 
static VALUE time_nsec (VALUE time)
 
static VALUE time_subsec (VALUE time)
 
static VALUE time_cmp (VALUE time1, VALUE time2)
 
static VALUE time_eql (VALUE time1, VALUE time2)
 
static VALUE time_utc_p (VALUE time)
 
static VALUE time_hash (VALUE time)
 
static VALUE time_init_copy (VALUE copy, VALUE time)
 
static VALUE time_dup (VALUE time)
 
static VALUE time_localtime_m (int argc, VALUE *argv, VALUE time)
 
static VALUE time_getlocaltime (int argc, VALUE *argv, VALUE time)
 
static VALUE time_getgmtime (VALUE time)
 
static VALUE strftimev (const char *fmt, VALUE time, rb_encoding *enc)
 
static VALUE time_asctime (VALUE time)
 
static VALUE time_to_s (VALUE time)
 
static VALUE time_add (struct time_object *tobj, VALUE offset, int sign)
 
static VALUE time_plus (VALUE time1, VALUE time2)
 
static VALUE time_minus (VALUE time1, VALUE time2)
 
VALUE rb_time_succ (VALUE time)
 
static VALUE time_round (int argc, VALUE *argv, VALUE time)
 
static VALUE time_sec (VALUE time)
 
static VALUE time_min (VALUE time)
 
static VALUE time_hour (VALUE time)
 
static VALUE time_mday (VALUE time)
 
static VALUE time_mon (VALUE time)
 
static VALUE time_year (VALUE time)
 
static VALUE time_wday (VALUE time)
 
static VALUE time_sunday (VALUE time)
 
static VALUE time_monday (VALUE time)
 
static VALUE time_tuesday (VALUE time)
 
static VALUE time_wednesday (VALUE time)
 
static VALUE time_thursday (VALUE time)
 
static VALUE time_friday (VALUE time)
 
static VALUE time_saturday (VALUE time)
 
static VALUE time_yday (VALUE time)
 
static VALUE time_isdst (VALUE time)
 
static VALUE time_zone (VALUE time)
 
static VALUE time_utc_offset (VALUE time)
 
static VALUE time_to_a (VALUE time)
 
static size_t rb_strftime_alloc (char **buf, VALUE formatv, const char *format, rb_encoding *enc, struct vtm *vtm, wideval_t timew, int gmt)
 
static VALUE time_strftime (VALUE time, VALUE format)
 
static VALUE time_mdump (VALUE time)
 
static VALUE time_dump (int argc, VALUE *argv, VALUE time)
 
static VALUE time_mload (VALUE time, VALUE str)
 
static VALUE time_load (VALUE klass, VALUE str)
 
void Init_Time (void)
 

Variables

static ID id_divmod
 
static ID id_mul
 
static ID id_submicro
 
static ID id_nano_num
 
static ID id_nano_den
 
static ID id_offset
 
static ID id_zone
 
static ID id_eq
 
static ID id_ne
 
static ID id_quo
 
static ID id_div
 
static ID id_cmp
 
static ID id_lshift
 
VALUE rb_cTime
 
static const int common_year_yday_offset []
 
static const int leap_year_yday_offset []
 
static const int common_year_days_in_month []
 
static const int leap_year_days_in_month []
 
static st_tablezone_table
 
static long this_year = 0
 
static time_t known_leap_seconds_limit
 
static int number_of_leap_seconds_known
 
static int compat_common_month_table [12][7]
 
static int compat_leap_month_table [7]
 
static const rb_data_type_t time_data_type
 
static const char months [][4]
 

Macro Definition Documentation

#define DEBUG_FIND_TIME_NUMGUESS_INC

Definition at line 2814 of file time.c.

#define DEBUG_REPORT_GUESSRANGE

Definition at line 2802 of file time.c.

Referenced by find_time_t().

#define DIV (   n,
  d 
)    ((n)<0 ? NDIV((n),(d)) : (n)/(d))

Definition at line 41 of file time.c.

Referenced by timegm_noleapsecond(), and timegmw_noleapsecond().

#define div (   x,
 
)    (rb_funcall((x), id_div, 1, (y)))

Definition at line 160 of file time.c.

#define FIXWINT_P (   v)    FIXNUM_P(v)

Definition at line 246 of file time.c.

#define FIXWV2WINT (   w)    FIX2LONG(WIDEVAL_GET(w))
#define FIXWV_MAX   FIXNUM_MAX

Definition at line 247 of file time.c.

Referenced by timet2wv().

#define FIXWV_MIN   FIXNUM_MIN

Definition at line 248 of file time.c.

Referenced by timet2wv().

#define FIXWV_P (   w)    FIXWINT_P(WIDEVAL_GET(w))
#define FIXWVABLE (   i)    FIXABLE(i)

Definition at line 249 of file time.c.

#define ge (   x,
 
)    (cmp((x),(y)) >= 0)

Definition at line 70 of file time.c.

Referenced by iseq_specialized_instruction(), validate_utc_offset(), and validate_vtm().

#define get_attr (   attr,
  iffound 
)
Value:
attr = rb_attr_get(str, id_##attr); \
if (!NIL_P(attr)) { \
data = id_##attr; \
iffound; \
}
VALUE data
Definition: tcltklib.c:3368
NIL_P(eventloop_thread)
Definition: tcltklib.c:4068
int st_delete(st_table *, st_data_t *, st_data_t *)
static VALUE char * str
Definition: tcltklib.c:3547
VALUE rb_attr_get(VALUE, ID)
Definition: variable.c:1117
struct st_table * rb_generic_ivar_table(VALUE)
Definition: variable.c:899
if(RB_TYPE_P(r, T_FLOAT))
Definition: bigdecimal.c:1186

Referenced by time_mload().

#define GetNewTimeval (   obj,
  tobj 
)    ((tobj) = get_new_timeval(obj))

Definition at line 1833 of file time.c.

Referenced by time_init_0(), time_init_1(), time_init_copy(), and time_mload().

#define GetTimeval (   obj,
  tobj 
)    ((tobj) = get_timeval(obj))
#define GMTIME (   tm,
  result 
)    rb_gmtime_r2((tm), &(result))

Definition at line 934 of file time.c.

Referenced by gmtime_with_leapsecond(), and localtime_with_gmtoff_zone().

#define gt (   x,
 
)    (cmp((x),(y)) > 0)

Definition at line 68 of file time.c.

Referenced by iseq_specialized_instruction(), and timegmw().

#define GUESS (   p)    (DEBUG_FIND_TIME_NUMGUESS_INC (utc_p ? gmtime_with_leapsecond((p), &result) : LOCALTIME((p), result)))

Referenced by find_time_t().

#define IsTimeval (   obj)    rb_typeddata_is_kind_of((obj), &time_data_type)
#define le (   x,
 
)    (cmp((x),(y)) <= 0)
#define leap_year_v_p (   y)    leap_year_p(NUM2LONG(mod((y), INT2FIX(400))))

Definition at line 868 of file time.c.

Referenced by vtm_add_offset().

#define LOCALTIME (   tm,
  result 
)    (tzset(),rb_localtime_r2((tm), &(result)))

Definition at line 917 of file time.c.

Referenced by find_time_t(), gmtime_with_leapsecond(), and localtime_with_gmtoff_zone().

#define lshift (   x,
 
)    (rb_funcall((x), id_lshift, 1, (y)))

Definition at line 172 of file time.c.

#define lt (   x,
 
)    (cmp((x),(y)) < 0)
#define MAKE_TM (   time,
  tobj 
)
Value:
do { \
if ((tobj)->tm_got == 0) { \
time_get_tm((time), (tobj)); \
} \
} while (0)
static VALUE time_get_tm(VALUE, struct time_object *)
Definition: time.c:3693
if(RB_TYPE_P(r, T_FLOAT))
Definition: bigdecimal.c:1186
VALUE time
Definition: tcltklib.c:1866

Definition at line 1856 of file time.c.

Referenced by strftimev(), time_hour(), time_isdst(), time_mday(), time_min(), time_mon(), time_sec(), time_strftime(), time_to_a(), time_utc_offset(), time_wday(), time_yday(), time_year(), and time_zone().

#define MOD (   n,
  d 
)    ((n)<0 ? NMOD((n),(d)) : (n)%(d))

Definition at line 42 of file time.c.

Referenced by calc_tm_yday().

#define mulquo (   x,
  y,
 
)    (((y) == (z)) ? (x) : quo(mul((x),(y)),(z)))

Definition at line 196 of file time.c.

Referenced by time_mdump(), time_mload(), timew2timespec(), timew2timespec_exact(), and usec2subsecx().

#define NDIV (   x,
 
)    (-(-((x)+1)/(y))-1)

Definition at line 39 of file time.c.

Referenced by time_overflow_p().

#define ne (   x,
 
)    (!eq((x),(y)))

Definition at line 66 of file time.c.

Referenced by add_ensure_range(), small_vtm_sub(), VpAlloc(), VpCtoV(), VpDtoV(), and vtmcmp().

#define neg (   x)    (sub(INT2FIX(0), (x)))
#define NEGFIXWVABLE (   wi)    ((wi) >= FIXWV_MIN)

Definition at line 255 of file time.c.

#define NMOD (   x,
 
)    ((y)-(-((x)+1)%(y))-1)

Definition at line 40 of file time.c.

Referenced by time_overflow_p().

#define POSFIXWVABLE (   wi)    ((wi) < FIXWV_MAX+1)

Definition at line 254 of file time.c.

#define rb_intern (   str)    rb_intern_const(str)
#define SMALLBUF   100

Definition at line 4352 of file time.c.

Referenced by rb_strftime_alloc(), strftimev(), and time_strftime().

#define TIME_COPY_GMT (   tobj1,
  tobj2 
)
Value:
((tobj1)->gmt = (tobj2)->gmt, \
(tobj1)->vtm.utc_offset = (tobj2)->vtm.utc_offset, \
(tobj1)->vtm.zone = (tobj2)->vtm.zone)
const char * zone
Definition: timev.h:16
Definition: timev.h:4
VALUE utc_offset
Definition: timev.h:12

Definition at line 1850 of file time.c.

Referenced by rb_time_succ(), and time_s_at().

#define TIME_FIXOFF_P (   tobj)    ((tobj)->gmt == 2)

Definition at line 1844 of file time.c.

Referenced by time_add(), time_fixoff(), and time_get_tm().

#define TIME_INIT_P (   tobj)    ((tobj)->gmt != -1)

Definition at line 1836 of file time.c.

Referenced by get_new_timeval(), and get_timeval().

#define TIME_LOCALTIME_P (   tobj)    ((tobj)->gmt == 0)

Definition at line 1841 of file time.c.

Referenced by time_localtime().

#define TIME_SET_FIXOFF (   tobj,
  off 
)
Value:
((tobj)->gmt = 2, \
(tobj)->vtm.utc_offset = (off), \
(tobj)->vtm.zone = NULL)
#define NULL
Definition: _sdbm.c:103

Definition at line 1845 of file time.c.

Referenced by time_add(), time_fixoff(), and time_set_utc_offset().

#define TIME_SET_LOCALTIME (   tobj)    ((tobj)->gmt = 0)

Definition at line 1842 of file time.c.

Referenced by time_localtime().

#define TIME_SET_UTC (   tobj)    ((tobj)->gmt = 1)

Definition at line 1839 of file time.c.

Referenced by time_add(), time_gmtime(), and time_mload().

#define time_succ   rb_time_succ

Definition at line 3849 of file time.c.

Referenced by Init_Time().

#define TIME_UTC_P (   tobj)    ((tobj)->gmt == 1)
#define TIMET2WV (   t)    timet2wv(t)

Definition at line 821 of file time.c.

Referenced by gmtimew(), init_leap_second_info(), time_mload(), timegmw(), timelocalw(), and timespec2timew().

#define TIMET_MAX   (~(time_t)0 <= 0 ? (time_t)((~(unsigned_time_t)0) >> 1) : (time_t)(~(unsigned_time_t)0))
#define TIMET_MIN   (~(time_t)0 <= 0 ? (time_t)(((unsigned_time_t)1) << (sizeof(time_t) * CHAR_BIT - 1)) : (time_t)0)

Definition at line 742 of file time.c.

Referenced by find_time_t(), timet2wv(), timew_out_of_timet_range(), and wv2timet().

#define TYPEOF_TIMEVAL_TV_SEC   time_t

Definition at line 721 of file time.c.

Referenced by rb_time_timeval(), and time_timeval().

#define TYPEOF_TIMEVAL_TV_USEC   long

Definition at line 727 of file time.c.

Referenced by rb_time_timeval(), and time_timeval().

#define UWIDEINT_MAX   ULONG_MAX

Definition at line 243 of file time.c.

Referenced by wi_mul().

#define wday_p (   n)
Value:
{\
struct time_object *tobj;\
MAKE_TM(time, tobj);\
return (tobj->vtm.wday == (n)) ? Qtrue : Qfalse;\
}
ssize_t n
Definition: bigdecimal.c:5655
#define GetTimeval(obj, tobj)
Definition: time.c:1832
return
Definition: bigdecimal.c:5800
return Qtrue
Definition: tcltklib.c:9610
return Qfalse
Definition: tcltklib.c:6779
#define MAKE_TM(time, tobj)
Definition: time.c:1856
VALUE time
Definition: tcltklib.c:1866

Definition at line 4081 of file time.c.

Referenced by time_friday(), time_monday(), time_saturday(), time_sunday(), time_thursday(), time_tuesday(), and time_wednesday().

#define wge (   x,
 
)    (wcmp((x),(y)) >= 0)

Definition at line 444 of file time.c.

#define wgt (   x,
 
)    (wcmp((x),(y)) > 0)

Definition at line 442 of file time.c.

#define WIDEINT_MAX   LONG_MAX

Definition at line 244 of file time.c.

Referenced by wi_mul().

#define WIDEINT_MIN   LONG_MIN

Definition at line 245 of file time.c.

#define WIDEVAL_GET (   w)    (w)

Definition at line 269 of file time.c.

Referenced by w2v(), weq(), and wmuldivmod().

#define WIDEVAL_WRAP (   v)    (v)

Definition at line 268 of file time.c.

Referenced by v2w().

#define WIDEVALUE_IS_WIDER   0

Definition at line 242 of file time.c.

#define WINT2FIXWV (   i)    WIDEVAL_WRAP(LONG2FIX(i))
#define WINT2WV (   wi)    WIDEVAL_WRAP(LONG2NUM(wi))
#define wle (   x,
 
)    (wcmp((x),(y)) <= 0)

Definition at line 443 of file time.c.

#define wlt (   x,
 
)    (wcmp((x),(y)) < 0)

Definition at line 441 of file time.c.

Referenced by gmtimew(), and timegmw().

#define wmulquo (   x,
  y,
 
)    ((WIDEVAL_GET(y) == WIDEVAL_GET(z)) ? (x) : wquo(wmul((x),(y)),(z)))

Definition at line 566 of file time.c.

#define wmulquoll (   x,
  y,
 
)    (((y) == (z)) ? (x) : wquo(wmul((x),WINT2WV(y)),WINT2WV(z)))

Definition at line 567 of file time.c.

Referenced by time_mload(), time_nsec(), time_s_at(), and timespec2timew().

#define wne (   x,
 
)    (!weq((x),(y)))

Definition at line 440 of file time.c.

#define WV2TIMET (   t)    wv2timet(t)

Definition at line 844 of file time.c.

Referenced by gmtimew(), localtimew(), timew2timespec(), and timew2timespec_exact().

Typedef Documentation

Definition at line 241 of file time.c.

typedef unsigned long unsigned_time_t

Definition at line 732 of file time.c.

typedef unsigned long uwideint_t

Definition at line 238 of file time.c.

typedef long wideint_t

Definition at line 239 of file time.c.

Definition at line 267 of file time.c.

typedef VALUE WIDEVALUE

Definition at line 240 of file time.c.

Function Documentation

static VALUE time_utc_offset _ ( (VALUE )
static
static VALUE add ( VALUE  x,
VALUE  y 
)
static
static int calc_tm_yday ( long  tm_year,
int  tm_mon,
int  tm_mday 
)
static

Definition at line 976 of file time.c.

References int, leap_year_p(), and MOD.

Referenced by find_time_t(), and timegmw_noleapsecond().

static int calc_wday ( int  year,
int  month,
int  day 
)
static

Definition at line 1493 of file time.c.

References a, and m.

Referenced by guess_local_offset().

static int cmp ( VALUE  x,
VALUE  y 
)
static

Definition at line 54 of file time.c.

References FIXNUM_P, id_cmp, rb_cmpint(), and rb_funcall().

static void divmodv ( VALUE  n,
VALUE  d,
VALUE q,
VALUE r 
)
static
static int eq ( VALUE  x,
VALUE  y 
)
static

Definition at line 45 of file time.c.

References FIXNUM_P, id_eq, rb_funcall(), and RTEST.

Referenced by init_env(), iseq_specialized_instruction(), and weq().

static const char * find_time_t ( struct tm *  tptr,
int  utc_p,
time_t *  tp 
)
static
static struct time_object* get_new_timeval ( VALUE  obj)
static
static struct time_object* get_timeval ( VALUE  obj)
static
static struct tm* gmtime_with_leapsecond ( const time_t *  timep,
struct tm *  result 
)
static

Definition at line 1164 of file time.c.

References common_year_days_in_month, GMTIME, int, leap_year_p(), LOCALTIME, NULL, result, and t.

Referenced by gmtimew(), and init_leap_second_info().

static struct vtm* gmtimew ( wideval_t  timew,
struct vtm result 
)
static
static void gmtimew_noleapsecond ( wideval_t  timew,
struct vtm vtm 
)
static
static VALUE guess_local_offset ( struct vtm vtm_utc,
int isdst_ret,
const char **  zone_ret 
)
static
static void init_leap_second_info ( void  )
static
void Init_Time ( void  )
static int leap_year_p ( long  y)
static
static struct tm * localtime_with_gmtoff_zone ( const time_t *  t,
struct tm *  result,
long *  gmtoff,
const char **  zone 
)
static

Definition at line 1693 of file time.c.

References buf, GMTIME, LOCALTIME, NULL, result, and zone_str().

Referenced by guess_local_offset(), and localtimew().

static struct vtm * localtimew ( wideval_t  timew,
struct vtm result 
)
static
static int long_mul ( long  x,
long  y,
long *  z 
)
static

Definition at line 98 of file time.c.

References a, b, c, LONG_MAX, and s.

Referenced by mul().

static VALUE mod ( VALUE  x,
VALUE  y 
)
static

Definition at line 163 of file time.c.

References rb_big_modulo(), rb_funcall(), T_BIGNUM, and TYPE.

Referenced by gmtimew_noleapsecond(), guess_local_offset(), time_mdump(), and time_round().

static int month_arg ( VALUE  arg)
static

Definition at line 2647 of file time.c.

References c, i, NIL_P(), obj2int(), rb_check_string_type(), RSTRING_LEN, RSTRING_PTR, s, and STRCASECMP.

Referenced by time_arg(), and time_init_1().

static VALUE mul ( VALUE  x,
VALUE  y 
)
static
static wideval_t nsec2timew ( time_t  sec,
long  nsec 
)
static

Definition at line 2340 of file time.c.

References time_overflow_p(), timespec2timew(), timespec::tv_nsec, and timespec::tv_sec.

Referenced by rb_time_nano_new(), and rb_time_new().

static VALUE num_exact ( VALUE  v)
static
static int obj2int ( VALUE  obj)
static

Definition at line 2598 of file time.c.

References FALSE, NUM2INT, rb_str_to_inum(), RB_TYPE_P, and T_STRING.

Referenced by month_arg(), time_arg(), and time_init_1().

static int obj2subsecx ( VALUE  obj,
VALUE subsecx 
)
static

Definition at line 2621 of file time.c.

References divmodv(), FALSE, INT2FIX, NUM2INT, num_exact(), rb_str_to_inum(), rb_time_magnify(), RB_TYPE_P, T_STRING, v2w(), and w2v().

Referenced by time_arg(), and time_init_1().

static VALUE obj2vint ( VALUE  obj)
static

Definition at line 2608 of file time.c.

References FALSE, obj, rb_str_to_inum(), rb_to_int(), RB_TYPE_P, and T_STRING.

Referenced by time_arg(), and time_init_1().

static VALUE quo ( VALUE  x,
VALUE  y 
)
static
static struct tm* rb_gmtime_r ( const time_t *  tp,
struct tm *  result 
)
static

Definition at line 875 of file time.c.

References t.

Referenced by rb_gmtime_r2().

static struct tm* rb_gmtime_r2 ( const time_t *  t,
struct tm *  result 
)
static

Definition at line 921 of file time.c.

References NULL, rb_gmtime_r(), and result.

static struct tm* rb_localtime_r ( const time_t *  tp,
struct tm *  result 
)
static

Definition at line 883 of file time.c.

References t.

Referenced by rb_localtime_r2().

static struct tm* rb_localtime_r2 ( const time_t *  t,
struct tm *  result 
)
static

Definition at line 892 of file time.c.

References NULL, rb_localtime_r(), and result.

static size_t rb_strftime_alloc ( char **  buf,
VALUE  formatv,
const char *  format,
rb_encoding enc,
struct vtm vtm,
wideval_t  timew,
int  gmt 
)
static
struct timeval rb_time_interval ( VALUE  num)

Definition at line 2491 of file time.c.

References time_timeval(), and TRUE.

Referenced by io_wait_readable(), io_wait_writable(), rb_f_select(), rb_f_sleep(), and rb_mutex_sleep().

static wideval_t rb_time_magnify ( wideval_t  w)
static
VALUE rb_time_nano_new ( time_t  sec,
long  nsec 
)

Definition at line 2389 of file time.c.

References nsec2timew(), and time_new_timew().

Referenced by stat_atime(), stat_ctime(), and stat_mtime().

VALUE rb_time_new ( time_t  sec,
long  usec 
)

Definition at line 2363 of file time.c.

References nsec2timew(), rb_eRangeError, rb_raise(), time_new_timew(), TIMET_MAX, and time_object::timew.

Referenced by rb_gzfile_mtime().

VALUE rb_time_num_new ( VALUE  timev,
VALUE  off 
)
VALUE rb_time_succ ( VALUE  time)
struct timespec rb_time_timespec ( VALUE  time)

Definition at line 2514 of file time.c.

References FALSE, GetTimeval, IsTimeval, t, time, time_timespec(), and timew2timespec().

Referenced by rb_file_s_utime().

struct timeval rb_time_timeval ( VALUE  time)
static wideval_t rb_time_unmagnify ( wideval_t  w)
static
static VALUE rb_time_unmagnify_to_float ( wideval_t  w)
static

Definition at line 773 of file time.c.

References a, b, c, DBL2NUM, FIXWV2WINT, FIXWV_P, quo(), TIME_SCALE, v, and w2v().

Referenced by time_minus(), and time_to_f().

static VALUE small_vtm_sub ( struct vtm vtm1,
struct vtm vtm2 
)
static

Definition at line 1593 of file time.c.

References vtm::hour, INT2FIX, lt, vtm::mday, vtm::min, vtm::mon, ne, vtm::sec, and vtm::year.

Referenced by timelocalw().

static void split_second ( wideval_t  timew,
wideval_t timew_p,
VALUE subsecx_p 
)
static

Definition at line 794 of file time.c.

References q, r, TIME_SCALE, w2v(), wdivmod(), and WINT2FIXWV.

Referenced by gmtimew(), gmtimew_noleapsecond(), localtimew(), timew2timespec(), and timew2timespec_exact().

static VALUE strftimev ( const char *  fmt,
VALUE  time,
rb_encoding enc 
)
static
static VALUE sub ( VALUE  x,
VALUE  y 
)
static
static VALUE time_add ( struct time_object tobj,
VALUE  offset,
int  sign 
)
static
static void time_arg ( int  argc,
VALUE argv,
struct vtm vtm 
)
static
static VALUE time_asctime ( VALUE  time)
static

Definition at line 3713 of file time.c.

References rb_usascii_encoding(), and strftimev().

Referenced by Init_Time().

static VALUE time_cmp ( VALUE  time1,
VALUE  time2 
)
static

Definition at line 3392 of file time.c.

References GetTimeval, INT2FIX, IsTimeval, n, rb_invcmp(), time_object::timew, and wcmp().

Referenced by Init_Time().

static VALUE time_dump ( int  argc,
VALUE argv,
VALUE  time 
)
static

Definition at line 4754 of file time.c.

References rb_scan_args(), str, and time_mdump().

Referenced by Init_Time().

static VALUE time_dup ( VALUE  time)
static

Definition at line 3490 of file time.c.

References rb_obj_class(), time_init_copy(), and time_s_alloc().

Referenced by time_getgmtime(), and time_getlocaltime().

static VALUE time_eql ( VALUE  time1,
VALUE  time2 
)
static

Definition at line 3419 of file time.c.

References GetTimeval, IsTimeval, Qfalse, rb_equal(), time_object::timew, and w2v().

Referenced by Init_Time().

static VALUE time_fixoff ( VALUE  time)
static
static void time_free ( void tobj)
static

Definition at line 1876 of file time.c.

References xfree.

static VALUE time_friday ( VALUE  time)
static

Definition at line 4179 of file time.c.

References wday_p.

Referenced by Init_Time().

static VALUE time_get_tm ( VALUE  time,
struct time_object tobj 
)
static

Definition at line 3693 of file time.c.

References time_fixoff(), TIME_FIXOFF_P, time_gmtime(), time_localtime(), and TIME_UTC_P.

static VALUE time_getgmtime ( VALUE  time)
static

Definition at line 3687 of file time.c.

References time_dup(), and time_gmtime().

Referenced by Init_Time().

static VALUE time_getlocaltime ( int  argc,
VALUE argv,
VALUE  time 
)
static
static VALUE time_gmtime ( VALUE  time)
static
static VALUE time_hash ( VALUE  time)
static

Definition at line 3467 of file time.c.

References GetTimeval, rb_hash(), time_object::timew, and w2v().

Referenced by Init_Time().

static VALUE time_hour ( VALUE  time)
static

Definition at line 3980 of file time.c.

References GetTimeval, vtm::hour, INT2FIX, MAKE_TM, and time_object::vtm.

Referenced by Init_Time().

static VALUE time_init ( int  argc,
VALUE argv,
VALUE  time 
)
static

Definition at line 2301 of file time.c.

References time_init_0(), and time_init_1().

Referenced by Init_Time().

static VALUE time_init_0 ( VALUE  time)
static
static VALUE time_init_1 ( int  argc,
VALUE argv,
VALUE  time 
)
static
static VALUE time_init_copy ( VALUE  copy,
VALUE  time 
)
static

Definition at line 3477 of file time.c.

References GetNewTimeval, GetTimeval, MEMCPY, and OBJ_INIT_COPY.

Referenced by Init_Time(), and time_dup().

static VALUE time_isdst ( VALUE  time)
static

Definition at line 4246 of file time.c.

References GetTimeval, vtm::isdst, MAKE_TM, Qfalse, Qtrue, and time_object::vtm.

Referenced by Init_Time().

static VALUE time_load ( VALUE  klass,
VALUE  str 
)
static

Definition at line 4888 of file time.c.

References time, time_mload(), and time_s_alloc().

Referenced by Init_Time().

static VALUE time_localtime ( VALUE  time)
static
static VALUE time_localtime_m ( int  argc,
VALUE argv,
VALUE  time 
)
static
static void time_mark ( void ptr)
static
static VALUE time_mday ( VALUE  time)
static

Definition at line 4002 of file time.c.

References GetTimeval, INT2FIX, MAKE_TM, vtm::mday, and time_object::vtm.

Referenced by Init_Time().

static VALUE time_mdump ( VALUE  time)
static
static size_t time_memsize ( const void tobj)
static

Definition at line 1882 of file time.c.

static VALUE time_min ( VALUE  time)
static

Definition at line 3960 of file time.c.

References GetTimeval, INT2FIX, MAKE_TM, vtm::min, and time_object::vtm.

Referenced by Init_Time().

static VALUE time_minus ( VALUE  time1,
VALUE  time2 
)
static

Definition at line 3806 of file time.c.

References GetTimeval, IsTimeval, rb_Float(), rb_time_unmagnify_to_float(), time_add(), time_object::timew, and wsub().

Referenced by Init_Time().

static VALUE time_mload ( VALUE  time,
VALUE  str 
)
static
static void time_modify ( VALUE  time)
static
static VALUE time_mon ( VALUE  time)
static

Definition at line 4024 of file time.c.

References GetTimeval, INT2FIX, MAKE_TM, vtm::mon, and time_object::vtm.

Referenced by Init_Time().

static VALUE time_monday ( VALUE  time)
static

Definition at line 4115 of file time.c.

References wday_p.

Referenced by Init_Time().

static VALUE time_new_timew ( VALUE  klass,
wideval_t  timew 
)
static
static VALUE time_nsec ( VALUE  time)
static

Definition at line 3330 of file time.c.

References GetTimeval, rb_to_int(), TIME_SCALE, time_object::timew, w2v(), WINT2WV, wmod(), and wmulquoll.

Referenced by Init_Time().

static void time_overflow_p ( time_t *  secp,
long *  nsecp 
)
static

Definition at line 2310 of file time.c.

References NDIV, NMOD, rb_eArgError, rb_eRangeError, rb_raise(), and tmp.

Referenced by nsec2timew().

static VALUE time_plus ( VALUE  time1,
VALUE  time2 
)
static

Definition at line 3779 of file time.c.

References GetTimeval, IsTimeval, rb_eTypeError, rb_raise(), and time_add().

Referenced by Init_Time().

static VALUE time_round ( int  argc,
VALUE argv,
VALUE  time 
)
static
static VALUE time_s_alloc ( VALUE  klass)
static
static VALUE time_s_at ( int  argc,
VALUE argv,
VALUE  klass 
)
static
static VALUE time_s_mktime ( int  argc,
VALUE argv,
VALUE  klass 
)
static

Definition at line 3206 of file time.c.

References FALSE, and time_utc_or_local().

Referenced by Init_Time().

static VALUE time_s_mkutc ( int  argc,
VALUE argv,
VALUE  klass 
)
static

Definition at line 3175 of file time.c.

References time_utc_or_local(), and TRUE.

Referenced by Init_Time().

static VALUE time_s_now ( VALUE  klass)
static

Definition at line 2537 of file time.c.

References NULL, and rb_class_new_instance().

Referenced by Init_Time().

static VALUE time_saturday ( VALUE  time)
static

Definition at line 4195 of file time.c.

References wday_p.

Referenced by Init_Time().

static VALUE time_sec ( VALUE  time)
static

Definition at line 3940 of file time.c.

References GetTimeval, INT2FIX, MAKE_TM, vtm::sec, and time_object::vtm.

Referenced by Init_Time().

static VALUE time_set_utc_offset ( VALUE  time,
VALUE  off 
)
static
static VALUE time_strftime ( VALUE  time,
VALUE  format 
)
static
static VALUE time_subsec ( VALUE  time)
static

Definition at line 3358 of file time.c.

References GetTimeval, INT2FIX, quo(), TIME_SCALE, time_object::timew, w2v(), WINT2FIXWV, and wmod().

Referenced by Init_Time().

static VALUE time_sunday ( VALUE  time)
static

Definition at line 4099 of file time.c.

References wday_p.

Referenced by Init_Time().

static VALUE time_thursday ( VALUE  time)
static

Definition at line 4163 of file time.c.

References wday_p.

Referenced by Init_Time().

static struct timespec time_timespec ( VALUE  num,
int  interval 
)
static
static struct timeval time_timeval ( VALUE  num,
int  interval 
)
static
static VALUE time_to_a ( VALUE  time)
static
static VALUE time_to_f ( VALUE  time)
static

Definition at line 3249 of file time.c.

References GetTimeval, rb_Float(), rb_time_unmagnify_to_float(), and time_object::timew.

Referenced by Init_Time().

static VALUE time_to_i ( VALUE  time)
static

Definition at line 3225 of file time.c.

References GetTimeval, TIME_SCALE, time_object::timew, w2v(), wdiv(), and WINT2FIXWV.

Referenced by Init_Time().

static VALUE time_to_r ( VALUE  time)
static

Definition at line 3273 of file time.c.

References GetTimeval, rb_Rational1, rb_time_unmagnify(), RB_TYPE_P, T_RATIONAL, time_object::timew, v, and w2v().

Referenced by Init_Time().

static VALUE time_to_s ( VALUE  time)
static

Definition at line 3735 of file time.c.

References GetTimeval, rb_usascii_encoding(), strftimev(), and TIME_UTC_P.

Referenced by Init_Time().

static VALUE time_tuesday ( VALUE  time)
static

Definition at line 4131 of file time.c.

References wday_p.

Referenced by Init_Time().

static VALUE time_usec ( VALUE  time)
static

Definition at line 3299 of file time.c.

References GetTimeval, q, r, rb_to_int(), TIME_SCALE, time_object::timew, w2v(), WINT2FIXWV, WINT2WV, wmod(), and wmuldivmod().

Referenced by Init_Time().

static VALUE time_utc_offset ( VALUE  time)
static

Definition at line 4300 of file time.c.

References GetTimeval, INT2FIX, MAKE_TM, TIME_UTC_P, vtm::utc_offset, and time_object::vtm.

Referenced by Init_Time(), and time_mdump().

static VALUE time_utc_or_local ( int  argc,
VALUE argv,
int  utc_p,
VALUE  klass 
)
static

Definition at line 3128 of file time.c.

References time, time_arg(), time_gmtime(), time_localtime(), time_new_timew(), timegmw(), and timelocalw().

Referenced by time_s_mktime(), and time_s_mkutc().

static VALUE time_utc_p ( VALUE  time)
static

Definition at line 3450 of file time.c.

References GetTimeval, Qfalse, Qtrue, and TIME_UTC_P.

Referenced by Init_Time().

static VALUE time_wday ( VALUE  time)
static

Definition at line 4072 of file time.c.

References GetTimeval, INT2FIX, MAKE_TM, time_object::vtm, and vtm::wday.

Referenced by Init_Time().

static VALUE time_wednesday ( VALUE  time)
static

Definition at line 4147 of file time.c.

References wday_p.

Referenced by Init_Time().

static VALUE time_yday ( VALUE  time)
static

Definition at line 4211 of file time.c.

References GetTimeval, INT2FIX, MAKE_TM, time_object::vtm, and vtm::yday.

Referenced by Init_Time().

static VALUE time_year ( VALUE  time)
static

Definition at line 4044 of file time.c.

References GetTimeval, MAKE_TM, time_object::vtm, and vtm::year.

Referenced by Init_Time().

static VALUE time_zone ( VALUE  time)
static
static time_t timegm_noleapsecond ( struct tm *  tm)
static

Definition at line 2771 of file time.c.

References DIV, and leap_year_p().

Referenced by find_time_t().

static wideval_t timegmw ( struct vtm vtm)
static
static wideval_t timegmw_noleapsecond ( struct vtm vtm)
static
static wideval_t timelocalw ( struct vtm vtm)
static
static wideval_t timespec2timew ( struct timespec ts)
static
static wideval_t timet2wv ( time_t  t)
static

Definition at line 803 of file time.c.

References FIXWV_MAX, FIXWV_MIN, TIMET_MIN, v2w(), and WINT2FIXWV.

static struct timespec timew2timespec ( wideval_t  timew)
static
static struct timespec* timew2timespec_exact ( wideval_t  timew,
struct timespec ts 
)
static
static int timew_out_of_timet_range ( wideval_t  timew)
static

Definition at line 1744 of file time.c.

References add(), FIXWV2WINT, FIXWV_P, INT2FIX, le, lt, mul(), t, TIME_SCALE, TIMET_MAX, TIMET_MIN, and w2v().

Referenced by localtimew(), timew2timespec(), and timew2timespec_exact().

static int tmcmp ( struct tm *  a,
struct tm *  b 
)
static

Definition at line 3109 of file time.c.

Referenced by find_time_t().

static long usec2subsecx ( VALUE  obj)
static

Definition at line 2637 of file time.c.

References FALSE, INT2FIX, mulquo, num_exact(), rb_str_to_inum(), RB_TYPE_P, T_STRING, and TIME_SCALE.

Referenced by time_arg().

static VALUE utc_offset_arg ( VALUE  arg)
static
static wideval_t v2w ( VALUE  v)
inlinestatic
static void validate_utc_offset ( VALUE  utc_offset)
static

Definition at line 2676 of file time.c.

References ge, INT2FIX, le, rb_eArgError, and rb_raise().

Referenced by rb_time_num_new(), time_getlocaltime(), time_localtime_m(), time_mload(), and validate_vtm().

static void validate_vtm ( struct vtm vtm)
static
static void vtm_add_offset ( struct vtm vtm,
VALUE  off 
)
static
static int vtmcmp ( struct vtm a,
struct vtm b 
)
static

Definition at line 3088 of file time.c.

References vtm::hour, lt, vtm::mday, vtm::min, vtm::mon, ne, vtm::sec, vtm::subsecx, and vtm::year.

Referenced by timelocalw().

static VALUE w2v ( wideval_t  w)
inlinestatic
static wideval_t wadd ( wideval_t  wx,
wideval_t  wy 
)
static
static int wcmp ( wideval_t  wx,
wideval_t  wy 
)
static

Definition at line 420 of file time.c.

References a, b, FIXWV2WINT, FIXWV_P, id_cmp, rb_cmpint(), rb_funcall(), and w2v().

Referenced by time_cmp().

static wideval_t wdiv ( wideval_t  wx,
wideval_t  wy 
)
static

Definition at line 650 of file time.c.

References q, r, and wdivmod().

Referenced by time_to_i().

static void wdivmod ( wideval_t  wn,
wideval_t  wd,
wideval_t wq,
wideval_t wr 
)
static
static int weq ( wideval_t  wx,
wideval_t  wy 
)
static

Definition at line 407 of file time.c.

References eq(), FIXWV_P, id_eq, rb_funcall(), RTEST, w2v(), and WIDEVAL_GET.

Referenced by timelocalw().

static int wi_mul ( wideint_t  x,
wideint_t  y,
wideint_t z 
)
static

Definition at line 479 of file time.c.

References a, b, c, s, UWIDEINT_MAX, and WIDEINT_MAX.

Referenced by rb_time_magnify(), and wmul().

static wideval_t wmod ( wideval_t  wx,
wideval_t  wy 
)
static

Definition at line 658 of file time.c.

References q, r, and wdivmod().

Referenced by time_nsec(), time_subsec(), and time_usec().

static wideval_t wmul ( wideval_t  wx,
wideval_t  wy 
)
static
static void wmuldivmod ( wideval_t  wx,
wideval_t  wy,
wideval_t  wz,
wideval_t wq,
wideval_t wr 
)
static

Definition at line 639 of file time.c.

References wdivmod(), WIDEVAL_GET, WINT2FIXWV, and wmul().

Referenced by time_usec().

static wideval_t wquo ( wideval_t  wx,
wideval_t  wy 
)
static

Definition at line 541 of file time.c.

References a, b, c, FIXWV2WINT, FIXWV_P, id_quo, INT2FIX, rb_funcall(), rb_num_zerodiv(), RB_TYPE_P, ret, RRATIONAL, T_RATIONAL, v2w(), w2v(), and WINT2WV.

Referenced by rb_time_unmagnify().

static wideval_t wsub ( wideval_t  wx,
wideval_t  wy 
)
static
static time_t wv2timet ( wideval_t  w)
static

Definition at line 824 of file time.c.

References FIXWV2WINT, FIXWV_P, rb_eRangeError, rb_raise(), TIMET_MAX, TIMET_MIN, and w2v().

static const char* zone_str ( const char *  s)
static

Definition at line 1048 of file time.c.

References s, st_init_strtable(), st_update(), and zone_str_update().

Referenced by localtime_with_gmtoff_zone().

static int zone_str_update ( st_data_t key,
st_data_t value,
st_data_t  arg,
int  existing 
)
static

Definition at line 1033 of file time.c.

References ret, s, ST_CONTINUE, ST_STOP, and strdup.

Referenced by zone_str().

Variable Documentation

const int common_year_days_in_month[]
static
Initial value:
= {
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
}

Definition at line 968 of file time.c.

Referenced by gmtime_with_leapsecond(), and vtm_add_offset().

const int common_year_yday_offset[]
static
Initial value:
= {
-1,
-1 + 31,
-1 + 31 + 28,
-1 + 31 + 28 + 31,
-1 + 31 + 28 + 31 + 30,
-1 + 31 + 28 + 31 + 30 + 31,
-1 + 31 + 28 + 31 + 30 + 31 + 30,
-1 + 31 + 28 + 31 + 30 + 31 + 30 + 31,
-1 + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31,
-1 + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
-1 + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
-1 + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30
}

Definition at line 937 of file time.c.

Referenced by gmtimew_noleapsecond().

int compat_common_month_table[12][7]
static
Initial value:
= {
{ 2034, 2035, 2036, 2031, 2032, 2027, 2033 },
{ 2026, 2027, 2033, 2034, 2035, 2030, 2031 },
{ 2026, 2032, 2033, 2034, 2035, 2030, 2036 },
{ 2035, 2030, 2036, 2026, 2032, 2033, 2034 },
{ 2033, 2034, 2035, 2030, 2036, 2026, 2032 },
{ 2036, 2026, 2032, 2033, 2034, 2035, 2030 },
{ 2035, 2030, 2036, 2026, 2032, 2033, 2034 },
{ 2032, 2033, 2034, 2035, 2030, 2036, 2026 },
{ 2030, 2036, 2026, 2032, 2033, 2034, 2035 },
{ 2034, 2035, 2030, 2036, 2026, 2032, 2033 },
{ 2026, 2032, 2033, 2034, 2035, 2030, 2036 },
{ 2030, 2036, 2026, 2032, 2033, 2034, 2035 },
}

Definition at line 1446 of file time.c.

int compat_leap_month_table[7]
static
Initial value:
= {
2032, 2016, 2028, 2012, 2024, 2036, 2020,
}

Definition at line 1487 of file time.c.

ID id_cmp
static

Definition at line 37 of file time.c.

Referenced by cmp(), Init_Time(), and wcmp().

ID id_div
static

Definition at line 37 of file time.c.

Referenced by Init_Time().

ID id_divmod
static

Definition at line 36 of file time.c.

Referenced by divmodv(), Init_Time(), time_timespec(), and wdivmod().

ID id_eq
static

Definition at line 37 of file time.c.

Referenced by eq(), Init_Time(), and weq().

ID id_lshift
static

Definition at line 37 of file time.c.

Referenced by Init_Time().

ID id_mul
static

Definition at line 36 of file time.c.

Referenced by Init_Time(), and time_timespec().

ID id_nano_den
static

Definition at line 36 of file time.c.

Referenced by Init_Time(), and time_mdump().

ID id_nano_num
static

Definition at line 36 of file time.c.

Referenced by Init_Time(), and time_mdump().

ID id_ne
static

Definition at line 37 of file time.c.

Referenced by Init_Time().

ID id_offset
static

Definition at line 36 of file time.c.

Referenced by Init_Time(), and time_mdump().

ID id_quo
static

Definition at line 37 of file time.c.

Referenced by Init_Time(), quo(), and wquo().

ID id_submicro
static

Definition at line 36 of file time.c.

Referenced by Init_Time(), and time_mdump().

ID id_zone
static

Definition at line 36 of file time.c.

Referenced by Init_Time(), and time_mdump().

time_t known_leap_seconds_limit
static

Definition at line 1288 of file time.c.

const int leap_year_days_in_month[]
static
Initial value:
= {
31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
}

Definition at line 971 of file time.c.

const int leap_year_yday_offset[]
static
Initial value:
= {
-1,
-1 + 31,
-1 + 31 + 29,
-1 + 31 + 29 + 31,
-1 + 31 + 29 + 31 + 30,
-1 + 31 + 29 + 31 + 30 + 31,
-1 + 31 + 29 + 31 + 30 + 31 + 30,
-1 + 31 + 29 + 31 + 30 + 31 + 30 + 31,
-1 + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31,
-1 + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
-1 + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
-1 + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30
}

Definition at line 952 of file time.c.

Referenced by gmtimew_noleapsecond().

const char months[][4]
static
Initial value:
= {
"jan", "feb", "mar", "apr", "may", "jun",
"jul", "aug", "sep", "oct", "nov", "dec",
}

Definition at line 2592 of file time.c.

int number_of_leap_seconds_known
static

Definition at line 1289 of file time.c.

VALUE rb_cTime

Definition at line 846 of file time.c.

long this_year = 0
static

Definition at line 1287 of file time.c.

const rb_data_type_t time_data_type
static
Initial value:
= {
"time",
}
static size_t time_memsize(const void *tobj)
Definition: time.c:1882
static void time_free(void *tobj)
Definition: time.c:1876
static void time_mark(void *ptr)
Definition: time.c:1864

Definition at line 1887 of file time.c.

Referenced by get_new_timeval(), get_timeval(), and time_s_alloc().

st_table* zone_table
static

Definition at line 1030 of file time.c.