{"action":"opened","issue":{"url":"https://api.github.com/repos/openfl/lime/issues/855","repository_url":"https://api.github.com/repos/openfl/lime","labels_url":"https://api.github.com/repos/openfl/lime/issues/855/labels{/name}","comments_url":"https://api.github.com/repos/openfl/lime/issues/855/comments","events_url":"https://api.github.com/repos/openfl/lime/issues/855/events","html_url":"https://github.com/openfl/lime/issues/855","id":194814879,"number":855,"title":"API design of Cairo and CURL","user":{"login":"vroad","id":396351,"avatar_url":"https://avatars.githubusercontent.com/u/396351?v=3","gravatar_id":"","url":"https://api.github.com/users/vroad","html_url":"https://github.com/vroad","followers_url":"https://api.github.com/users/vroad/followers","following_url":"https://api.github.com/users/vroad/following{/other_user}","gists_url":"https://api.github.com/users/vroad/gists{/gist_id}","starred_url":"https://api.github.com/users/vroad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vroad/subscriptions","organizations_url":"https://api.github.com/users/vroad/orgs","repos_url":"https://api.github.com/users/vroad/repos","events_url":"https://api.github.com/users/vroad/events{/privacy}","received_events_url":"https://api.github.com/users/vroad/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-12-11T05:55:30Z","updated_at":"2016-12-11T05:55:30Z","closed_at":null,"body":"Why does CURL classes need handle param to call APIs while cairo doesn't?\r\nDoesn't it make more sense to store this inside class, like Cairo?\r\n\r\nI'm not sure why abstracts are used in both CURL and cairo either, because using abstract here doesn't seem to help much here. As it casts implicitly from anything(since `CFFIPointer` is just a typedef of `Dynamic`) you may end up using wrong value as a handle.\r\n\r\nThere are things that cannot be done in abstract classes, though you may not consider these useful in this case.\r\n - Type checking with `Std.is`, casting, and inheritance (might be useful for cairo surfaces?)\r\n - Obtaining list of methods and calling them via reflections (might be useful for scripting)\r\n - Cannot be easily shared across modules in modular mode\r\n\r\nAt least abstracts are not better in every way."}}
{"actor":{"display_login":"vroad"}}