Class: QML::MetaClass

Inherits:
Object
  • Object
show all
Defined in:
ext/qml/meta_class.c

Instance Method Summary collapse

Instance Method Details

#add_method(name, arity) ⇒ Object


179
180
181
182
183
# File 'ext/qml/meta_class.c', line 179

static VALUE meta_class_add_method(VALUE self, VALUE name, VALUE arity) {
    qmlbind_metaclass *metaclass = rbqml_get_metaclass(self);
    qmlbind_metaclass_add_method(metaclass, rb_id2name(SYM2ID(name)), NUM2INT(arity));
    return Qnil;
}

#add_property(name, notifier) ⇒ Object


199
200
201
202
203
# File 'ext/qml/meta_class.c', line 199

static VALUE meta_class_add_property(VALUE self, VALUE name, VALUE notifier) {
    qmlbind_metaclass *metaclass = rbqml_get_metaclass(self);
    qmlbind_metaclass_add_property(metaclass, rb_id2name(SYM2ID(name)), rb_id2name(SYM2ID(notifier)));
    return Qnil;
}

#add_signal(name, params) ⇒ Object


185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'ext/qml/meta_class.c', line 185

static VALUE meta_class_add_signal(VALUE self, VALUE name, VALUE params) {
    qmlbind_metaclass *metaclass = rbqml_get_metaclass(self);

    int arity = RARRAY_LEN(params);

    const char **paramStrs = alloca(arity * sizeof(char *));
    for (int i = 0; i < arity; ++i) {
        paramStrs[i] =  rb_id2name(SYM2ID(RARRAY_AREF(params, i)));
    }

    qmlbind_metaclass_add_signal(metaclass, rb_id2name(SYM2ID(name)), arity, paramStrs);
    return Qnil;
}

#register(uri, versionMajor, versionMinor, qmlName) ⇒ Object


228
229
230
231
232
233
234
235
236
# File 'ext/qml/meta_class.c', line 228

static VALUE meta_class_register(VALUE self, VALUE uri, VALUE versionMajor, VALUE versionMinor, VALUE qmlName) {
    qmlbind_metaclass *metaclass = rbqml_get_metaclass(self);
    qmlbind_metaclass_register(
        metaclass,
        rb_string_value_cstr(&uri),
        NUM2INT(versionMajor), NUM2INT(versionMinor),
        rb_string_value_cstr(&qmlName));
    return self;
}

#wrap(access) ⇒ Object


216
217
218
219
220
221
222
223
224
225
226
# File 'ext/qml/meta_class.c', line 216

VALUE meta_class_wrap(VALUE self, VALUE access) {
    wrap_data data;
    data.engine = rbqml_get_engine(rbqml_engine);
    data.metaclass = rbqml_get_metaclass(self);
    data.handle = (qmlbind_client_object *)access;

    qmlbind_value *wrapped = rb_thread_call_without_gvl(wrap_impl, &data, RUBY_UBF_IO, NULL);
    VALUE ret = rbqml_to_ruby(wrapped);
    qmlbind_value_release(wrapped);
    return ret;
}