On Monday, 28 February 2022 at 11:48:59 UTC, Salih Dincer wrote:
Hi All,

Is there a namespace I should implement in Raylib? For example, I cannot compile without writing Colors at the beginning of the colors: ```Colors.GRAY```

SDB@79

Assuming you mean the raylib-d binding, it implements the values as a named enum, so the `Colors` namespace is required.

https://dlang.org/spec/enum.html#named_enums

If you have a situation where you need to type it multiple times in consecutive code lines, you can use `with`:

```d
with(Colors) {

}
```

Then you can drop the namespace and just used the values. Very useful for switches:

```d
with(Colors) switch(myColor) {

}
```

You can also generate aliases, so that e.g., `LIGHTGRAY` is equivalent to `Colors.LIGHTGRAY`). Just throw this template function in an appropriate module:

```d
enum expandEnum(EnumType, string fqnEnumType = EnumType.stringof) = (){
    string expandEnum;
    foreach(m;__traits(allMembers, EnumType)) {
expandEnum ~= "alias " ~ m ~ " = " ~ fqnEnumType ~ "." ~ m ~ ";";
    }
    return expandEnum;
}();
```

Then you can mixin aliases for any named enum members you'd like:

```d
mixin(expandEnum!Colors);
```

Reply via email to