Example #1
0
static VALUE
rb_struct_s_members_m(VALUE klass)
{
    VALUE members = rb_struct_s_members(klass);

    return rb_ary_dup(members);
}
Example #2
0
static VALUE
rb_struct_s_members_m(VALUE klass)
{
#if WITH_OBJC
    return rb_ary_dup(rb_struct_s_members(klass));
#else
    VALUE members, ary;
    VALUE *p, *pend;

    members = rb_struct_s_members(klass);
    ary = rb_ary_new2(RARRAY_LEN(members));
    p = RARRAY_PTR(members); pend = p + RARRAY_LEN(members);
    while (p < pend) {
	rb_ary_push(ary, *p);
	p++;
    }

    return ary;
#endif
}
Example #3
0
VALUE
rb_struct_members(VALUE s)
{
    VALUE members = rb_struct_s_members(rb_obj_class(s));

    if (RSTRUCT_LEN(s) != RARRAY_LEN(members)) {
	rb_raise(rb_eTypeError, "struct size differs (%ld required %ld given)",
		 RARRAY_LEN(members), RSTRUCT_LEN(s));
    }
    return members;
}
Example #4
0
VALUE
rb_struct_members(VALUE s)
{
    VALUE members = rb_struct_s_members(rb_obj_class(s));

    if (RSTRUCT(s)->len != RARRAY(members)->len) {
	rb_raise(rb_eTypeError, "struct size differs (%d required %d given)",
		 RARRAY(members)->len, RSTRUCT(s)->len);
    }
    return members;
}
Example #5
0
/*
 * call-seq:
 *    ProcTable.fields
 *
 * Returns an array of fields that each ProcTableStruct will contain.  This
 * may be useful if you want to know in advance what fields are available
 * without having to perform at least one read of the /proc table.
 */
static VALUE pt_fields(VALUE klass){
  VALUE v_array = rb_ary_new();

  VALUE v_members = rb_struct_s_members(sProcStruct), v_member;
  long size = RARRAY_LEN(v_members);
  int i;

  for(i = 0; i < size; i++) {
    v_member = rb_funcall(rb_ary_entry(v_members, i), rb_intern("to_s"), 0);
    rb_ary_push(v_array, v_member);
  }

  return v_array;
}
Example #6
0
static VALUE
rb_struct_s_members_m(VALUE klass)
{
    VALUE members, ary;
    VALUE *p, *pend;

    members = rb_struct_s_members(klass);
    ary = rb_ary_new2(RARRAY_LEN(members));
    p = RARRAY_PTR(members); pend = p + RARRAY_LEN(members);
    while (p < pend) {
	rb_ary_push(ary, *p);
	p++;
    }

    return ary;
}
Example #7
0
static VALUE
rb_struct_s_members_m(VALUE klass)
{
    VALUE members, ary;
    VALUE *p, *pend;

    members = rb_struct_s_members(klass);
    ary = rb_ary_new2(RARRAY(members)->len);
    p = RARRAY(members)->ptr; pend = p + RARRAY(members)->len;
    while (p < pend) {
	rb_ary_push(ary, rb_str_new2(rb_id2name(SYM2ID(*p))));
	p++;
    }

    return ary;
}
Example #8
0
static VALUE struct_spec_rb_struct_s_members(VALUE self, VALUE klass)
{
  return rb_ary_dup(rb_struct_s_members(klass));
}