Ruby  2.0.0p451(2014-02-24revision45167)
Macros | Functions | Variables
struct.c File Reference
#include "ruby/ruby.h"
#include "internal.h"
Include dependency graph for struct.c:

Go to the source code of this file.

Macros

#define numberof(array)   (int)(sizeof(array) / sizeof((array)[0]))
 
#define N_REF_FUNC   numberof(ref_func)
 

Functions

static VALUE struct_alloc (VALUE)
 
static VALUE struct_ivar_get (VALUE c, ID id)
 
VALUE rb_struct_iv_get (VALUE c, const char *name)
 
VALUE rb_struct_s_members (VALUE klass)
 
VALUE rb_struct_members (VALUE s)
 
static VALUE rb_struct_s_members_m (VALUE klass)
 
static VALUE rb_struct_members_m (VALUE obj)
 
VALUE rb_struct_getmember (VALUE obj, ID id)
 
static VALUE rb_struct_ref (VALUE obj)
 
static VALUE rb_struct_ref0 (VALUE obj)
 
static VALUE rb_struct_ref1 (VALUE obj)
 
static VALUE rb_struct_ref2 (VALUE obj)
 
static VALUE rb_struct_ref3 (VALUE obj)
 
static VALUE rb_struct_ref4 (VALUE obj)
 
static VALUE rb_struct_ref5 (VALUE obj)
 
static VALUE rb_struct_ref6 (VALUE obj)
 
static VALUE rb_struct_ref7 (VALUE obj)
 
static VALUE rb_struct_ref8 (VALUE obj)
 
static VALUE rb_struct_ref9 (VALUE obj)
 
static void rb_struct_modify (VALUE s)
 
static VALUE rb_struct_set (VALUE obj, VALUE val)
 
static VALUE anonymous_struct (VALUE klass)
 
static VALUE new_struct (VALUE name, VALUE super)
 
static VALUE setup_struct (VALUE nstr, VALUE members)
 
VALUE rb_struct_alloc_noinit (VALUE klass)
 
VALUE rb_struct_define_without_accessor (const char *class_name, VALUE super, rb_alloc_func_t alloc,...)
 
VALUE rb_struct_define (const char *name,...)
 
static VALUE rb_struct_s_def (int argc, VALUE *argv, VALUE klass)
 
static long num_members (VALUE klass)
 
static VALUE rb_struct_initialize_m (int argc, VALUE *argv, VALUE self)
 
VALUE rb_struct_initialize (VALUE self, VALUE values)
 
VALUE rb_struct_alloc (VALUE klass, VALUE values)
 
VALUE rb_struct_new (VALUE klass,...)
 
static VALUE rb_struct_size (VALUE s)
 
static VALUE rb_struct_each (VALUE s)
 
static VALUE rb_struct_each_pair (VALUE s)
 
static VALUE inspect_struct (VALUE s, VALUE dummy, int recur)
 
static VALUE rb_struct_inspect (VALUE s)
 
static VALUE rb_struct_to_a (VALUE s)
 
static VALUE rb_struct_to_h (VALUE s)
 
VALUE rb_struct_init_copy (VALUE copy, VALUE s)
 
static VALUE rb_struct_aref_id (VALUE s, ID id)
 
VALUE rb_struct_aref (VALUE s, VALUE idx)
 
static VALUE rb_struct_aset_id (VALUE s, ID id, VALUE val)
 
VALUE rb_struct_aset (VALUE s, VALUE idx, VALUE val)
 
static VALUE struct_entry (VALUE s, long n)
 
static VALUE rb_struct_values_at (int argc, VALUE *argv, VALUE s)
 
static VALUE rb_struct_select (int argc, VALUE *argv, VALUE s)
 
static VALUE recursive_equal (VALUE s, VALUE s2, int recur)
 
static VALUE rb_struct_equal (VALUE s, VALUE s2)
 
static VALUE recursive_hash (VALUE s, VALUE dummy, int recur)
 
static VALUE rb_struct_hash (VALUE s)
 
static VALUE recursive_eql (VALUE s, VALUE s2, int recur)
 
static VALUE rb_struct_eql (VALUE s, VALUE s2)
 
void Init_Struct (void)
 

Variables

VALUE rb_cStruct
 
static ID id_members
 
static VALUE(*const ref_func [])(VALUE)
 

Macro Definition Documentation

#define N_REF_FUNC   numberof(ref_func)

Definition at line 129 of file struct.c.

Referenced by rb_struct_new(), and setup_struct().

#define numberof (   array)    (int)(sizeof(array) / sizeof((array)[0]))

Definition at line 128 of file struct.c.

Referenced by rb_struct_new().

Function Documentation

