method
marshal_load
v1_8_7_72 -
Show latest stable
- Class:
Time
marshal_load(p1)public
undocumented
/*
* undocumented
*/
static VALUE
time_mload(time, str)
VALUE time, str;
{
struct time_object *tobj;
unsigned long p, s;
time_t sec, usec;
unsigned char *buf;
struct tm tm;
int i;
time_modify(time);
StringValue(str);
buf = (unsigned char *)RSTRING(str)->ptr;
if (RSTRING(str)->len != 8) {
rb_raise(rb_eTypeError, "marshaled time format differ");
}
p = s = 0;
for (i=0; i<4; i++) {
p |= buf[i]<<(8*i);
}
for (i=4; i<8; i++) {
s |= buf[i]<<(8*(i-4));
}
if ((p & (1UL<<31)) == 0) {
sec = p;
usec = s;
}
else {
p &= ~(1UL<<31);
tm.tm_year = (p >> 14) & 0xffff;
tm.tm_mon = (p >> 10) & 0xf;
tm.tm_mday = (p >> 5) & 0x1f;
tm.tm_hour = p & 0x1f;
tm.tm_min = (s >> 26) & 0x3f;
tm.tm_sec = (s >> 20) & 0x3f;
tm.tm_isdst = 0;
sec = make_time_t(&tm, Qtrue);
usec = (time_t)(s & 0xfffff);
}
time_overflow_p(&sec, &usec);
GetTimeval(time, tobj);
tobj->tm_got = 0;
tobj->tv.tv_sec = sec;
tobj->tv.tv_usec = usec;
return time;
} Related methods
- Instance methods
- +
- -
- <=>
- _dump
- asctime
- ctime
- day
- dst?
- eql?
- getgm
- getlocal
- getutc
- gmt?
- gmt_offset
- gmtime
- gmtoff
- hash
- hour
- httpdate
- initialize_copy
- inspect
- isdst
- iso8601
- localtime
- marshal_dump
- marshal_load
- mday
- min
- mon
- month
- rfc2822
- rfc822
- sec
- strftime
- succ
- to_a
- to_f
- to_i
- to_s
- to_yaml
- tv_sec
- tv_usec
- usec
- utc
- utc?
- utc_offset
- w3cdtf
- wday
- xmlschema
- yday
- year
- zone
- Class methods
- _load
- at
- gm
- httpdate
- local
- mktime
- new
- now
- parse
- rfc2822
- times
- utc
- w3cdtf
- xmlschema
- yaml_new
- zone_offset
- Private methods
-
apply_offset -
make_time -
month_days -
zone_utc? -
to_date -
to_datetime