Example #1
0
static mrb_value
mrb_time_minus(mrb_state *mrb, mrb_value self)
{
  mrb_float f;
  mrb_value other;
  struct mrb_time *tm, *tm2;

  mrb_get_args(mrb, "o", &other);
  tm = mrb_get_datatype(mrb, self, &mrb_time_type);
  if (!tm) return mrb_nil_value();

  tm2 = mrb_get_datatype(mrb, other, &mrb_time_type);
  if (tm2) {
    f = (mrb_float)(tm->sec - tm2->sec)
      + (mrb_float)(tm->usec - tm2->usec) / 1.0e6;
    return mrb_float_value(f);
  }
  else {
    mrb_float f, f2;
    mrb_get_args(mrb, "f", &f2);

    f = ((mrb_float)tm->sec + (mrb_float)tm->usec/1.0e6);
    return mrb_time_make(mrb, mrb_obj_class(mrb, self), f-f2, tm->timezone);
  }
}
Example #2
0
File: time.c Project: Asmod4n/mruby
/* Creates an instance of time at the given time in seconds, etc. */
static mrb_value
mrb_time_at(mrb_state *mrb, mrb_value self)
{
  mrb_float f, f2 = 0;

  mrb_get_args(mrb, "f|f", &f, &f2);
  return mrb_time_make(mrb, mrb_class_ptr(self), f, f2, MRB_TIMEZONE_LOCAL);
}
Example #3
0
File: time.c Project: Asmod4n/mruby
static mrb_value
mrb_time_plus(mrb_state *mrb, mrb_value self)
{
  mrb_float f;
  struct mrb_time *tm;

  mrb_get_args(mrb, "f", &f);
  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);
  return mrb_time_make(mrb, mrb_obj_class(mrb, self), (double)tm->sec+f, (double)tm->usec, tm->timezone);
}
Example #4
0
static mrb_value
mrb_time_plus(mrb_state *mrb, mrb_value self)
{
  mrb_float f;
  struct mrb_time *tm;

  mrb_get_args(mrb, "f", &f);
  tm = (struct mrb_time *)mrb_get_datatype(mrb, self, &mrb_time_type);
  if (!tm) return mrb_nil_value();
  return mrb_time_make(mrb, mrb_obj_class(mrb, self), (double)tm->sec+f, tm->usec, tm->timezone);
}
Example #5
0
static mrb_value
mrb_time_plus(mrb_state *mrb, mrb_value self)
{
  mrb_float f;
  struct mrb_time *tm;

  mrb_get_args(mrb, "f", &f);
  tm = mrb_get_datatype(mrb, self, &mrb_time_type);
  if (!tm) return mrb_nil_value();
  f += tm->sec;
  f += (mrb_float)tm->usec / 1.0e6;
  return mrb_time_make(mrb, mrb_obj_class(mrb, self), f, tm->timezone);
}
Example #6
0
File: time.c Project: Asmod4n/mruby
static mrb_value
mrb_time_minus(mrb_state *mrb, mrb_value self)
{
  mrb_float f;
  mrb_value other;
  struct mrb_time *tm, *tm2;

  mrb_get_args(mrb, "o", &other);
  tm = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time);

  tm2 = DATA_CHECK_GET_PTR(mrb, other, &mrb_time_type, struct mrb_time);
  if (tm2) {
    f = (mrb_float)(tm->sec - tm2->sec)
      + (mrb_float)(tm->usec - tm2->usec) / 1.0e6;
    return mrb_float_value(mrb, f);
  }
  else {
    mrb_get_args(mrb, "f", &f);
    return mrb_time_make(mrb, mrb_obj_class(mrb, self), (double)tm->sec-f, (double)tm->usec, tm->timezone);
  }
}
Example #7
0
static mrb_value
mrb_time_minus(mrb_state *mrb, mrb_value self)
{
  mrb_float f;
  mrb_value other;
  struct mrb_time *tm, *tm2;

  mrb_get_args(mrb, "o", &other);
  tm = (struct mrb_time*)mrb_data_get_ptr(mrb, self, &mrb_time_type);
  if (!tm) return mrb_nil_value();

  tm2 = (struct mrb_time*)mrb_data_get_ptr(mrb, other, &mrb_time_type);
  if (tm2) {
    f = (mrb_float)(tm->sec - tm2->sec)
      + (mrb_float)(tm->usec - tm2->usec) / 1.0e6;
    return mrb_float_value(mrb, f);
  }
  else {
    mrb_get_args(mrb, "f", &f);
    return mrb_time_make(mrb, mrb_obj_class(mrb, self), (double)tm->sec-f, tm->usec, tm->timezone);
  }
}