static VALUE anonymous_struct ( VALUE  klass)
static
void Init_Struct ( void  )
static VALUE inspect_struct ( VALUE  s,
VALUE  dummy,
int  recur 
)
static
static VALUE new_struct ( VALUE  name,
VALUE  super 
)
static
static long num_members ( VALUE  klass)
static
VALUE rb_struct_alloc ( VALUE  klass,
VALUE  values 
)

Definition at line 435 of file struct.c.

References RARRAY_LENINT, RARRAY_PTR, and rb_class_new_instance().

VALUE rb_struct_alloc_noinit ( VALUE  klass)

Definition at line 233 of file struct.c.

References struct_alloc().

Referenced by range_alloc().

VALUE rb_struct_aref ( VALUE  s,
VALUE  idx 
)
static VALUE rb_struct_aref_id ( VALUE  s,
ID  id 
)
static
VALUE rb_struct_aset ( VALUE  s,
VALUE  idx,
VALUE  val 
)
static VALUE rb_struct_aset_id ( VALUE  s,
ID  id,
VALUE  val 
)
static
VALUE rb_struct_define ( const char *  name,
  ... 
)
VALUE rb_struct_define_without_accessor ( const char *  class_name,
VALUE  super,
rb_alloc_func_t  alloc,
  ... 
)
static VALUE rb_struct_each ( VALUE  s)
static

Definition at line 486 of file struct.c.

References i, rb_struct_size(), rb_yield(), RETURN_SIZED_ENUMERATOR, RSTRUCT_LEN, and RSTRUCT_PTR.

Referenced by Init_Struct().

static VALUE rb_struct_each_pair ( VALUE  s)
static
static VALUE rb_struct_eql ( VALUE  s,
VALUE  s2 
)
static
static VALUE rb_struct_equal ( VALUE  s,
VALUE  s2 
)
static
VALUE rb_struct_getmember ( VALUE  obj,
ID  id 
)

Definition at line 91 of file struct.c.

References i, ID2SYM, RARRAY_LEN, RARRAY_PTR, rb_id2name(), rb_name_error(), rb_struct_members(), RSTRUCT_PTR, and UNREACHABLE.

Referenced by rb_struct_ref().

static VALUE rb_struct_hash ( VALUE  s)
static

Definition at line 931 of file struct.c.

References rb_exec_recursive_outer(), and recursive_hash().

Referenced by Init_Struct().

VALUE rb_struct_init_copy ( VALUE  copy,
VALUE  s 
)

Definition at line 640 of file struct.c.

References MEMCPY, OBJ_INIT_COPY, rb_eTypeError, rb_raise(), RSTRUCT_LEN, and RSTRUCT_PTR.

Referenced by Init_Struct().

VALUE rb_struct_initialize ( VALUE  self,
VALUE  values 
)

Definition at line 407 of file struct.c.

References RARRAY_LENINT, RARRAY_PTR, and rb_struct_initialize_m().

Referenced by r_object0().

static VALUE rb_struct_initialize_m ( int  argc,
VALUE argv,
VALUE  self 
)
static
static VALUE rb_struct_inspect ( VALUE  s)
static

Definition at line 590 of file struct.c.

References inspect_struct(), and rb_exec_recursive().

Referenced by Init_Struct().

VALUE rb_struct_iv_get ( VALUE  c,
const char *  name 
)

Definition at line 33 of file struct.c.

References rb_intern, and struct_ivar_get().

VALUE rb_struct_members ( VALUE  s)
static VALUE rb_struct_members_m ( VALUE  obj)
static

Definition at line 85 of file struct.c.

References rb_obj_class(), and rb_struct_s_members_m().

Referenced by Init_Struct().

static void rb_struct_modify ( VALUE  s)
static
VALUE rb_struct_new ( VALUE  klass,
  ... 
)
static VALUE rb_struct_ref ( VALUE  obj)
static

Definition at line 112 of file struct.c.

References rb_frame_this_func(), and rb_struct_getmember().

Referenced by setup_struct().

static VALUE rb_struct_ref0 ( VALUE  obj)
static

Definition at line 117 of file struct.c.

References RSTRUCT_PTR.

static VALUE rb_struct_ref1 ( VALUE  obj)
static

Definition at line 118 of file struct.c.

References RSTRUCT_PTR.

static VALUE rb_struct_ref2 ( VALUE  obj)
static

Definition at line 119 of file struct.c.

References RSTRUCT_PTR.

static VALUE rb_struct_ref3 ( VALUE  obj)
static

Definition at line 120 of file struct.c.

References RSTRUCT_PTR.

static VALUE rb_struct_ref4 ( VALUE  obj)
static

Definition at line 121 of file struct.c.

References RSTRUCT_PTR.

static VALUE rb_struct_ref5 ( VALUE  obj)
static

Definition at line 122 of file struct.c.

References RSTRUCT_PTR.

static VALUE rb_struct_ref6 ( VALUE  obj)
static

