class Fiddle::Pinned
Публичные Классовые Методы
Fiddle::Pinned.new(object) → pinned_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;
} Создайте новую ссылку на прикреплённый объект. Экземпляр Fiddle::Pinned предотвратит перемещение объекта object сборщиком мусора GC.
Публичные Экземплярные Методы
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? Показать исходный код
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;
}
} Возвращает true, если ссылка была очищена, в противном случае возвращает false.
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");
}
} Возвращает объект, на который ссылается эта прикреплённая ссылка.
Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.