{"action":"created","issue":{"url":"https://api.github.com/repos/swig/swig/issues/1350","repository_url":"https://api.github.com/repos/swig/swig","labels_url":"https://api.github.com/repos/swig/swig/issues/1350/labels{/name}","comments_url":"https://api.github.com/repos/swig/swig/issues/1350/comments","events_url":"https://api.github.com/repos/swig/swig/issues/1350/events","html_url":"https://github.com/swig/swig/issues/1350","id":381886361,"node_id":"MDU6SXNzdWUzODE4ODYzNjE=","number":1350,"title":"javainterface vs csinterface and csinterface_derived typemaps","user":{"login":"vadz","id":146917,"node_id":"MDQ6VXNlcjE0NjkxNw==","avatar_url":"https://avatars0.githubusercontent.com/u/146917?v=4","gravatar_id":"","url":"https://api.github.com/users/vadz","html_url":"https://github.com/vadz","followers_url":"https://api.github.com/users/vadz/followers","following_url":"https://api.github.com/users/vadz/following{/other_user}","gists_url":"https://api.github.com/users/vadz/gists{/gist_id}","starred_url":"https://api.github.com/users/vadz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vadz/subscriptions","organizations_url":"https://api.github.com/users/vadz/orgs","repos_url":"https://api.github.com/users/vadz/repos","events_url":"https://api.github.com/users/vadz/events{/privacy}","received_events_url":"https://api.github.com/users/vadz/received_events","type":"User","site_admin":false},"labels":[{"id":442106318,"node_id":"MDU6TGFiZWw0NDIxMDYzMTg=","url":"https://api.github.com/repos/swig/swig/labels/documentation","name":"documentation","color":"ffff00","default":false},{"id":23412889,"node_id":"MDU6TGFiZWwyMzQxMjg4OQ==","url":"https://api.github.com/repos/swig/swig/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-11-17T18:08:08Z","updated_at":"2018-11-19T16:31:55Z","closed_at":null,"author_association":"MEMBER","body":"For C#, only `csinterface_derived` typemap is used for the classes deriving from another (exported) class, while for Java the `javainterface` typemap seems to be used in all cases. I wonder if there is any deep reason for this difference? If there is, I think `csinterface_derived` should be documented more prominently, as currently it's only mentioned in passing in the section about typemaps differing from Java ones only by name. If not, it would be nice to use csinterface in all cases. In either case, it would be great if SWIG could give a warning when `csinterface` is used but has no effect because only `csinterface_derived` is taken into account."},"comment":{"url":"https://api.github.com/repos/swig/swig/issues/comments/439955674","html_url":"https://github.com/swig/swig/issues/1350#issuecomment-439955674","issue_url":"https://api.github.com/repos/swig/swig/issues/1350","id":439955674,"node_id":"MDEyOklzc3VlQ29tbWVudDQzOTk1NTY3NA==","user":{"login":"vadz","id":146917,"node_id":"MDQ6VXNlcjE0NjkxNw==","avatar_url":"https://avatars0.githubusercontent.com/u/146917?v=4","gravatar_id":"","url":"https://api.github.com/users/vadz","html_url":"https://github.com/vadz","followers_url":"https://api.github.com/users/vadz/followers","following_url":"https://api.github.com/users/vadz/following{/other_user}","gists_url":"https://api.github.com/users/vadz/gists{/gist_id}","starred_url":"https://api.github.com/users/vadz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vadz/subscriptions","organizations_url":"https://api.github.com/users/vadz/orgs","repos_url":"https://api.github.com/users/vadz/repos","events_url":"https://api.github.com/users/vadz/events{/privacy}","received_events_url":"https://api.github.com/users/vadz/received_events","type":"User","site_admin":false},"created_at":"2018-11-19T16:31:55Z","updated_at":"2018-11-19T16:31:55Z","author_association":"MEMBER","body":"I see, thanks for the explanation. But could it be better to have `csinterface_base_only` instead, which would contain `IDisposable` by default? This would be less surprising IMHO.\r\n\r\nOTOH I also wonder why isn't `IDisposable` just hardcoded in the first place, I don't think things can work without it, can they? And with the current approach I just to have to always use it in my own typemaps, e.g.\r\n\r\n    %typemap(csinterfaces) Foo %{\r\n      global::System.IDisposable, global::System.IEquatable<Foo>\r\n    %}\r\n\r\nwhen I'd prefer to just specify `IEquatable`."}}
{"actor":{"display_login":"vadz"}}