Definition at line 123 of file struct.c.

References RSTRUCT_PTR.

static VALUE rb_struct_ref7 ( VALUE  obj)
static

Definition at line 124 of file struct.c.

References RSTRUCT_PTR.

static VALUE rb_struct_ref8 ( VALUE  obj)
static

Definition at line 125 of file struct.c.

References RSTRUCT_PTR.

static VALUE rb_struct_ref9 ( VALUE  obj)
static

Definition at line 126 of file struct.c.

References RSTRUCT_PTR.

static VALUE rb_struct_s_def ( int  argc,
VALUE argv,
VALUE  klass 
)
static
VALUE rb_struct_s_members ( VALUE  klass)
static VALUE rb_struct_s_members_m ( VALUE  klass)
static

Definition at line 65 of file struct.c.

References rb_ary_dup(), and rb_struct_s_members().

Referenced by rb_struct_members_m(), and setup_struct().

static VALUE rb_struct_select ( int  argc,
VALUE argv,
VALUE  s 
)
static
static VALUE rb_struct_set ( VALUE  obj,
VALUE  val 
)
static
static VALUE rb_struct_size ( VALUE  s)
static

Definition at line 986 of file struct.c.

References LONG2FIX, and RSTRUCT_LEN.

Referenced by Init_Struct(), rb_struct_each(), rb_struct_each_pair(), and rb_struct_select().

static VALUE rb_struct_to_a ( VALUE  s)
static

Definition at line 608 of file struct.c.

References rb_ary_new4(), RSTRUCT_LEN, and RSTRUCT_PTR.

Referenced by Init_Struct().

static VALUE rb_struct_to_h ( VALUE  s)
static

Definition at line 626 of file struct.c.

References i, rb_ary_entry(), rb_hash_aset(), rb_hash_new(), rb_struct_members(), RSTRUCT_LEN, and RSTRUCT_PTR.

Referenced by Init_Struct().

static VALUE rb_struct_values_at ( int  argc,
VALUE argv,
VALUE  s 
)
static

Definition at line 819 of file struct.c.

References rb_get_values_at(), RSTRUCT_LEN, and struct_entry().

Referenced by Init_Struct().

static VALUE recursive_eql ( VALUE  s,
VALUE  s2,
int  recur 
)
static

Definition at line 937 of file struct.c.

References i, Qfalse, Qtrue, rb_eql(), RSTRUCT_LEN, and RSTRUCT_PTR.

Referenced by rb_struct_eql().

static VALUE recursive_equal ( VALUE  s,
VALUE  s2,
int  recur 
)
static

Definition at line 858 of file struct.c.

References i, Qfalse, Qtrue, rb_equal(), RSTRUCT_LEN, and RSTRUCT_PTR.

Referenced by rb_struct_equal().

static VALUE recursive_hash ( VALUE  s,
VALUE  dummy,
int  recur 
)
static
static VALUE setup_struct ( VALUE  nstr,
VALUE  members 
)
static
static VALUE struct_alloc ( VALUE  klass)
static
static VALUE struct_entry ( VALUE  s,
long  n 
)
static

Definition at line 797 of file struct.c.

References LONG2NUM, and rb_struct_aref().

Referenced by rb_struct_values_at().

static VALUE struct_ivar_get ( VALUE  c,
ID  id 
)
inlinestatic

Definition at line 21 of file struct.c.

References Qnil, rb_cStruct, rb_ivar_defined(), rb_ivar_get(), and RCLASS_SUPER.

Referenced by num_members(), rb_struct_iv_get(), and rb_struct_s_members().

Variable Documentation

ID id_members
static
VALUE rb_cStruct

Definition at line 15 of file struct.c.

Referenced by Init_Struct(), rb_struct_define(), and struct_ivar_get().

VALUE(*const ref_func[])(VALUE)
static
Initial value:
= {
}
static VALUE rb_struct_ref3(VALUE obj)
Definition: struct.c:120
static VALUE rb_struct_ref0(VALUE obj)
Definition: struct.c:117
static VALUE rb_struct_ref2(VALUE obj)
Definition: struct.c:119
static VALUE rb_struct_ref6(VALUE obj)
Definition: struct.c:123
static VALUE rb_struct_ref8(VALUE obj)
Definition: struct.c:125
static VALUE rb_struct_ref9(VALUE obj)
Definition: struct.c:126
static VALUE rb_struct_ref4(VALUE obj)
Definition: struct.c:121
static VALUE rb_struct_ref7(VALUE obj)
Definition: struct.c:124
static VALUE rb_struct_ref1(VALUE obj)
Definition: struct.c:118
static VALUE rb_struct_ref5(VALUE obj)
Definition: struct.c:122

Definition at line 131 of file struct.c.

Referenced by setup_struct().