On 01/10/2017 04:14 PM, Nordlöw wrote:
On Wednesday, 11 January 2017 at 00:11:47 UTC, Nordlöw wrote:
If taggedPointer!char* allocated on the heap the pointer
A taggedPointer!char* cannot use any tags, eventhough a heap-allocated
pointer clearly has non-byte alignment. Is there a way around this?
Brute-forced with property functions:
import std.stdio;
import std.bitmanip;
struct S {
mixin (taggedPointer!(
uint*, "p_",
bool, "b1", 1,
bool, "b2", 1));
@property void p(char* c) {
assert((cast(ulong)c & 0b11) == 0);
p_ = cast(uint*)c;
}
@property char* p() {
return cast(char*)p_;
}
}
void main() {
auto s = S();
s.p = "hello".dup.ptr;
s.b1 = true;
s.b2 = false;
writefln("%s", s.p[0..6]);
}
Ali