Spec-Zone.ru › Ruby 3.3

class Fiddle::Pinned

Parent:
Object

Публичные Классовые Методы

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.

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");
    }
}

Возвращает объект, на который ссылается эта прикреплённая ссылка.

Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API