Generating a method using a UDA
Simen Kjærås
simen.kjaras at gmail.com
Wed May 9 11:52:48 UTC 2018
On Wednesday, 9 May 2018 at 10:16:22 UTC, Melvin wrote:
> class SomeNode : GodotScript!Node
> {
> @Signal void testSignal(float a, long b);
> // The declaration above would trigger the generation of
> this line
> void testSignal(float a, long b) {
> owner.emitSignal("testSignal", a, b); }
>
> @Method emitTest()
> {
> testSignal(3.1415, 42);
> }
> }
>
>
> The reason I want to use a UDA is to stay consistent with the
> other UDAs already defined for Properties and Methods. It also
> looks friendlier than using a mixin. Does anyone here have any
> thoughts as to how this could work?
>
> My main issue is injecting that generated method without
> resorting to using a mixin. I was hoping that any code I needed
> could be generated in the template that SomeNode inherits, but
> that doesn't look possible because I can't inspect the subclass
> (for good reason).
I'm afraid a mixin is the only real solution. You could also mark
testSignal as abstract, and have a template generate an
implementation class, but that would pollute every place where
you want to use a SomeNode, with something like SomeNode n =
implement!SomeNode();
--
Simen
More information about the Digitalmars-d-learn
mailing list