#ifndef RUBY_TIMEV_H
#define RUBY_TIMEV_H
PACKED_STRUCT_UNALIGNED(struct vtm {
VALUE year;
VALUE subsecx;
VALUE utc_offset;
VALUE zone;
unsigned int yday:9;
unsigned int mon:4;
unsigned int mday:5;
unsigned int hour:5;
unsigned int min:6;
unsigned int sec:6;
unsigned int wday:3;
unsigned int isdst:2;
});
#define TIME_SCALE 1000000000
#ifndef TYPEOF_TIMEVAL_TV_SEC
# define TYPEOF_TIMEVAL_TV_SEC time_t
#endif
#ifndef TYPEOF_TIMEVAL_TV_USEC
# if INT_MAX >= 1000000
# define TYPEOF_TIMEVAL_TV_USEC int
# else
# define TYPEOF_TIMEVAL_TV_USEC long
# endif
#endif
#if SIZEOF_TIME_T == SIZEOF_LONG
typedef unsigned long unsigned_time_t;
#elif SIZEOF_TIME_T == SIZEOF_INT
typedef unsigned int unsigned_time_t;
#elif SIZEOF_TIME_T == SIZEOF_LONG_LONG
typedef unsigned LONG_LONG unsigned_time_t;
#else
# error cannot find integer type which size is same as time_t.
#endif
#ifdef RUBY_ENCODING_H
VALUE rb_strftime_timespec(const char *format, size_t format_len, rb_encoding *enc,
VALUE time, const struct vtm *vtm, struct timespec *ts, int gmt);
VALUE rb_strftime(const char *format, size_t format_len, rb_encoding *enc,
VALUE time, const struct vtm *vtm, VALUE timev, int gmt);
#endif
VALUE rb_time_zone_abbreviation(VALUE zone, VALUE time);
#endif