...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

D言語

.funcptr

import std.stdio; void main() { auto dg = (int x){writeln(x);}; dg(1); auto fun = dg.funcptr; fun(1);//実行時におかしい } funcptrって何にどのように使うものなんだろう?

/D/D programming language/

"D" だけだと検索しにくいのでみんなで各ページ1回は "D programming language" と入れておくようにしない? と Walterタン が 提案 してました。まあそうだよね。日本語で検索かける場合は "D言語" があるから 問題ないか。 皆さんもう実行していると思い…

dmd 2.032 - synchronized member functions now implicitly typed as shared

synchronized member functions now implicitly typed as shared. class A { synchronized void f(){} } void main() { A x = new A; x.f(); // error auto y = new shared(A); y.f(); // ok }

BUG: The overload and override issue of const/immutable member functions

こういう形で報告した. 3282 – The overload and override issue of const/immutable member functions import std.stdio; class Base { string f() { return "Base.f()"; } } class Derived : Base { string f() { return "Derived.f()"; } string f() con…

const/immutable関数がオーバーライドできない?

そういえばバグ報告忘れてた. 昨日のこのコードを警告付きでコンパイルすると、 class Base { void func(){} void func(int){} } class Derived:Base { alias Base.func func; void func(int){} void func(int) const{} void func(int) immutable{} void fu…

dmd 2.032 release

Version D 2.032 Sep 2, 2009 New/Changed Features * synchronized member functions now implicitly typed as shared. * std.algorithm: added minPos * std.format: added raw specifier for reading * added File.byChunk * std.algorithm: added more u…

アクセサ

例えばO'Camlでは、テーブル等の構築中はmutableで、構築が終ったらmutableを外すといったことができません。抽象型にしてアクセサを用意すればいいのですが、パターンマッチが使えなくなるので微妙です。というわけでD言語の推移的constは素晴しいと思いま…

C/C++に疲れた人のD言語2.0

ばばーんとな. http://rayerd.plala.jp/pukiwiki/ingwiki/index.php?C%2FC%2B%2B%E3%81%AB%E7%96%B2%E3%82%8C%E3%81%9F%E4%BA%BA%E3%81%AED%E8%A8%80%E8%AA%9E2.0 あちこち未完成ですが,完成するまで待っているといつまで経っても公開できそうになかったの…

同名のmutable/const/immutableメンバ関数のオーバーロード

おお,全然気がついていなかった. これはちゃんと整理できそうな問題だ. import std.stdio; class A { override string toString() { return "A"; } override string toString() const { return "const(A)"; } override string toString() immutable { ret…

DFL for DMD 2.031

リビジョン: 81 作者: Chris Miller 日時: 4:51:09, 2009年8月22日 メッセージ: Update to DMD 2.031 - 変更 : /trunk/win32/dfl/base.d 変更 : /trunk/win32/dfl/combobox.d 変更 : /trunk/win32/dfl/data.d 変更 : /trunk/win32/dfl/drawing.d 変更 : /tru…

D言語2.0でのWindowsアプリケーション - dmd2.031対応版

D言語2.0でのWindowsアプリケーション 更新しました.

const/immutable型修飾子

ネタがないので小出しにしてみる.

次のバージョンの変更予定をのぞき見

音沙汰がないので楽しみを前倒ししようではない会開催. $(VERSION 032, July 7, 2009, =================================================, $(WHATSNEW $(LI synchronized member functions now implicitly typed as shared.) $(LI std.algorithm: added m…

stdex.encodedstream 習作

module stdex.encodedstream; import std.stream; import std.cstream; import std.windows.charset; import std.c.string; class EncodedOutputStreamFilter(CoreEncode, OtherEncode) { private OutputStream stream; this(OutputStream stream) { this.st…

続・shared_ptr

19:00 余計な処理を入れていたみたいなので削除しました. 今のD言語では opAssign(T)() が定義できないらしい. どうもD言語の shared_ptr に boost::shared_ptr のような多態性を持たせるのは無理な気がするがどうなんだろう. とりあえず上記のことはD言…

構造体クイズ

shared_ptrを作ってみようと頑張っていたのですが・・・. import std.stdio; struct X { this(int i){writeln("X.this(int)");} this(this){writeln("X.postblit");} static X opCall(X){writeln("X.opCall(X)");X x;return x;} static X opCall(Y){writeln…

これはこわい

import std.stdio; struct X { int a; } struct Y { string b; } void main() { Y v = X(10000); writeln(v.b); } ぴーーーーーーーーーーーーーーーーーーーーーーーー. 回避方法 import std.conv; struct Y //replace { string b; static Y opCall(T)(T x…

dcharの世界へ

const(char*) toMBSz(in wchar[] t) { return toMBSz(to!string(t)); } const(char*) toMBSz(in dchar[] t) { return toMBSz(to!string(t)); } alias std.windows.charset.toMBSz toMBSz; void p(T)(T t) { printf("%s\n", toMBSz(to!string(t))); } しかしW…

わたし「まだあなたのことよくわかってないの・・・ごめんなさい」shared_ptr「・・・」

import std.stdio; struct shared_ptr(T) if (is(T == class)) { uint n; T p; alias p this; this(T p) { n++; this.p = p; writeln("construct, ", n); } this(this) { n++; writeln("reference copy, ", n); } ~this() { n--; if (n==0) { delete p; writ…

In A Module Far, Far Away Part 2 - Walter Bright

英語の勉強を目的として訳してみました. まずタイトルが訳せないんですけどw 英和交互に書いているので読みにくいかもしれない. Dr. Dobb's | Good stuff for serious developers: Programming Tools, Code, C++, Java, HTML5, Cloud, Mobile, Testing

なでしこ on D言語

import std.process; import std.windows.charset; import std.c.string; import std.string; import std.conv; import std.stdio; void main() { nadesiko_oneLiner("1+3をAに代入。A=A*2。Aを表示"); nadesiko_oneLiner("エクセル起動。1秒待つ。エクセル…

マルチスレッドプログラミングわかんねー(5)

勉強しながら書いているので鵜呑みにしたらダメですよ〜. 変数のスコープと生存期間 スコープと生存期間は違う. 関数内で宣言された自動変数のスコープと生存期間はその関数内だけ. 関数内で宣言されたstatic変数のスコープはその関数内だが,生存期間は…

マルチスレッドプログラミングわかんねー(4)

import dfl.all; import dfl.internal.winapi; import std.cstream; import core.thread; class MyForm : Form { private shared(bool)* start; private shared(bool)* restart; private shared(bool)* end; this(shared(bool)* start, shared(bool)* restar…

マルチスレッドプログラミングわかんねー(3)

import dfl.all; import dfl.internal.winapi; import std.cstream; import core.thread; shared bool startFlag; // trueでcollectorが仕事を始める shared bool restartFlag; // trueでcollectorが仕事を最初からやり直す shared bool endFlag; // trueでc…

DFL rev80 + dmd 2.031でリストボックスの選択済みアイテムが取得できない(3)

複数行選択モードのときだけうまく動かないようだが・・・? import dfl.all; import std.stdio; import core.thread; class Th : Thread { ListBox l; this(ListBox l) { this.l = l; super(&run); } private void run() { for(;;) { writeln("sub-thread\t…

DFL rev80 + dmd 2.031でリストボックスの選択済みアイテムが取得できない(2)

他の人から返事が来た. TLSは関係ないっぽ. cast間違ってた? ... あれ?何でcast(ubyte)にしたんだろ.

Delegate covariance and contravariance

http://d.puremagic.com/issues/show_bug.cgi?id=3180 import std.stdio; class A {} class B : A {} class X { A foo() { return new A; } } class Y : X { B foo() { return new B; } } class V { void foo(B){} } void main() { // Class Covariance (サ…

DFL rev80 + dmd 2.031でリストボックスの選択済みアイテムが取得できない

何でだろうと思って色々調べてみた. で,関係あるかどうかわからないが,dmd -vtls してみたらずらずら現れた TLS たち. こいつらをちゃんと修正してやらないとダメなのかな? パッと見た感じでは関係ありそうなものは見あたらないが・・・. main.d(593):…

shared(int)

import std.stdio; void main() { shared(int) a; writeln(a); //shared(int) <---- !? } ・・・え? これ既に報告されているのだろうか?

DFL rev80 + dmd 2.031

久しぶりに恒例のパッチを作りました. 今回は符号付きの型を符号なしの型に暗黙変換できなくなった変更を受けてcastを大量に挿入したのでちょっと心配. DFLは以前のように-version=DFL_DMD2021とか付けてビルドしなくてもよいようです. ただし,DFLのlib…