{"action":"created","issue":{"url":"https://api.github.com/repos/seanchas116/libqmlbind/issues/15","repository_url":"https://api.github.com/repos/seanchas116/libqmlbind","labels_url":"https://api.github.com/repos/seanchas116/libqmlbind/issues/15/labels{/name}","comments_url":"https://api.github.com/repos/seanchas116/libqmlbind/issues/15/comments","events_url":"https://api.github.com/repos/seanchas116/libqmlbind/issues/15/events","html_url":"https://github.com/seanchas116/libqmlbind/issues/15","id":144396316,"number":15,"title":"Refactor qmlbind_interface, qmlbind_exporter, qmlbind_interface_handlers and qmlbind_backref","user":{"login":"florianjacob","id":1109959,"avatar_url":"https://avatars.githubusercontent.com/u/1109959?v=3","gravatar_id":"","url":"https://api.github.com/users/florianjacob","html_url":"https://github.com/florianjacob","followers_url":"https://api.github.com/users/florianjacob/followers","following_url":"https://api.github.com/users/florianjacob/following{/other_user}","gists_url":"https://api.github.com/users/florianjacob/gists{/gist_id}","starred_url":"https://api.github.com/users/florianjacob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/florianjacob/subscriptions","organizations_url":"https://api.github.com/users/florianjacob/orgs","repos_url":"https://api.github.com/users/florianjacob/repos","events_url":"https://api.github.com/users/florianjacob/events{/privacy}","received_events_url":"https://api.github.com/users/florianjacob/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"florianjacob","id":1109959,"avatar_url":"https://avatars.githubusercontent.com/u/1109959?v=3","gravatar_id":"","url":"https://api.github.com/users/florianjacob","html_url":"https://github.com/florianjacob","followers_url":"https://api.github.com/users/florianjacob/followers","following_url":"https://api.github.com/users/florianjacob/following{/other_user}","gists_url":"https://api.github.com/users/florianjacob/gists{/gist_id}","starred_url":"https://api.github.com/users/florianjacob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/florianjacob/subscriptions","organizations_url":"https://api.github.com/users/florianjacob/orgs","repos_url":"https://api.github.com/users/florianjacob/repos","events_url":"https://api.github.com/users/florianjacob/events{/privacy}","received_events_url":"https://api.github.com/users/florianjacob/received_events","type":"User","site_admin":false},"milestone":null,"comments":14,"created_at":"2016-03-29T21:38:46Z","updated_at":"2016-04-05T22:53:08Z","closed_at":null,"body":"As discussed in https://github.com/seanchas116/libqmlbind/pull/9#issuecomment-200306353, `qmlbind_interface` and `qmlbind_interface_handlers` can probably merged into one thing from the perspective of libqmlbind's API. The exporter could then directly take the `interface_handlers` and be renamed into something like `metaobject_builder`, to make its intent more obvious."},"comment":{"url":"https://api.github.com/repos/seanchas116/libqmlbind/issues/comments/206024447","html_url":"https://github.com/seanchas116/libqmlbind/issues/15#issuecomment-206024447","issue_url":"https://api.github.com/repos/seanchas116/libqmlbind/issues/15","id":206024447,"user":{"login":"florianjacob","id":1109959,"avatar_url":"https://avatars.githubusercontent.com/u/1109959?v=3","gravatar_id":"","url":"https://api.github.com/users/florianjacob","html_url":"https://github.com/florianjacob","followers_url":"https://api.github.com/users/florianjacob/followers","following_url":"https://api.github.com/users/florianjacob/following{/other_user}","gists_url":"https://api.github.com/users/florianjacob/gists{/gist_id}","starred_url":"https://api.github.com/users/florianjacob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/florianjacob/subscriptions","organizations_url":"https://api.github.com/users/florianjacob/orgs","repos_url":"https://api.github.com/users/florianjacob/repos","events_url":"https://api.github.com/users/florianjacob/events{/privacy}","received_events_url":"https://api.github.com/users/florianjacob/received_events","type":"User","site_admin":false},"created_at":"2016-04-05T22:53:08Z","updated_at":"2016-04-05T22:53:08Z","body":"I'm quite happy with the general results now, next is to find out why https://travis-ci.org/seanchas116/libqmlbind/jobs/121011730 is failing now…\r\n\r\nCode is ready to be reviewed now. I know this turned out to be quite radical, but from my studies of the internal dependencies and lifetimes, I'm quite sure `Backref` and `Interface` were actually not needed anymore in the current code.\r\n\r\n@seanchas116 I just found out how to structure the documentation into modules which makes it possible to combine related structs & functions on one page. I think this is a big improvement. :smile: \r\n\r\n`qmlbind_interface_handlers`, `qmlbind_client_object` and `qmlbind_client_class` went into one module as they're strongly related and the three only types implemented by the client. I'm thinking about a rename of `qmlbind_interface_handlers` now to fit the scheme. @seanchas116 thoughts? Maybe `qmlbind_client_interface`? But I'm not too happy with that.\r\n\r\nAlso, the `qmlbind_engine_new_wrapper(qmlbind_client_object*)` function caught my attention. I found no usage in ruby-qml, but I interpreted its intended useage as to create values that can be used for `qmlbind_value_set_property()`, as reflected in the documentation. The problems I see with it are with the `qmlbind_signal_emitter` inside `qmlbind_client_object*`:\r\n\r\na) where does it come from if the client created the object?\r\n\r\nb) how is it associated with the new `Wrapper` QObject created in `qmlbind_engine_new_wrapper()`?\r\n\r\nSeems to me like signals are actually broken in that case. I think this can be solved by passing the `qmlbind_metaclass` instead and then letting libqmlbind take care of the object creation and `qmlbind_signal_emitter` setup, as it's done when creating objects from registered metaclasses."}}