digitalmars.D.learn - BitFlags usage
- Alex (38/38) Jan 25 2018 I have a question on usage of BitFlags, described here:
- =?UTF-8?Q?Ali_=c3=87ehreli?= (3/4) Jan 25 2018 r |= BitFlags!Rs(cast(Rs)val);
- Alex (2/7) Jan 25 2018 Thanks :)
I have a question on usage of BitFlags, described here: https://dlang.org/library/std/typecons/bit_flags.html and/or on bitop https://dlang.org/phobos/core_bitop.html#.bsf A similar example to the bit flags example is given here: [code] import std.typecons; enum Rs : ubyte { None, s_f = 1 << 0, s_s = 1 << 1, s_p = 1 << 2, t_f = 1 << 3, t_s = 1 << 4, t_p = 1 << 5 } struct R { import core.bitop : popcnt; invariant {/* some useful asserts here */} this(ubyte val) { assert(popcnt(cast(uint)val) == 2); // separate asserts... r |= cast(BitFlags!Rs)val; // line 20 ... from asignment } BitFlags!Rs r; alias r this; } void main(){} [/code] ok, now: the idea is that if I use the functionality of bit flags, then I can take advantage of bit operations. And I'm looking for the inverse operation of converting a bit flag to its raw value, like the line before last in the example on the bit flags documentation site. How should my line 20 looks like to achieve an assignment of a raw value to a BitFlags variable in a single step?
Jan 25 2018
On 01/25/2018 03:50 AM, Alex wrote:r |= cast(BitFlags!Rs)val; // line 20 ... from asignmentr |= BitFlags!Rs(cast(Rs)val); Ali
Jan 25 2018
On Thursday, 25 January 2018 at 13:05:07 UTC, Ali Çehreli wrote:On 01/25/2018 03:50 AM, Alex wrote:Thanks :)r |= cast(BitFlags!Rs)val; // line 20 ... from asignmentr |= BitFlags!Rs(cast(Rs)val); Ali
Jan 25 2018