You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.0 KiB
65 lines
1.0 KiB
5 years ago
|
/*
|
||
|
struct timeval *
|
||
|
time_t
|
||
|
|
||
|
Ruby has builtin class Time. INPUT/OUTPUT typemap for timeval and
|
||
|
time_t is provided.
|
||
|
|
||
|
*/
|
||
|
%{
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
#ifdef HAVE_SYS_TIME_H
|
||
|
# include <sys/time.h>
|
||
|
struct timeval rb_time_timeval(VALUE);
|
||
|
#endif
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
%}
|
||
|
|
||
|
%typemap(in) struct timeval *INPUT (struct timeval temp)
|
||
|
{
|
||
|
if (NIL_P($input))
|
||
|
$1 = NULL;
|
||
|
else {
|
||
|
temp = rb_time_timeval($input);
|
||
|
$1 = &temp;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
%typemap(in,numinputs=0) struct timeval *OUTPUT(struct timeval temp)
|
||
|
{
|
||
|
$1 = &temp;
|
||
|
}
|
||
|
|
||
|
%typemap(argout) struct timeval *OUTPUT
|
||
|
{
|
||
|
$result = rb_time_new($1->tv_sec, $1->tv_usec);
|
||
|
}
|
||
|
|
||
|
%typemap(out) struct timeval *
|
||
|
{
|
||
|
$result = rb_time_new($1->tv_sec, $1->tv_usec);
|
||
|
}
|
||
|
|
||
|
%typemap(out) struct timespec *
|
||
|
{
|
||
|
$result = rb_time_new($1->tv_sec, $1->tv_nsec / 1000);
|
||
|
}
|
||
|
|
||
|
// time_t
|
||
|
%typemap(in) time_t
|
||
|
{
|
||
|
if (NIL_P($input))
|
||
|
$1 = (time_t)-1;
|
||
|
else
|
||
|
$1 = NUM2LONG(rb_funcall($input, rb_intern("tv_sec"), 0));
|
||
|
}
|
||
|
|
||
|
%typemap(out) time_t
|
||
|
{
|
||
|
$result = rb_time_new($1, 0);
|
||
|
}
|