Concrete class is only used to call static member of NativeMethod. they don't
need any inheritance and implementation of c functions.
Depends on D9893
Concrete class is only used to call static member of NativeMethod. they don't
need any inheritance and implementation of c functions.
Depends on D9893
ninja test
Automatic diff as part of commit; lint not applicable. |
Automatic diff as part of commit; unit tests not applicable. |
I'm not sure we can remove all these functions from the Concrete classes yet.
For example, an hypothetical scenario:
In this case we would rely on the Concrete class to be able to provide the C# user an instance that implements this interface. It would just wrap the Eo pointer like a regular generated class.
I'm afraid we did not have such test case in our test (thus this patch worked) (or better comments explaining the reasoning for keeping these classes around).
PS: Except for the rebase, looks good and tests passes.
src/bin/eolian_mono/eolian/mono/klass.hh | ||
---|---|---|
196–197 | There is a small conflict in this line after D9725 was merged. (It changed from sealed public to public sealed). |
I would like to make sure that API user can't make non-generated class that only have generated interfaces without EoWrapper like that,
public class MyModel : Efl.IModel { }
Because API user can't implement NativeHandle and NativeClass in Efl.Eo.IWrapper that all generated interfaces inherit from.
There are 2 instantiation cases of non-generated class inherits from EoWrapper(all non-generated EFL class have to inherits from EoWrapper by what i said above).
So, when Globals.CreateWrapperFor is called to get the actual Efl_Class * of this instance, Globals.GetWrapperSupervisor(handle) always return proper ws.Target.