Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
September 29, 2014 find all public properties at compile time | ||||
---|---|---|---|---|
| ||||
Hi, There is a way to determine all public properties (not methods) from a struct/class at compile time? I seen that there are traits to get only methods but not properties. Am I wrong? thanks, Bogdan |
September 30, 2014 Re: find all public properties at compile time | ||||
---|---|---|---|---|
| ||||
Posted in reply to gedaiu | On Monday, 29 September 2014 at 20:21:43 UTC, gedaiu wrote: > Hi, > > There is a way to determine all public properties (not methods) from a struct/class at compile time? > > I seen that there are traits to get only methods but not properties. Am I wrong? > > thanks, > Bogdan You can get the function attributes of the returned methods using std.traits: http://dlang.org/library/std/traits/functionAttributes.html http://dlang.org/library/std/traits/FunctionAttribute.html Vibe's serializer is also a good place to look. The code is a bit intimidating but it's handling a ton of corner cases: https://github.com/rejectedsoftware/vibe.d/blob/master/source/vibe/data/serialization.d#L710 |
September 30, 2014 Re: find all public properties at compile time | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rene Zwanenburg |
Thank you for your response!
I don't think that it helps me...
I wanted to get an array like this [ "a", "b", "c" ] for this class
class test {
}
Bogdan
On Tuesday, 30 September 2014 at 14:20:04 UTC, Rene Zwanenburg wrote:
> On Monday, 29 September 2014 at 20:21:43 UTC, gedaiu wrote:
>> Hi,
>>
>> There is a way to determine all public properties (not methods) from a struct/class at compile time?
>>
>> I seen that there are traits to get only methods but not properties. Am I wrong?
>>
>> thanks,
>> Bogdan
>
> You can get the function attributes of the returned methods using std.traits:
>
> http://dlang.org/library/std/traits/functionAttributes.html
> http://dlang.org/library/std/traits/FunctionAttribute.html
>
> Vibe's serializer is also a good place to look. The code is a bit intimidating but it's handling a ton of corner cases:
>
> https://github.com/rejectedsoftware/vibe.d/blob/master/source/vibe/data/serialization.d#L710
|
September 30, 2014 Re: find all public properties at compile time | ||||
---|---|---|---|---|
| ||||
Posted in reply to Rene Zwanenburg | [sorry... this is the edit for the prev post]
Thank you for your response!
I don't think that it helps me...
I wanted to get an array like this [ "a", "b", "c" ] for this
class
class test {
int a;
string b;
double c;
}
Bogdan
On Tuesday, 30 September 2014 at 14:20:04 UTC, Rene Zwanenburg wrote:
> On Monday, 29 September 2014 at 20:21:43 UTC, gedaiu wrote:
>> Hi,
>>
>> There is a way to determine all public properties (not methods) from a struct/class at compile time?
>>
>> I seen that there are traits to get only methods but not properties. Am I wrong?
>>
>> thanks,
>> Bogdan
>
> You can get the function attributes of the returned methods using std.traits:
>
> http://dlang.org/library/std/traits/functionAttributes.html
> http://dlang.org/library/std/traits/FunctionAttribute.html
>
> Vibe's serializer is also a good place to look. The code is a bit intimidating but it's handling a ton of corner cases:
>
> https://github.com/rejectedsoftware/vibe.d/blob/master/source/vibe/data/serialization.d#L710
|
September 30, 2014 Re: find all public properties at compile time | ||||
---|---|---|---|---|
| ||||
Posted in reply to gedaiu | On Tuesday, 30 September 2014 at 20:04:29 UTC, gedaiu wrote:
> [sorry... this is the edit for the prev post]
>
> Thank you for your response!
>
> I don't think that it helps me...
>
> I wanted to get an array like this [ "a", "b", "c" ] for this
> class
>
> class test {
>
> int a;
> string b;
> double c;
>
> }
import std.typetuple: staticMap;
enum stringOf(alias thing) = thing.stringof;
static assert([staticMap!(stringOf, test.tupleof)] == ["a", "b",
"c"]);
|
September 30, 2014 Re: find all public properties at compile time | ||||
---|---|---|---|---|
| ||||
Posted in reply to anonymous | On 2014-09-30 22:19, anonymous wrote: > import std.typetuple: staticMap; > enum stringOf(alias thing) = thing.stringof; It's better to use __traits(identifier) instead of .stringof. -- /Jacob Carlborg |
Copyright © 1999-2021 by the D Language Foundation