Thread overview | ||||||
---|---|---|---|---|---|---|
|
October 11, 2017 struct/class generation | ||||
---|---|---|---|---|
| ||||
Hello dear community! I've met a little issue. How can I generate struct or class copying some fields and methods from another struct or class? I've found methods to get fields. They are std.traits.FieldNameTuple and std.traits.FieldTypeTuple but I can't find a method allows getting methods from struct or class. Other words I want to get fields and methods by string values and copy them to my struct. Is it possible? Or do I want something strange? Thanks in advance. Sorry if my English is not clear. |
October 11, 2017 Re: struct/class generation | ||||
---|---|---|---|---|
| ||||
Posted in reply to ANtlord | On 11/10/2017 12:37 PM, ANtlord wrote:
> Hello dear community!
>
> I've met a little issue. How can I generate struct or class copying some fields and methods from another struct or class? I've found methods to get fields. They are std.traits.FieldNameTuple and std.traits.FieldTypeTuple but I can't find a method allows getting methods from struct or class.
>
> Other words I want to get fields and methods by string values and copy them to my struct. Is it possible? Or do I want something strange?
>
> Thanks in advance. Sorry if my English is not clear.
There is no way to get string versions of function bodies.
|
October 11, 2017 Re: struct/class generation | ||||
---|---|---|---|---|
| ||||
Posted in reply to ANtlord | 11.10.2017 14:37, ANtlord пишет:
> Hello dear community!
>
> I've met a little issue. How can I generate struct or class copying some fields and methods from another struct or class? I've found methods to get fields. They are std.traits.FieldNameTuple and std.traits.FieldTypeTuple but I can't find a method allows getting methods from struct or class.
>
> Other words I want to get fields and methods by string values and copy them to my struct. Is it possible? Or do I want something strange?
>
> Thanks in advance. Sorry if my English is not clear.
You need a wrapper, but it would include all fields and methods from base struct/class and you just expose only that you need. So it's quite possible except I don't known how you can exclude needless fields.
But FieldNameTuple etc are not enough, your best friend is __traits(allMember, ...), iterating over its output and making decision what current symbol is and processing it according to its features. It's not trivial but not very complex.
|
October 11, 2017 Re: struct/class generation | ||||
---|---|---|---|---|
| ||||
Posted in reply to drug Attachments:
| If you just want to not repeat fields and methods you can use alias this or mixins: https://run.dlang.io/is/0UkjTe On Wed, Oct 11, 2017 at 2:07 PM, drug via Digitalmars-d-learn < digitalmars-d-learn@puremagic.com> wrote: > 11.10.2017 14:37, ANtlord пишет: > > Hello dear community! >> >> I've met a little issue. How can I generate struct or class copying some fields and methods from another struct or class? I've found methods to get fields. They are std.traits.FieldNameTuple and std.traits.FieldTypeTuple but I can't find a method allows getting methods from struct or class. >> >> Other words I want to get fields and methods by string values and copy them to my struct. Is it possible? Or do I want something strange? >> >> Thanks in advance. Sorry if my English is not clear. >> > You need a wrapper, but it would include all fields and methods from base > struct/class and you just expose only that you need. So it's quite possible > except I don't known how you can exclude needless fields. > But FieldNameTuple etc are not enough, your best friend is > __traits(allMember, ...), iterating over its output and making decision > what current symbol is and processing it according to its features. It's > not trivial but not very complex. > |
Copyright © 1999-2021 by the D Language Foundation