| Thread overview | |||||
|---|---|---|---|---|---|
|
June 08, 2018 I want delete or change class's member name on compile-time | ||||
|---|---|---|---|---|
| ||||
Like:
class A
{
string b;
string c;
}
compile-time to:
class A
{
string _b;
string c;
}
or:
class A
{
string c;
}
| ||||
June 08, 2018 Re: I want delete or change class's member name on compile-time | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Brian | On 6/8/18 2:13 PM, Brian wrote:
> Like:
>
> class A
> {
> string b;
> string c;
> }
>
> compile-time to:
>
> class A
> {
> string _b;
> string c;
> }
>
> or:
>
> class A
> {
> string c;
> }
>
Not possible in D. What you are looking for is an AST macro, and D does not have those.
However, you can potentially create another type that mimics everything that A does except for one thing using compile-time introspection. But you won't be able to do that with the member functions.
-Steve
| |||
June 08, 2018 Re: I want delete or change class's member name on compile-time | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Brian | On 06/08/2018 11:13 AM, Brian wrote:
> Like:
>
> class A
> {
> string b;
> string c;
> }
>
> compile-time to:
>
> class A
> {
> string _b;
> string c;
> }
>
> or:
>
> class A
> {
> string c;
> }
>
If these are your classes you can use static if or version:
version = Z; // Can be provided as a compiler switch as well
class A
{
version (X) {
string b;
} else version (Y) {
string _b;
}
string c;
}
void main () {
}
Or with static if:
class A {
static if (some_compile_time_condition) {
string _b;
} else static if (...) {
// ...
} else {
// ...
}
}
Ali
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply