前の日 / 次の日 / 最新 / 2008-06

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

2008-06-23 Mon

テンプレート・ミックスインでプロパティーを貼り付ける [D言語]

テンプレート・ミックスインが追加されたときに誰かが書いていたような気がする。
どこだったろう?

思い出せないので書いてみた。

import std.stdio;

enum {Readable=1,Writable,ReadWrite}

template Property(type,alias name,int flag=ReadWrite)
{
    mixin(type.stringof ~ " m_" ~ name ~ ";");
    static if(flag&Readable) mixin(type.stringof ~ " " ~ name ~ "(){return m_" ~ name ~ ";}");
    static if(flag&Writable) mixin(type.stringof ~ " " ~ name ~ "(" ~ type.stringof ~ " a){return m_" ~ name ~ "=a;}");
}

class Foo
{
    mixin Property!(int,"bar"); //int 型 の bar という名前のプロパティ
}

void main()
{
    auto foo = new Foo;
    foo.bar = 100;     //bar に 100 をセット
    writefln(foo.bar); //bar を読み出す。
}

mixin文を使ってみた。
std.metastring.Format をつかいたいが、壊れている。
[2008-02-26-3]

DSSS が使う DMD を指定したい [D言語]

DSSS 0.75 は DMD 2.008 まで。
DMD 2.015 もつかいたい。

dsss build hoge.d

dmd hoge.d

DSSS が使う DMD を指定するにはどうすればいいのだろう?

--bindir= を指定するとコンパイルできるみたいだ。
Could not detect versions. のメッセージが気になる。

Referrer (Inside): [2008-06-29-1]