class CAWindow

Public Instance Methods

addr2addr0(p1) click to toggle source
yard:

class CAWindow

def addr2addr0 (addr)
end

end

static VALUE
rb_ca_window_addr2addr0 (VALUE self, VALUE raddr)
{
  CAWindow *cw;
  ca_size_t addr = NUM2SIZE(raddr);
  ca_size_t idx[CA_RANK_MAX];
  int8_t i;

  Data_Get_Struct(self, CAWindow, cw);

  ca_addr2index((CArray*)cw, addr, idx);

  addr = 0;
  for (i=0; i<cw->ndim; i++) {
    addr *= cw->size0[i];
    addr += cw->start[i] + idx[i];
  }

  return SIZE2NUM(addr);
}
bounds() click to toggle source
static VALUE
rb_ca_window_get_bounds (VALUE self)
{
  CAWindow *cw;
  Data_Get_Struct(self, CAWindow, cw);
  return SIZE2NUM(cw->bounds);
}
fill_value() click to toggle source
static VALUE
rb_ca_window_get_fill_value (VALUE self)
{
  CAWindow *cw;
  Data_Get_Struct(self, CAWindow, cw);
  return rb_ca_ptr2obj(self, cw->fill);
}
fill_value=(p1) click to toggle source
yard:

class CAWindow

def fill_value
end
def fill_value= (val)
end

end

static VALUE
rb_ca_window_set_fill_value (VALUE self, VALUE rfval)
{
  CAWindow *cw;
  Data_Get_Struct(self, CAWindow, cw);
  rb_ca_obj2ptr(self, rfval, cw->fill);
  return Qnil;
}
index2addr0(*args) click to toggle source
yard:

class CAWindow

def index2addr0 (idx)
end

end

static VALUE
rb_ca_window_idx2addr0 (int argc, VALUE *argv, VALUE self)
{
  CAWindow *cw;
  ca_size_t addr;
  int8_t i;
  ca_size_t idxi;

  Data_Get_Struct(self, CAWindow, cw);

  if ( argc != cw->ndim ) {
    rb_raise(rb_eArgError,
             "invalid # of arguments (should be <%i>)", cw->ndim);
  }

  addr = 0;
  for (i=0; i<cw->ndim; i++) {
    idxi = NUM2SIZE(argv[i]);
    CA_CHECK_INDEX(idxi, cw->dim[i]);
    addr = cw->size0[i] * addr + cw->start[i] + idxi;
  }

  if ( addr < 0 || addr >= cw->parent->elements ) {
    return Qnil;
  }
  else {
    return SIZE2NUM(addr);
  }
}
initialize_copy(p1) click to toggle source
static VALUE
rb_ca_window_initialize_copy (VALUE self, VALUE other)
{
  CAWindow *ca, *cs;

  Data_Get_Struct(self,  CAWindow, ca);
  Data_Get_Struct(other, CAWindow, cs);

  ca_window_setup(ca, cs->parent, cs->start, cs->count, cs->bounds, cs->fill);

  return self;
}
move(*args) click to toggle source
static VALUE
rb_ca_window_move (int argc, VALUE *argv, VALUE self)
{
  CAWindow *cw;
  ca_size_t start;
  int8_t i;

  Data_Get_Struct(self, CAWindow, cw);

  if ( argc != cw->ndim ) {
    rb_raise(rb_eArgError, "invalid # of arguments");
  }

  ca_update_mask(cw);
  for (i=0; i<cw->ndim; i++) {
    start = NUM2SIZE(argv[i]);
    cw->start[i] = start;
    if ( cw->mask ) {
      ((CAWindow*)(cw->mask))->start[i] = start;
    }
  }

  return self;
}