類別 Fiddle::Pinned
公開類別方法
Fiddle::Pinned.new(object) → pinned_object 按一下以切換來源
建立新的釘選物件參考。Fiddle::Pinned
實例會防止 GC
移動 object
。
static VALUE initialize(VALUE self, VALUE ref) { struct pinned_data *data; TypedData_Get_Struct(self, struct pinned_data, &pinned_data_type, data); RB_OBJ_WRITE(self, &data->ptr, ref); return self; }
公開實例方法
clear 按一下以切換來源
清除對此釘選物件的參考。
static VALUE clear(VALUE self) { struct pinned_data *data; TypedData_Get_Struct(self, struct pinned_data, &pinned_data_type, data); data->ptr = 0; return self; }
cleared? 按一下以切換來源
如果已清除參考,則傳回 true,否則傳回 false。
static VALUE cleared_p(VALUE self) { struct pinned_data *data; TypedData_Get_Struct(self, struct pinned_data, &pinned_data_type, data); if (data->ptr) { return Qfalse; } else { return Qtrue; } }
ref 按一下以切換來源
傳回此釘選實例所參考的物件。
static VALUE ref(VALUE self) { struct pinned_data *data; TypedData_Get_Struct(self, struct pinned_data, &pinned_data_type, data); if (data->ptr) { return data->ptr; } else { rb_raise(rb_eFiddleClearedReferenceError, "`ref` called on a cleared object"); } }