Blog Post Rewrite - Callback Signal Chains

2019-05-29 Thread Ron Tarrant via Digitalmars-d-learn
While doing screenshots for the gtkDcoding blog (See? I'm working 
on it.) I discovered something cool about signal callback chains 
in GtkD. So, I ended up rewriting the code and the blog post to 
include this coolness.


You can read it here: 
http://gtkdcoding.com/2019/02/19/0011-callback-chains.html


Re: Inconsistent behavior of __FILE__ within mixin template

2019-05-29 Thread Andre Pany via Digitalmars-d-learn

On Wednesday, 29 May 2019 at 16:08:11 UTC, Exil wrote:

On Wednesday, 29 May 2019 at 08:45:45 UTC, Andre Pany wrote:

[...]


I imagine __FILE__ is used where the code is defined, since it 
is defined in "a.d" that is what is used. If you want to know 
the file name of where it is used then you can add it as part 
of the template.


mixin template UnitTest(string filename = __FILE__)
{
private static this()
{
testClasses ~= TestClass(this.classinfo.name, filename 
);

}
}


Thanks a lot. That looks great.

Kind regards
Andre


Re: Inconsistent behavior of __FILE__ within mixin template

2019-05-29 Thread Exil via Digitalmars-d-learn

On Wednesday, 29 May 2019 at 08:45:45 UTC, Andre Pany wrote:

Hi,

I have a module a.d

---
struct TestClass
{
string name;
string fileName;
}

TestClass[] testClasses;

mixin template UnitTest()
{
private static string getFileName(string fileName = 
__FILE__)

{
return fileName;
}

private static this()
{
testClasses ~= TestClass(this.classinfo.name, 
getFileName());

}
}

and a module b.d
---
import std.stdio;
import a;

class MyTest
{
mixin UnitTest;

this()
{
writeln(getFileName());
}
}

void main()
{
new MyTest();
writeln(testClasses);
}

What I want is to have in the struct array testClasses the file 
name of module b

to generate an xml report. But the output of this application is


b.d
[TestClass("b.MyTest", "a.d")]


I would have thought __FILE evaluates in both cases to "b.d" as 
the code is mixed into

module b. Is this the intended behavior?

Kind regards
André


I imagine __FILE__ is used where the code is defined, since it is 
defined in "a.d" that is what is used. If you want to know the 
file name of where it is used then you can add it as part of the 
template.


mixin template UnitTest(string filename = __FILE__)
{
private static this()
{
testClasses ~= TestClass(this.classinfo.name, filename );
}
}




Inconsistent behavior of __FILE__ within mixin template

2019-05-29 Thread Andre Pany via Digitalmars-d-learn

Hi,

I have a module a.d

---
struct TestClass
{
string name;
string fileName;
}

TestClass[] testClasses;

mixin template UnitTest()
{
private static string getFileName(string fileName = __FILE__)
{
return fileName;
}

private static this()
{
testClasses ~= TestClass(this.classinfo.name, 
getFileName());

}
}

and a module b.d
---
import std.stdio;
import a;

class MyTest
{
mixin UnitTest;

this()
{
writeln(getFileName());
}
}

void main()
{
new MyTest();
writeln(testClasses);
}

What I want is to have in the struct array testClasses the file 
name of module b

to generate an xml report. But the output of this application is


b.d
[TestClass("b.MyTest", "a.d")]


I would have thought __FILE evaluates in both cases to "b.d" as 
the code is mixed into

module b. Is this the intended behavior?

Kind regards
André


Re: Create object from a library's Class returns Null

2019-05-29 Thread dangbinghoo via Digitalmars-d-learn



change gwlib buildtype to sourceLibrary solves the problem, but 
it should work for static or shared library.