Review of std.signal
Jacob Carlborg
doob at me.com
Fri Jan 24 00:52:23 PST 2014
On 2014-01-23 23:51, Martin Nowak wrote:
> Wouldn't it be possible to find out whether the delegate context ptr
> is actually an object? Not sure how to do it safely though and
> Interfaces slightly differ.
>
> ```d
> import std.stdio;
>
> class Foo
> {
> void method() {}
> }
>
> void main()
> {
> auto foo = new Foo;
> auto dg = &foo.method;
> // It's a class delegate!!!
> writeln(cast(void*)foo.classinfo.__vptr, " ",
> ***cast(void****)dg.ptr, " ", (new ClassInfo).__vptr);
> assert(***cast(void****)dg.ptr is (new ClassInfo).__vptr);
> }
> ```
Why don't you just cast the delegate context pointer to Object? Like this:
auto result = cast(Object) dg.ptr;
If "result" is not null the context pointer points to an object.
Although this won't handled interfaces. I consider it a bug that an
interface cannot be casted to Object.
--
/Jacob Carlborg
More information about the Digitalmars-d
mailing list