1 #ifndef INTERNAL_STRUCT_H
2 #define INTERNAL_STRUCT_H
36 #define RSTRUCT(obj) ((struct RStruct *)(obj))
54 #define RSTRUCT_LEN internal_RSTRUCT_LEN
55 #define RSTRUCT_SET internal_RSTRUCT_SET
56 #define RSTRUCT_GET internal_RSTRUCT_GET
62 static inline const VALUE *rb_struct_const_heap_ptr(
VALUE st);
63 static inline long RSTRUCT_EMBED_LEN(
VALUE st);
65 static inline int RSTRUCT_LENINT(
VALUE st);
66 static inline const VALUE *RSTRUCT_CONST_PTR(
VALUE st);
71 RSTRUCT_EMBED_LEN(
VALUE st)
74 ret >>= RSTRUCT_EMBED_LEN_SHIFT;
82 return RSTRUCT_EMBED_LEN(st);
85 return RSTRUCT(st)->as.heap.len;
90 RSTRUCT_LENINT(
VALUE st)
95 static inline const VALUE *
96 RSTRUCT_CONST_PTR(
VALUE st)
98 const struct RStruct *p = RSTRUCT(st);
104 return p->as.heap.ptr;
117 return RSTRUCT_CONST_PTR(st)[k];
120 static inline const VALUE *
121 rb_struct_const_heap_ptr(
VALUE st)
124 return RSTRUCT(st)->as.heap.ptr;
@ RUBY_FL_USHIFT
Number of bits in ruby_fl_type that are not open to users.
@ RUBY_FL_USER5
User-defined flag.
@ RUBY_FL_USER3
User-defined flag.
@ RUBY_FL_USER7
User-defined flag.
@ RUBY_FL_USER6
User-defined flag.
@ RUBY_FL_USER2
User-defined flag.
@ RUBY_FL_USER4
User-defined flag.
@ RUBY_FL_USER1
User-defined flag.
#define FL_TEST_RAW
Old name of RB_FL_TEST_RAW.
#define RB_OBJ_WRITE(old, slot, young)
Declaration of a "back" pointer.
int len
Length of the buffer.
#define rb_long2int
Just another name of rb_long2int_inline.
static long RSTRUCT_LEN(VALUE st)
Returns the number of struct members.
static VALUE RSTRUCT_SET(VALUE st, int k, VALUE v)
Resembles Struct#[]=.
static VALUE RSTRUCT_GET(VALUE st, int k)
Resembles Struct#[].
Ruby object's base components.
uintptr_t VALUE
Type that represents a Ruby object.