Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
July 21, 2017 Check whether string value represents a type | ||||
---|---|---|---|---|
| ||||
I'd love to check whether a string value is the name of a type at run-time. E.g.: string a = "int"; string b = "im no type"; assert( isStringType(a) ); assert( !isStringType(b) ); or struct TestStruct { int test; } string t = "TestStruct"; assert( isStringType(t) ); Is anything like this possible? The goal is to identify whether a string represents a custom type within a package. I'm also trying to iterate over all modules within the package to get the struct name. However, that seems like a struggle... Any ideas?.. |
July 21, 2017 Re: Check whether string value represents a type | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timoses | On 7/21/17 10:21 AM, Timoses wrote:
> I'd love to check whether a string value is the name of a type at run-time.
>
> E.g.:
>
>
> string a = "int";
> string b = "im no type";
> assert( isStringType(a) );
> assert( !isStringType(b) );
>
> or
>
> struct TestStruct
> {
> int test;
> }
>
> string t = "TestStruct";
> assert( isStringType(t) );
>
>
> Is anything like this possible?
>
> The goal is to identify whether a string represents a custom type within a package. I'm also trying to iterate over all modules within the package to get the struct name. However, that seems like a struggle...
>
> Any ideas?..
In order to do this, the list of types must be stored somewhere to compare with at runtime.
At this time, this is not done. You could potentially do this with the RTInfo template, but it would have to be part of a custom druntime.
-Steve
|
July 24, 2017 Re: Check whether string value represents a type | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | On Friday, 21 July 2017 at 14:44:23 UTC, Steven Schveighoffer wrote:
> On 7/21/17 10:21 AM, Timoses wrote:
>> I'd love to check whether a string value is the name of a type at run-time.
>>
>> E.g.:
>>
>>
>> string a = "int";
>> string b = "im no type";
>> assert( isStringType(a) );
>> assert( !isStringType(b) );
>>
>> or
>>
>> struct TestStruct
>> {
>> int test;
>> }
>>
>> string t = "TestStruct";
>> assert( isStringType(t) );
>>
>>
>> Is anything like this possible?
>>
>> The goal is to identify whether a string represents a custom type within a package. I'm also trying to iterate over all modules within the package to get the struct name. However, that seems like a struggle...
>>
>> Any ideas?..
>
> In order to do this, the list of types must be stored somewhere to compare with at runtime.
>
> At this time, this is not done. You could potentially do this with the RTInfo template, but it would have to be part of a custom druntime.
>
> -Steve
Thanks Steve!
That's sound too much of a strugge for a newbie like me : D. I'll probably evaluate and compare the type names as strings then and derive further processing from there.
|
July 24, 2017 Re: Check whether string value represents a type | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timoses | On Friday, 21 July 2017 at 14:21:37 UTC, Timoses wrote: > I'd love to check whether a string value is the name of a type at run-time. > [...] > The goal is to identify whether a string represents a custom type within a package. I'm also trying to iterate over all modules within the package to get the struct name. However, that seems like a struggle... > > Any ideas?.. I used custom Runtime Type Infos for this: https://github.com/BBasile/iz/blob/master/import/iz/rtti.d#L550 Each type for which that's interesting to have extra information is registered. When a type is not registered than it can be considered as not a type. |
July 24, 2017 Re: Check whether string value represents a type | ||||
---|---|---|---|---|
| ||||
Posted in reply to Basile B. | On Monday, 24 July 2017 at 07:08:56 UTC, Basile B. wrote:
> On Friday, 21 July 2017 at 14:21:37 UTC, Timoses wrote:
>> I'd love to check whether a string value is the name of a type at run-time.
>> [...]
>> The goal is to identify whether a string represents a custom type within a package. I'm also trying to iterate over all modules within the package to get the struct name. However, that seems like a struggle...
>>
>> Any ideas?..
>
> I used custom Runtime Type Infos for this:
> https://github.com/BBasile/iz/blob/master/import/iz/rtti.d#L550
> Each type for which that's interesting to have extra information is registered.
> When a type is not registered than it can be considered as not a type.
Awesome, that's helping a lot : D.
|
Copyright © 1999-2021 by the D Language Foundation