トップページ⇒tech
1001コメント253KB

D言語 Part26

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2010/12/28(火) 10:49:05
プログラミング言語 D (D Programming Language) について語るスレッドです。

■前スレ
http://hibari.2ch.net/test/read.cgi/tech/1281826764/

■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)

■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
http://www.dsource.org/projects/ldc (LDC, バックエンドにLLVM)

■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
ttp://dsource.org/ (dsource)
ttp://tinyurl.com/candcpp2d2 (C/C++に疲れた人のD言語2.0)
ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)
ttp://dusers.dip.jp (D言語友の会)
ttp://www.wish.sakura.ne.jp/desuno/game/Drawing (PrincessDrawing! D言語で作られた横スクロールSTG)
0002デフォルトの名無しさん2010/12/28(火) 10:52:30
■ IDE
ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks)
ttp://www.dprogramming.com/entice.php (Entice Designer)
ttp://www.dsource.org/projects/descent (Descent)
ttp://www.dsource.org/projects/poseidon (Poseidon)
ttp://alexanderbothe.com/?id=27 (D-IDE)
ttp://codepoet.sourceforge.net (CodePoet ※計画中)

■過去スレ、関連スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=D%8C%BE%8C%EA&sf=2&all=on&view=table&shw=5000

■その他関連スレ
統合開発環境Eclipseプラグイン開発QA
http://pc11.2ch.net/test/read.cgi/tech/1081517094/

"Code of the Nerds" Digital Mars C/C++
http://hibari.2ch.net/test/read.cgi/tech/1044210976/
000312010/12/28(火) 10:54:08
Eclipseスレ無くなってるっぽいけど消しても良かったかな…
他にもリンク切れあったらスマソ
0004デフォルトの名無しさん2010/12/28(火) 11:30:17
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
00059772010/12/28(火) 12:27:17
ここはアイちゃんが来ていい場所ではありません。
0006デフォルトの名無しさん2010/12/28(火) 18:45:14
977 デフォルトの名無しさん [sage] 2010/12/28(火) 12:22:23 ID: Be:
    >>975
    まず、functionじゃなくて、delegateじゃないだろうか?

    次に、テンプレートのインスタンス化の時に、!()には変数の値は渡せないぜ?
    (コンパイル時に決まる、整数型・浮動小数点型・文字列型は除く)

    もし値渡しをやるなら、テンプレートの宣言は、
    void func(F...)(F f) もしくは void func(alias F...)()
    と、するべき。(後者は厳密には値渡しじゃないが)
    今回は後者にすれば解決?
0007デフォルトの名無しさん2010/12/28(火) 21:20:50
下記のCTestのようなクラスでmNumやmTextのみを抽出したいんだけど何か良い方法あります?
allMembersで取り出したタプルに対してisSomeFunctionで判定しようかと思って下記の様に書いたらコンパイルエラーになったのでどうしたものかと。

class CTest{
 int mNum;
 string mText;
 void Function(){}
}

void main(){
 foreach(mem;__traits(allMembers, CTest)){
  static if( !isSomeFunction!(__traits(getMember, CTest, mem)) ){
   // Todo!
  }
 }
}
0008デフォルトの名無しさん2010/12/28(火) 22:45:34
>>7
何でそんなまわりくどい方法でやろうとしてるの?
000982010/12/29(水) 00:33:32
>>7
もう一度見返してみたけど・・・
とりあえず、static ifを動的に使おうとしてコンパイルエラーになってるのはわかった。

で、やっぱり疑問になるのは、なぜわざわざそんな方法でメンバ関数を特定しようとしてるのか、という所だ。
インターフェイスやデリゲートを使って、使用できる関数を知らせるのじゃダメなのだろうか?

・・・ん?そうじゃなくて、クラスのフィールドを抽出したいの?
だったらもっと簡単な方法があるな。 つ[ .tupleofプロパティ ]
001082010/12/29(水) 00:40:29
てか、よく見たら__traitsも動的に使えないのな。
0011デフォルトの名無しさん2010/12/29(水) 03:53:02
D言語逆引き作ろうぜ
・コンテナからの追加削除検索
・テンプレート
・実行時型情報
・etc
0012デフォルトの名無しさん2010/12/29(水) 05:44:58
>>前スレ970
ttp://d.puremagic.com/issues/show_bug.cgi?id=5381
switchのバグはtrunkで修正された
0013デフォルトの名無しさん2010/12/29(水) 06:13:26
もう時代は
Windows = C#
Mac = Objective-C
サーバーサイド = Java or PHP
になってて
D言語なんてもう日の目を見ることは
絶対にないから。
0014デフォルトの名無しさん2010/12/29(水) 06:54:45
>>13 は何が言いたいのだろう
0015デフォルトの名無しさん2010/12/29(水) 07:33:28
日の目を見るより破壊的変更をくれ!
0016デフォルトの名無しさん2010/12/29(水) 09:27:23
Dは遅すぎた
0017デフォルトの名無しさん2010/12/29(水) 10:25:24
開発者サイドならともかく、このスレに居る人間って別にDが著名になればいいとか思ってないよねえ。
0018デフォルトの名無しさん2010/12/29(水) 11:05:16
D言語でプログラムを組むことによって
破壊的変更毎にプログラム全体を見直す必要が生ずる。
これにより同じアルゴリズムを何度も眺めることになるのだが、
この行為はプログラマにとってアルゴリズムの反復学習として機能する。
上記より私はD言語の履修を学校教育に強く勧めたい。
0019デフォルトの名無しさん2010/12/29(水) 13:17:57
>>18
マジレスすると先生が大変すぎる。
0020デフォルトの名無しさん2010/12/29(水) 14:24:05
>>11
作った
http://wikiwiki.jp/dlang/
0021デフォルトの名無しさん2010/12/29(水) 15:20:13
>>20
うおぉまじか 立ち上げ乙ー
0022デフォルトの名無しさん2010/12/29(水) 16:41:28
>>7

フィールドの名前なしでいいなら>>8の通り.tupleofを使う、名前ありなら下のコードで可能
class CTest{
 int mNum;
 string mText;
 void Function(){}
}
void main(){
 foreach(mem;__traits(allMembers, CTest)){
  static if (is(typeof(mixin("&CTest." ~ mem))))
   pragma(msg, "f ", mem);
  else
   pragma(msg, "@ ", mem, ", isType = ", mixin("is(CTest." ~ mem ~ ")"));
 }
}
interface Object.Monitorが出てきたのでisType==falseではじく必要がある。

あと、__traitsで取ってきたタプルをforeachで回すと、ループ内のコードはコンパイル時に評価される。
ので、>>7のコードは考えとしては正しい。
0023デフォルトの名無しさん2010/12/29(水) 16:44:42
すまん、書き込むの久しぶりだったのでsage忘れた。
0024デフォルトの名無しさん2010/12/29(水) 23:51:13
毎年恒例の元旦update。楽しみにしてるぜウォルたん
0025デフォルトの名無しさん2010/12/30(木) 00:18:03
3か 3なのか 3が来るのか
0026デフォルトの名無しさん2010/12/30(木) 00:50:03
ttp://gedo-style.net/g/?v=617377&d=d.jpg
0027デフォルトの名無しさん2010/12/30(木) 01:07:53
いやそれは喜ぶべきことなのでは
0028デフォルトの名無しさん2010/12/30(木) 08:47:03
外道てw
0029デフォルトの名無しさん2010/12/30(木) 08:53:53
慈善活動のひとか
0030デフォルトの名無しさん2010/12/30(木) 13:18:09
ジェネレータのネーム貼りロジックが甘いようだな
誰か改善してやれよ
0031デフォルトの名無しさん2010/12/30(木) 14:57:58
構造体の継承とインタフェース実装ができればいいのに
0032デフォルトの名無しさん2010/12/30(木) 18:44:29
いや、それは素直にクラス使えよwww
0033デフォルトの名無しさん2010/12/30(木) 19:45:14
構造体をアダプトしてクラス化するテンプレートがあればいい
値型のまま扱いたいのならconceptくさいなにかになるんだろうけど。
0034デフォルトの名無しさん2010/12/30(木) 20:19:58
だからクラス使えってwww
0035デフォルトの名無しさん2010/12/31(金) 22:11:40
2.051落としたらwindows\binに.exeなるファイルが入ってる
なんだこれ
0036デフォルトの名無しさん2010/12/31(金) 22:14:08
dmd2.051.zip                       .exe
0037デフォルトの名無しさん2010/12/31(金) 22:21:13
import std.string;

void main() {
const(string) a = "a";
"a".startsWith(a); // compile error
splitlines(a); // compile error
}

たぶん他の関数もそうなんだろうけど
ちょっと前までは通ってたはずなんだよなぁ…
0038デフォルトの名無しさん2010/12/31(金) 22:47:57
C:\> type w.d
/// ---
/// string foo = ")";
/// ---
void main() {}

C:\> dmd -D -w w.d
w.d(4): Warning: Ddoc: Stray ')'. This may cause incorrect Ddoc output. Use $(RP
AREN) instead for unpaired right parentheses.


おいィ?
0039デフォルトの名無しさん2011/01/01(土) 01:07:20
だーいぶ変更加わってるみたいだね
phobosから.dが消えて.diだけになったのは今回?
0040デフォルトの名無しさん2011/01/01(土) 01:29:44
>>38
) の代わりに $(RPAREN) 使えだとさ
丸カッコ ( ) はDdoc用コメント中では特殊文字扱いだぜ
0041デフォルトの名無しさん2011/01/01(土) 14:08:16
>>40
ああ、そうだったのか
どうせdmdだしと思ってまともにメッセージ読んでなかった
ごめんよ
004272011/01/01(土) 15:43:11
>>22
おおー、ありがとうございます。
取得したtupleをなんでforeachで回せるのかは疑問だったんだけど、
static foreach的な構文を使わなくてもコンパイル時に実行される
んですね。
0043デフォルトの名無しさん2011/01/01(土) 17:24:45
importとかコメント置く位置によって動作が変わることがあるんだけど。。。
外部ライブラリのクラスのデストラクタが自動で呼び出されないとか。
マニュアルにはimportする順序は動作に関係無いみたいなんだけどなぁ。
0044デフォルトの名無しさん2011/01/01(土) 19:26:06
>>43
ソースを出せ
話はそれからだ
0045デフォルトの名無しさん2011/01/01(土) 23:14:01
そういう意味不明な動作はポインタの操作を間違えて
変な所にアクセスしてるせいかもしれない
最近の言語はそういう事とは無縁だけどDだと発生するから困る
0046デフォルトの名無しさん2011/01/02(日) 22:14:28
D Programming Advent Calendar 2010というのがあったような気がしたがそんなものはなかった
0047デフォルトの名無しさん2011/01/02(日) 23:55:38
今日からAdvent Calendar 2011を始めたら年末までには25人集まるんじゃないだろうか
0048デフォルトの名無しさん2011/01/03(月) 00:18:21
Dプログラマって25人もいるの?
0049デフォルトの名無しさん2011/01/03(月) 00:23:01
技術を発信できるレベルの人が25人も居るかどうか
0050デフォルトの名無しさん2011/01/03(月) 07:08:08
その25ってのは、なんらか意味のある数字なのか?
0051デフォルトの名無しさん2011/01/03(月) 14:27:19
最近流行りのアイドルグループの過半数を超えている
0052デフォルトの名無しさん2011/01/03(月) 15:29:59
なんだっけそれ
A.K.D 48だっけ
0053デフォルトの名無しさん2011/01/05(水) 00:46:42
TDPLの和訳はいつ出版されるのん?
0054デフォルトの名無しさん2011/01/05(水) 02:20:07
残念ながら…

売れないもんなあ
0055デフォルトの名無しさん2011/01/05(水) 02:31:20
ですよねー(´・ω・`)
D友のTDPL第13章和訳みてすごい面白かったから出ないかなぁと思った
Dに留まらず、他の言語にも適用可能な考え方とかも書いてあって結構な良書だと思うんだけどなー
0056前スレ9772011/01/05(水) 11:10:03
>>6
年越しちゃいましたが以下で問題なく動きました。
http://ideone.com/lpyz7
また、さらっとluadの情報を提供いただいた方も助かりました。
ありがとうございました!
0057デフォルトの名無しさん2011/01/06(木) 03:42:54
なんかいきなりほったらかしのライブラリが整理っていうか処分され始めたな
0058デフォルトの名無しさん2011/01/06(木) 16:17:52
traitsを使ってクラスのディープコピー用のcloneメソッドを
作ろうと思ってるのですが、うまくいきません。

http://ideone.com/TCR8r

上記のコードでcloneが実装されているフィールドはclone呼び出し、
それ以外は=で代入という処理をしてます。
これだと組み込み型や配列でないユーザー定義型はディープコピー
できるのですがユーザー定義型の配列のディープコピーができ
ないのですが何か良い方法ありますでしょうか。
0059デフォルトの名無しさん2011/01/06(木) 18:10:48
std.traits.isArrayでtrueだったら新しく配列作って各要素をディープコピー

俺も同じ事やろうとした覚えがあるけどデフォルトコンストラクタの無いクラスで詰んだな
0060デフォルトの名無しさん2011/01/07(金) 18:33:20
おしい・・・
http://ideone.com/rIRgl
0061デフォルトの名無しさん2011/01/07(金) 22:17:12
tangoの存在はさておき出すならとっとと1.0出してくれないかなぁ
0062デフォルトの名無しさん2011/01/07(金) 23:28:10
過去ログのdatを全廃棄するかも、なんて話があるので、
スレの過去ログが必要って人は今のうちに保存しておいたほうがいいかも
0063デフォルトの名無しさん2011/01/08(土) 12:02:21
なんか過去スレ表示されないなぁ
0064デフォルトの名無しさん2011/01/09(日) 03:43:32
987 デフォルトの名無しさん [sage] 2011/01/09(日) 00:48:32 ID: Be:
    >>977
    > http://hibari.2ch.net/test/read.cgi/tech/1290367109/588
    > これ見て思ったけどMartin先生が突然死んじゃったらScalaってどうなるん?

これ見て思ったけどうぉるたんが突然死んじゃったらDってどうなるん?
0065デフォルトの名無しさん2011/01/09(日) 04:07:02
Reiserさんが(社会的に)突然死しちゃったらReiserFSも死んじゃったね。
0066デフォルトの名無しさん2011/01/09(日) 11:11:49
突然Dが完成する
0067デフォルトの名無しさん2011/01/09(日) 11:21:30
打ち切り御免
0068デフォルトの名無しさん2011/01/09(日) 11:45:16
andreiがコンパイラ担当になって大規模に手を入れ始める
0069デフォルトの名無しさん2011/01/09(日) 12:17:56
andreiタソのリミッターが解除されてDがさらに進化するだけだな
0070デフォルトの名無しさん2011/01/09(日) 14:57:56
仕様から消える予定なのってどっち?

1.
scope class A{} ←

2.
class B{}
scope B b; ←
0071デフォルトの名無しさん2011/01/09(日) 17:41:00
2
でも2が消えたら1も消えるんじゃ?
0072デフォルトの名無しさん2011/01/09(日) 19:17:57
3.
Mutex m = new Mutex;
lock(m);
scope(exit) unlock(m);
0073デフォルトの名無しさん2011/01/09(日) 20:05:13
>>72これは消えないって誰か前スレで言ってた気がするよ
0074デフォルトの名無しさん2011/01/09(日) 22:33:09
スコープガード文が無くなったらDを使う理由の3分の1が消えちゃう
0075デフォルトの名無しさん2011/01/13(木) 11:55:09
allMembersで取得した関数がprivateか否かを判断する方法はありますか?
staticとか何とかは見つかるんですが…
0076デフォルトの名無しさん2011/01/13(木) 22:42:28
探しても無いなら無いんじゃねーの。
0077デフォルトの名無しさん2011/01/14(金) 02:17:39
Dって探しても無い機能は結構あるけどな
0078デフォルトの名無しさん2011/01/14(金) 02:43:34
なんのために?
0079デフォルトの名無しさん2011/01/14(金) 03:19:42
仕様変更に対応するために
仕様が確定するまで手を付けないのは
よくあること
0080752011/01/14(金) 12:36:41
無いかぁ…とりあえずfinalつけて判別しました。
0081デフォルトの名無しさん2011/01/14(金) 12:50:03
ごめん78は75に
0082デフォルトの名無しさん2011/01/14(金) 18:39:29
別モジュールからそのメンバにアクセスするコードを書いて
isで失敗したらprivate…

うん、自分で書いてて無茶だと思った
0083デフォルトの名無しさん2011/01/14(金) 20:35:55
インターフェイス使えばいいのに。
0084752011/01/15(土) 03:33:24
>>81
今作っているのがLuaを使うプログラムでluadを使用しています。
この子がluaへクラスとメンバ関数を渡す処理を自動化してくれるんですが、
その際allMembersで関数全部を渡してくれると。
d側で使用する関数は渡さないようにしたいわけで、
フツーに考えてprivateだよなぁって流れです。
0085デフォルトの名無しさん2011/01/15(土) 04:42:32
LuaDすごいなこれ。新次元すぎてわろた
0086デフォルトの名無しさん2011/01/15(土) 11:36:16
インターフェイス使えばいいのに。
http://ideone.com/k0ScV
0087デフォルトの名無しさん2011/01/15(土) 12:41:06
なるほどインターフェイス使えばいいのに。
0088デフォルトの名無しさん2011/01/16(日) 00:27:29
dmdがまともなエラーメッセージ出すはずがないと思って読み飛ばしてたら
実は内容も行も正しくて時間無駄にした…
0089デフォルトの名無しさん2011/01/16(日) 02:08:20
>行も正しくて
えっ?!mjd?
0090デフォルトの名無しさん2011/01/16(日) 11:11:32
一体いつの時代の話なんだ。
0091デフォルトの名無しさん2011/01/16(日) 16:52:50
dinstaller.exeでdmdとdmd2を両方を一気にインストール出来たのですが、
dmd2を使うにはどうしたらいいのでしょうか?
0092デフォルトの名無しさん2011/01/16(日) 16:56:25
フルパスでdmdを呼ぶかパス通すといい
0093デフォルトの名無しさん2011/01/16(日) 17:00:36
>>92
コマンドで切り替えられたりしないんでしょうか?
0094デフォルトの名無しさん2011/01/16(日) 17:27:17
普段D1なのでD2をdmd2にリネームして使ってる

DWTさえD2で使えればD1捨てで何の問題も無いのに…
0095デフォルトの名無しさん2011/01/16(日) 17:33:30
D2はD1との連携を考えるべき
0096デフォルトの名無しさん2011/01/16(日) 18:13:40
よく知られている方法はないんでしょうかねぇ?
とりあえず環境変数を切り替えられるwshを作って見ました。
コマンドラインでは出来ないけど、、、。
これをクリックすればバージョン変えられます。xpで動作してます。
envd.wsf
<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="environment">
<?job error="true" debug="true" ?>
<script language="JScript">
<![CDATA[
var WshShell = WScript.CreateObject("WScript.Shell");
var WshSysEnv = WshShell.Environment("SYSTEM");
var path = WshSysEnv("PATH");
var m2pos = path.match(/.*\\dmd2\\/)[0].length;
var m1pos = path.match(/.*\\dmd\\/)[0].length;
path= path
.replace(/\\dmd2\\/,"\\dmdtmp\\")
.replace(/\\dmd\\/,"\\dmd2\\")
.replace(/\\dmdtmp\\/,"\\dmd\\");
WshSysEnv("PATH")=path;
if(m2pos < m1pos)
WScript.Echo("change version 2 to 1");
else
WScript.Echo("change version 1 to 2");
]]>
</script>
</job>
</package>
0097デフォルトの名無しさん2011/01/16(日) 18:41:11
んな面倒な今年なくても普通にパス通してsubstで切り替えれば良い
0098デフォルトの名無しさん2011/01/16(日) 18:43:31
俺はdmd1.0はdmd1にaliasして使ってる
dmd2.0を使いたいときはdmd source.d
dmd1.0を使いたいときはdmd1 source.d
0099デフォルトの名無しさん2011/01/16(日) 19:14:08
要は ruby の rvm があるといいなと
0100デフォルトの名無しさん2011/01/16(日) 21:08:26
Dのライブラリって生きてるんだか死んでるんだかよくわからないのが多すぎる
0101デフォルトの名無しさん2011/01/16(日) 23:43:24
半生状態なんじゃ?
0102デフォルトの名無しさん2011/01/17(月) 11:47:30
http://ideone.com/fpS9U

こんな感じで自作のソート関数を使ってSwapStrategy.stableでsortすると落ちてしまうのですが、コード的に何かおかしいとこありますか?
0103752011/01/17(月) 14:55:27
>>86
一度目は理解できずにすみませんでした。
luadを若干変更することで対応できました。
ありがとうございます。
0104デフォルトの名無しさん2011/01/17(月) 18:40:43
>>102
http://ideone.com/KFbrC
http://d.puremagic.com/issues/show_bug.cgi?id=3638
0105デフォルトの名無しさん2011/01/17(月) 20:48:23
>>104
なんと……
0106デフォルトの名無しさん2011/01/17(月) 21:31:45
std.algorithmは好調みたいだな。よかった
0107デフォルトの名無しさん2011/01/19(水) 01:49:52
std.stringが解体されていく
0108名無しさん@お腹いっぱい。2011/01/20(木) 01:29:18
D言語のライバルはGo言語なの?
0109デフォルトの名無しさん2011/01/20(木) 01:57:13
そんなの言われてたこともあったなあ
0110デフォルトの名無しさん2011/01/20(木) 02:55:22
Dのスレってもうここだけになったの?
0111デフォルトの名無しさん2011/01/20(木) 23:44:36
>>108>>110
自分で調べなさい
0112デフォルトの名無しさん2011/01/20(木) 23:47:24
DとGoとではどっちがぐぐりやすいかって話か
0113デフォルトの名無しさん2011/01/22(土) 08:30:54
GoはワクワクしねえDはワクワクするそれだけだ
0114デフォルトの名無しさん2011/01/22(土) 11:26:13
Goは実行速度が遅いからな
それだけで不合格
0115デフォルトの名無しさん2011/01/22(土) 11:39:56
合体してDoとかにならないの
0116デフォルトの名無しさん2011/01/22(土) 11:47:52
それってDoよ
0117デフォルトの名無しさん2011/01/22(土) 12:32:37
GoD言語だろ
0118デフォルトの名無しさん2011/01/22(土) 12:33:30
逆にくっつけてドゴォォ言語とかに
0119デフォルトの名無しさん2011/01/22(土) 14:50:50
アンサイクロペディアに
闇プログラマはDを使うと書かれていましたが
これは本当ですか?
0120デフォルトの名無しさん2011/01/22(土) 15:48:24
闇プログラマ?何じゃそりゃw
0121デフォルトの名無しさん2011/01/22(土) 16:48:17
__TIMESTAMP__の代わりに日時のシリアル値をくれるトークンはないものか
好きなようにフォーマットしたいんよ

いや文字列を解析してシリアル値にしてから改めてフォーマットすればいいのか?
CTFEでやれそうかな
0122デフォルトの名無しさん2011/01/22(土) 18:19:55
functionとdelegateって使い分ける必要あります?
functionはポインタひとつ分節約できるとかそういうレベル?
0123デフォルトの名無しさん2011/01/22(土) 18:41:37
Cなんかとの互換性のためだから普通はdelegate使う
統合されるって話もあった気がする
0124デフォルトの名無しさん2011/01/22(土) 19:09:32
functionとdelegateの互換性制限は緩和されるとか10年くらい前に聞いた気がするな
0125デフォルトの名無しさん2011/01/22(土) 19:13:09
linux64bit版はいつまで工事中なんだ
0126デフォルトの名無しさん2011/01/23(日) 22:07:12
ttp://journal.mycom.co.jp/articles/2010/11/16/laughlin/index.html

いまさらだが、Fedora14にD言語が入ってるらしい。
Phobosは未サポートらしいけど…。
0127デフォルトの名無しさん2011/01/23(日) 22:11:35
またFedoraのバグが大量に増えるのか
0128デフォルトの名無しさん2011/01/23(日) 22:36:02
yum install ldc
0129デフォルトの名無しさん2011/01/24(月) 12:57:36
D言語つったらD1+Tangoに決まってるだろヴォケ
破壊的変更なんぞシラネー

と息まくにわかが増えるのか
0130デフォルトの名無しさん2011/01/24(月) 21:56:29
DFLのD&Dバグの何とかならんかなー
Windowsに特化してるのに GCとめて回避とか納得いかんざき

それとドロップしたファイルがなぜか
たまにデスクトップに移動してることがあるバグもなおs(ry
0131デフォルトの名無しさん2011/01/24(月) 23:02:50
ええい誰かDFLのコミット権を手に入れられんのか
0132デフォルトの名無しさん2011/01/25(火) 00:58:50
DFLってLGPLだから>>131がリポジトリこぴってクローン作ればいいのだ…
0133デフォルトの名無しさん2011/01/25(火) 01:43:11
zlibライセンスでもいいんじゃなかったっけ
0134デフォルトの名無しさん2011/01/25(火) 02:49:08
+オリジナルライセンスのトリプルライセンスだね
0135デフォルトの名無しさん2011/01/25(火) 18:42:57
>>130
d2だとGCとめても・・・
修正パッチどこかに置いておくだけでもいいんじゃないですか?
少なくとも自分は大いに助かる
0136デフォルトの名無しさん2011/01/25(火) 19:51:07
>>132
困っているので手は入れたし
されど全体を見渡すほどの余力もなし
って感じ
0137デフォルトの名無しさん2011/01/25(火) 20:14:49
オプソなんてそんなもんなんじゃないの
気づいた人が報告して、直せる人が直すっていう
0138デフォルトの名無しさん2011/01/25(火) 21:37:26
DFL exampleすらまともに動作しないんですがどうしましょう
0139デフォルトの名無しさん2011/01/26(水) 20:51:11
一部はちょっと手直ししたら動くんだぞ
Dのライブラリとしては上出来じゃないか
0140デフォルトの名無しさん2011/01/26(水) 21:57:41
ドラッグドロップだけはどうにかしてほしい
0141デフォルトの名無しさん2011/01/27(木) 18:45:24
import std.stdio;
void main() {
  auto hoge(T)(T a, T b) { return a~"."~b; }
  auto f = mixin(hoge("12", "34"));
  writeln(typeid(f), ":", f);
}
文字列mixinって値的に使えるんだな。初めて知った。
というかその発想がなかったわー
0142デフォルトの名無しさん2011/01/29(土) 02:26:36
>>141
へーしらなんだ
0143デフォルトの名無しさん2011/01/29(土) 17:30:30
>>142
じゃあ次のアップデートでそれなくします
0144デフォルトの名無しさん2011/01/29(土) 21:06:08
その代わりにどんな断片的な文字列でもmixinできるようにします
0145デフォルトの名無しさん2011/01/30(日) 10:44:25
使わないと思うけどimport式ってのもあったり。
0146デフォルトの名無しさん2011/01/30(日) 14:45:50
画像リソースを取り込んだりするのに使える
0147デフォルトの名無しさん2011/01/30(日) 15:32:32
頭いいな
0148デフォルトの名無しさん2011/01/30(日) 16:17:09
mixin(import("stdio.h"));

void main() {
 printf("hello, world!\n");
}
0149デフォルトの名無しさん2011/01/30(日) 17:09:58
なんてことを・・・
0150デフォルトの名無しさん2011/01/30(日) 19:02:58
コンパイルタイムhtod
0151デフォルトの名無しさん2011/01/30(日) 20:37:26
前スレかなんかで話上がったけどみんなどうぞどうぞ状態で誰もやりたがらなかったやつか・・
0152デフォルトの名無しさん2011/01/30(日) 21:37:24
コンパイル遅くなるのは勘弁なんで、ふつーのhtod欲しいです。
0153デフォルトの名無しさん2011/01/30(日) 21:50:52
>>153
.dも吐くようにして.hと同名の.dがあれば.dをimportするようにすればいいんじゃね
0154デフォルトの名無しさん2011/01/30(日) 22:33:04
>>154
Dの外部ライブラリと比べればCのライブラリを使う方が圧倒的に多いんで
実現できるならぜひ欲しいな
0155デフォルトの名無しさん2011/01/30(日) 22:55:05
>>154
勇者様でしたか
期待しております
0156デフォルトの名無しさん2011/01/30(日) 23:51:40
自己レス流行ってるのか?
0157デフォルトの名無しさん2011/01/31(月) 16:04:47
DMD2.051なんですが、 -inlineの有無でコンパイルが通ったり通らなかったりします。
どのような原因が考えられるでしょうか?

こんな感じのコードなんですが・・・

class Stage {
 Unit[UNIT_ID] unit;
 Unit[ENEMY_ID] enemy;
}
class MyStage : Stage {
 void update() {
  foreach(u; units) {
  }
  foreach(e; enemy) { // ←enemyを使用するとエラー。コメントアウトでコンパイルが通る
  }
 }
}
01581572011/01/31(月) 16:14:03
すみません、正しくはリンクエラーで undefined reference to となります。
エラー時に指定されている行番号がforeachの行で、
enemyを使用している箇所をコメントアウトするとコンパイルが通ると。。。

元々リリース用ビルドで作成していて、
気がついたらデバッグ(-inline無し)でリンクエラーになるようになっていました。
0159デフォルトの名無しさん2011/01/31(月) 18:36:56
stage.dをコンパイル&リンクしていないんじゃないかな。
mystage.dだけdmdに渡してる場合そういうことになることもあるかと思うが。
0160デフォルトの名無しさん2011/01/31(月) 21:38:55
dmdで-inlineとか-Oとか使うのは勇気ではない
それは無謀というのだ
0161デフォルトの名無しさん2011/01/31(月) 23:12:50
俺無謀だったんだな・・
0162デフォルトの名無しさん2011/02/01(火) 00:01:54
いいじゃない。蛮勇上等!
0163デフォルトの名無しさん2011/02/01(火) 00:28:41
nazomen二等兵の戦死まだ?
01641572011/02/01(火) 00:41:20
>>159
リンカに存在していることは確認済み、
順序を入れ替えてもNGでした。

>>160
-inline有りでNGならまだ良いんですが、
無しでNGなので困ってます。。。

うーん、階層が深すぎるかなぁ・・・
Java風にco/jp/hoge/app/・・・な感じでmodule切ってるんですが。
0165デフォルトの名無しさん2011/02/01(火) 00:50:47
今俺†階層指向プログラミング†って言葉を発明した
0166デフォルトの名無しさん2011/02/01(火) 11:16:37
うがーーー
luad、本体のGCであぼんorz
0167デフォルトの名無しさん2011/02/04(金) 01:20:32
おすすめの汎用ddocファイルとかどっかに配布されてない?
0168デフォルトの名無しさん2011/02/04(金) 21:27:09
ずっとdwt+d1でGUIやってたけど限界が見えてきた(忍耐力的な意味で)

もう.NETでいいんじゃないかな
0169デフォルトの名無しさん2011/02/04(金) 21:31:05
ネイティブなバイナリであることに拘らないなら
0170デフォルトの名無しさん2011/02/04(金) 22:00:56
D2でGUIライブラリの再発明してる俺乙だな
0171デフォルトの名無しさん2011/02/04(金) 22:01:41
実用面なら.NETだろうけど遊ぶならDだよね・・・
0172デフォルトの名無しさん2011/02/04(金) 22:26:55
Dは下手なスクリプト言語以上に短く書けるのがいい
C#で20行くらいのコードならDなら2行で書けるね。たぶんだけど
0173デフォルトの名無しさん2011/02/04(金) 22:30:59
ネストを深くしないようなスコープガード文って他の言語にあるの?
これが最高でDやめられないんだけど
0174デフォルトの名無しさん2011/02/05(土) 01:33:14
>>168
Qt4 もあるしな
D は色んな意味で遅過ぎた
残念だけど
0175デフォルトの名無しさん2011/02/05(土) 03:47:49
終わった雰囲気出すのは病めようぜ
0176デフォルトの名無しさん2011/02/05(土) 04:15:20
終わってんじゃん
漏れの中ではな
0177デフォルトの名無しさん2011/02/05(土) 12:04:18
まあ、ネイティブコンパイラなんて今後汎用PCでは必要とされないかもね。

D言語は組み込み用途のC言語置き換えを担ってる。
今のところ敵はいないし(Go?)
0178デフォルトの名無しさん2011/02/05(土) 12:52:07
Goはライブラリ揃える人がいないから普及しないよな
DはCの豊富なライブラリが利用できるからこれから流行る  はず・・・
0179デフォルトの名無しさん2011/02/05(土) 13:14:45
GoはGoogle自体普及させる気があるのか判らん
0180デフォルトの名無しさん2011/02/05(土) 13:33:21
     ☆ チン

    ☆ チン  〃  ∧_∧
     ヽ ___\(\・∀・) <DのIDEまだー?
        \_/⊂ ⊂_ )
      / ̄ ̄ ̄ ̄ ̄ ̄ /|
    | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  .|
0181デフォルトの名無しさん2011/02/05(土) 13:42:31
Dほど堂々とC置き換えを宣言した言語はないね。
C++は名前の通り単なる拡張だったし。
0182デフォルトの名無しさん2011/02/05(土) 14:04:53
まあ、やり過ぎて殆ど別の言語になったとも言えるがな → C++
0183デフォルトの名無しさん2011/02/05(土) 14:31:07
流行り廃りもそれなりに意識はするけど、やっぱ触ってて楽しいってのが一番だな
Dほどしっくりくる言語は今のところない
0184デフォルトの名無しさん2011/02/05(土) 16:10:13
Cのライブラリがどんどん使えるから
どれだけDのライブラリ群が使い物にならなかろうと
実はライブラリ面ではあんまり苦労しない

やっぱり問題なのはGUIライブラリみたいな巨大な奴
0185デフォルトの名無しさん2011/02/05(土) 17:01:51
ソース書いてて、ここの処理を後で改良しなきゃ、ってときに
以下の mixin を使って記述しておいてるんだけど、
__FILE__ と __LINE__ を書かなくてもちゃんと mixin した場所を
出力されるようにできないかな?
D2 なら動くはず、と思ってたんだけど、やっぱり駄目みたい。


template CompileMsg(string MSG, string FILE = __FILE__, int LINE = __LINE__)
{
pragma(msg, "CompileMsg = " ~ FILE ~ "(" ~ LINE.stringof ~ "):" ~ MSG);
}

〜ソース中で〜
mixin CompileMsg!("FIXME:bug", __FILE__, __LINE__); ←これならうまくいく。
mixin CompileMsg!("FIXME:bug");←本当はこうやって __FILE__ などを省略したい。
0186デフォルトの名無しさん2011/02/05(土) 17:31:00
__FILE__ と __LINE__ を CompileMsg の引数じゃなくてブロック内で直接使っちゃ駄目なんだっけ?
0187デフォルトの名無しさん2011/02/05(土) 18:24:05
うん、どうしてもテンプレートを定義した場所の情報になってしまう・・・。
0188デフォルトの名無しさん2011/02/05(土) 19:41:58
それ前スレで
「なんで仕様にはテンプレートがインスタンス化された場所の
ファイルと行になるって書いてあるのにならないの?」
「バグだよ」
という流れを見た気がする
0189デフォルトの名無しさん2011/02/05(土) 20:06:01
そりゃ mixin があるから #define いらねーよ、というのを
真っ向から叩き潰すバグだな。
最上級優先で対処すべきD崩壊因子バグだな。
0190デフォルトの名無しさん2011/02/05(土) 22:06:25
>>178
そう言われ続けて何年経った?
0191デフォルトの名無しさん2011/02/06(日) 01:06:16
>>190
一般的な目で見れば、そう言われたことなんてただの一度もないな。
0192デフォルトの名無しさん2011/02/06(日) 01:10:46
D言語やってた層とDelphiやってた層ってなぜか一致するんだよな
0193デフォルトの名無しさん2011/02/06(日) 03:54:43
うそつけ
0194デフォルトの名無しさん2011/02/06(日) 04:40:00
わからんでもない
0195デフォルトの名無しさん2011/02/06(日) 14:40:53
Delphi層はC#に流れてるんじゃないか?別に根拠はないけど。
0196デフォルトの名無しさん2011/02/06(日) 14:48:16
ポトペタのDelphiとポトペタなんて夢のまた夢のDって最も遠い存在じゃないか?
0197デフォルトの名無しさん2011/02/06(日) 15:10:52
言語機能のこと言ってるんじゃないの?
0198デフォルトの名無しさん2011/02/06(日) 16:28:48
Delphiをつくっていたやつが引っこ抜かれてC#つくったとかBorland信者の友人が言ってたな。
0199デフォルトの名無しさん2011/02/06(日) 16:43:11
個人的にDの次によさげなのがC#だけど
凶悪なテンプレートとか考えるとDの方が3歩くらい先を行ってる
C#はすでに崖っぷちだ
0200デフォルトの名無しさん2011/02/06(日) 16:43:29
アンダース・ヘルスバーグ
0201デフォルトの名無しさん2011/02/06(日) 17:25:46
C#は酷いことになってるよね
C++なんて負の遺産を抱えてるから・・・
0202デフォルトの名無しさん2011/02/06(日) 18:11:59
DelphiもDelphiで、TurboPascal時代の古い機能が溜まっていって結構ひどいことになってるけどな。
機能的には関数として書くか式として書くかの違いしか無くて同じように使える関数内関数とクロージャに互換性が無いんだぜ、信じられるか……?
0203デフォルトの名無しさん2011/02/06(日) 19:03:57
Javaは安定してるというがそんなことはない
1.5で予約語が増えたから既存コードが微妙にコンパイルできなくなった
おまけにJ#とかDalvikとか亜種がいて本家とは互換性が無いと来てる
ひどい言語だ
0204デフォルトの名無しさん2011/02/06(日) 20:26:40
もう新しい言語作らないでください。
Dで終わりにしよう
0205デフォルトの名無しさん2011/02/06(日) 20:38:03
D3マダー?
0206デフォルトの名無しさん2011/02/06(日) 21:19:59
D3はプリプロセッサがついて文字列mixinがグレードアップ
クラスを値型としても使えるようにし、多重継承にも対応
そして不評のGCは排除してphobosには標準コンテナライブラリが入る上、
Cのコードを直接書けるようになる
0207デフォルトの名無しさん2011/02/06(日) 21:33:42
びっくりするほどC++!
0208デフォルトの名無しさん2011/02/06(日) 22:38:30
D++ですね。わかります。
0209デフォルトの名無しさん2011/02/07(月) 00:30:13
内部で勝手に new したりしないコンテナライブラリが欲しいなぁ。
0210デフォルトの名無しさん2011/02/07(月) 02:56:57
>>209
ポリシーで分けるようにしたらいいんじゃないかな
0211デフォルトの名無しさん2011/02/07(月) 03:29:13
シンボルが見つからない時のコンパイラさんのサジェスチョンがさり気に性能良くなってるな
0212デフォルトの名無しさん2011/02/07(月) 06:14:28
TypeInfoの値に関して、それがclassかstructかとか判別するにはどうすればいいんでしょうか?
0213デフォルトの名無しさん2011/02/07(月) 07:00:18
bool isClass(TypeInfo info){
 return null !is cast(TypeInfo_Class)info;
}
0214デフォルトの名無しさん2011/02/07(月) 10:43:40
>>209
dcollectionsって自分でアロケータ設定できなかったっけ?
「newしたりしない」ってのがどこまでのこと言ってるのか分からんけども
0215デフォルトの名無しさん2011/02/07(月) 10:49:03
>>209
最近、公式のガベージコレクションのドキュメントに、GCを使うDの操作って項目が追加されてたの知ってた?
まあ、勝手にnewとか言ってる時点で、GCのことよく分って無いんだろうけど。
0216デフォルトの名無しさん2011/02/07(月) 11:06:22
>>212
実は対象の型がどういうものかによって、TypeInfoの型も違ってたりする。
http://ideone.com/KutKu
これを利用して、is式で判定すればいい。

ちなみに、TypeInfoを取得した型の種類を判別するだけなら、is式一つで十分。
02172092011/02/07(月) 22:23:48
うん、GC のことはいくら説明を読んでも使いこなせる気がしないってのが
正直なところかなぁ。
使わなくなったポインタは null を代入しておけば良い、というのを
読んで、それをやってみたりもするんだけど、微妙な不安感が・・・。
コンテナとは違うけど、std.string はソース見てみるとドンドコ new してる
のを見て不安になったり・・・。

だからゲーム開発でよく使う、固定サイズのバッファを
渡して使うコンテナ、というのはすごく安心できるんだよねぇ。
これ以上追加できないってときには assert で止まってくれていいから!
みたいな。

気持ちの問題かしらん。

dcollections はちょっと見てみます。ありがとう。
0218デフォルトの名無しさん2011/02/08(火) 00:13:27
俺も昔はそうだったから気持ちは分かるが、割り切れ
メモリなんて丁寧に管理してやるよりGCに任せた方が安全だと
0219デフォルトの名無しさん2011/02/08(火) 00:22:48
>>217
固定サイズのバッファを使いたいなら、静的配列使えばいいじゃない。
02202092011/02/08(火) 08:01:32
趣味で PC 上で動くアプリ書くだけなら割り切った方がいいよね。
仕事でも使えたらなぁ、という妄想をしてしまうけど、
GC にべったりである限りはそれもできなさそう。

>>219
うん、静的配列を使って push とか pop とかできるコンテナを
書いてます・・・。
0221デフォルトの名無しさん2011/02/08(火) 09:29:18
>>220
あんまり難しく考えるなよ!
GCの動作の仕方なんか、以下の3つだけで説明できるんだから。

・GCはメモリが不足した時に動作する。
・どこからも参照されていないメモリを解放する。
・使われているメモリを隙間なく詰め直す。

上の3つを踏まえたうえで、これをもう一度読んでみ。
http://www.kmonos.net/alang/d/2.0/garbage.html

それでも理解できないとか、もう知ってるよ!とか言うなら、まだ難しく考えている証拠だろう。
0222デフォルトの名無しさん2011/02/08(火) 12:46:29
今時GCがない環境での仕事の方が少なそうだけども

D言語はCoWな方針だからstd.stringの実装で基本newなのは仕方ないね
InPlace版かバッファ渡す版を用意すればそれで解決な気もする
0223デフォルトの名無しさん2011/02/08(火) 12:50:08
そのためのRange・・・とか超適当な事言ってみる
0224デフォルトの名無しさん2011/02/08(火) 20:34:44
テンプレートとスコープガード文のあるC言語みたいに使えばいいんじゃね?
02252092011/02/09(水) 03:08:55
>>221

どうもありがとう。確かに難しく考えすぎかも。
もう一度読み返して勉強してみます。

ちなみに仕事はゲーム機関連で、メモリ管理も
ヒープをどーんと確保してそこから new し、
シーンを移るときはそれを一括で削除
するので、スマートポインタや参照カウンタはおろか、
デストラクタすら書く必要無いような作り方してる。
だからメモリ残量での苦労はあっても
メモリ管理で苦労した記憶はあまりないんだよね。

似たようなことが D 言語でも出来るなら何も問題は無いかも。
0226デフォルトの名無しさん2011/02/09(水) 04:26:11
プレイスメント new が欲しいなぁと思って検索してみたら、
std.conv の emplace がそれに相当するみたいだね。

以下のアンドレイへのインタビュー記事でたどり着けた。
ちなみに記事の内容も少し読んだけど面白かった。
ttp://slashdot.jp/~taro-nishino/journal/514236

0227デフォルトの名無しさん2011/02/09(水) 09:11:12
>>225
GC使ってるからって、大量のメモリを確保できない訳でもなく、大量のメモリを解放出来ない訳でもないから、そこは問題ないね〜。

むしろ、GC自体が使うメモリの消費を許容できるかどうかの方が重要だろう。
0228デフォルトの名無しさん2011/02/09(水) 15:28:40
spawn(&func, socket.accept());
とか出来ないですが、どうすればいいんですか?
0229デフォルトの名無しさん2011/02/09(水) 17:58:43
>>228
エスパーすると、funcの定義が void func(Socket); じゃ無い。

ちゃんと回答が欲しいなら、エラーメッセージを出すべし。
0230デフォルトの名無しさん2011/02/10(木) 10:35:10
↓ これって仕様なの? めまいがするぜ
void main(string[] args)
{
string cba = "CBA";
cba.sort;
writeln(cba); // ABC
assert(cba != "CBA"); // assert failed!
}
0231デフォルトの名無しさん2011/02/10(木) 11:16:14
void main(string[] args)
{
string cba = "CBA"; //←"CBA"への参照を代入
cba.sort; //←"CBA"をソート(未定義動作)
writeln(cba); // ABC(?)
assert(cba != "CBA"); // assert failed!
}

たぶん、これで解決。
string cba = "CBA".dup;

たぶん。
0232デフォルトの名無しさん2011/02/10(木) 13:15:40
char[] cba = "CBA".dup だろ
0233デフォルトの名無しさん2011/02/10(木) 13:41:34
↓ 初学者にはこれを見せてDを学ぶのを思いとどまらせようぜ
void main()
{
string xyz = "XYZ";
assert(xyz.reverse == "ZYX"); // assert success!

string abc = "ABC";
assert(abc.reverse == "ABC"); // assert success!
}
0234デフォルトの名無しさん2011/02/10(木) 15:54:01
>>233
何時の時代の話w
0235デフォルトの名無しさん2011/02/10(木) 22:02:15
D ってやる気無さ杉だろ
そろそろ本気出せよ
0236デフォルトの名無しさん2011/02/10(木) 22:41:33
>>230
dup/idupしなかった場合、醜いことになるんだねぇ
バグなのか仕様なのか…

import std.stdio;
void main(string[] args)
{
string cba = "CBA";
cba.sort;
writeln("cba --- ", cba); // cba --- ABC
assert(cba == "ABC", "a-1"); // assert success!
assert(cba != "CBA", "a-2"); // assert failed!

string x = "CBA";
writeln("x --- ", x); // x --- ABC  おいっ
assert(x == "CBA", "a-3"); // assert success! しかし、sの表示はABCなので、この書き方では正しく評価出来ていない
assert(x.dup.reverse == "ABC", "a-4"); // assert failed!
assert(cba != x, "a-5"); // assert failed!
}
0237デフォルトの名無しさん2011/02/10(木) 23:21:14
sort/reverseはconst/immutableで出来てはいけないはず(自身をソートする)だからバグということで
0238デフォルトの名無しさん2011/02/10(木) 23:37:36
D2だとちゃんと実行時エラー吐いたよ。
0239デフォルトの名無しさん2011/02/10(木) 23:39:38
>>234だけど、思いこみって怖いね!
0240デフォルトの名無しさん2011/02/11(金) 01:07:37
>>238
それ多分Linuxだから
Windowsだとおk
http://www.kmonos.net/alang/d/2.0/dmd-windows.html#differences
0241デフォルトの名無しさん2011/02/14(月) 12:32:58
CTFEでコンパイルエラーが出るとエラー箇所の追跡でハマる
phobosがコンパイラの処理を吸い出す方針なら
我々は望むと望まざるとに関わらず CTFE の輪の中にとらわれ
そこでのコンパイラエラーとの戦いに悩まされる羽目になるであろう

CTFEを言語機能の主要部に置くのと同様
コンパイル時スタックトレース(CTST?)もまた出力されねばならない

auto list = makeXXXlist(); // 関数 は stringを返す
assert(list == ["aaa","bbb","ccc"]); // コンパイルエラー in object.di

な、そう思うだろ?
0242デフォルトの名無しさん2011/02/14(月) 13:12:31
>>241
そう思うだろ? と言われても。

makeXXXlist() が見つからないから、再現できないし。
["aaa","bbb","ccc"] は string[] 型で string 型じゃ無いし。http://ideone.com/AHI9A
テンプレート使うならCTFE必須だし。

こっちとしては、どうしようも無い訳だけども。
0243デフォルトの名無しさん2011/02/14(月) 13:14:38
おっと、CTFEは必須ではないか。
まあ、似たようなもんだけど。
02442412011/02/14(月) 13:55:09
>>242
すまない
今困ってる訳じゃないんだ
// 関数 は stringを返す
ってのは最後の最後に判明したことで

string と string[] を比較するというお馬鹿なミスのために
大海原の真ん中で object.d のソースに漂着させられたことが問題なんだ

命綱(トレース)をくれ・・・
0245デフォルトの名無しさん2011/02/14(月) 19:48:34
DWT2をphobos2でコンパイルしようと努力してみたが
実行段階まで来て意味不明なアクセス違反連発でくじけた
改めて見渡せば五体満足なGUIライブラリが一つもない
GUIなんて窓から投げ捨てろ
0246デフォルトの名無しさん2011/02/14(月) 22:15:05
>>244
CTFEは pragma(msg,〜〜〜); で、printfデバッグ的なことは出来るよ
0247デフォルトの名無しさん2011/02/14(月) 23:13:46
>>246
おk。ありがと
0248デフォルトの名無しさん2011/02/15(火) 00:12:07
OpenGLのpbufferかFBOを使いたいと思い、GLEWをD言語にポーティングしようとしてます。
htodを使って変換しようとしたところ、__int64とかint64_tとかwchar_tでコケます。
どうするのが安全でスマートなんでせうか?
0249デフォルトの名無しさん2011/02/15(火) 02:30:08
更新の少ないライブラリだし、ある程度手でやってもいいんじゃない?
0250デフォルトの名無しさん2011/02/15(火) 15:16:52
>>244
うーん。 確かにわかりづらいなこれ。
http://ideone.com/XWTiA

別にCTFEに限った事では無かったけど。
http://ideone.com/tpyRt

まあ、改善するまでは、こういうメッセージが出るって、覚えておくしかないね。
0251デフォルトの名無しさん2011/02/16(水) 01:49:24
>>248
GLEWはマクロ使いまくってるからhtodで変換するのは難しいと思う
ひとつひとつAPIエントリを取得したほうがいい
0252デフォルトの名無しさん2011/02/16(水) 12:04:56
>>248
ヘッダが15000行もあるぞ、正気かこれ?w

最初の200行くらいで環境依存のすりあわせをやってるから
自分の環境に合わせて -Dxxxx をいくつかやってやればエラーは止まると思う

Windows 32bitならたとえば
htod glew.d -D_MSC_VER=1200 // Visual C 6.0用の環境定義を流用

スマート(っぽい)けど安全かどうかはわからない
まともに使える物かどうかは試してみてくれw
0253デフォルトの名無しさん2011/02/16(水) 12:36:17
>>252
付け加え
glew.h しか試してない
他のヘッダは形式が全く違うし必要かどうかもわからないのでパス

CALLBACK のところがやっぱりおかしい
alias function 〜で extern (Windows) ※もしくはそれに類するもの
を1行ずつ追加しないといかん
0254デフォルトの名無しさん2011/02/16(水) 13:13:34
Dねえ
0255デフォルトの名無しさん2011/02/16(水) 14:09:39
D姉?
0256デフォルトの名無しさん2011/02/16(水) 15:58:30
出ねぇ(4日目)
0257デフォルトの名無しさん2011/02/16(水) 22:28:59
すみません規制解除されたかテストさせてください
0258デフォルトの名無しさん2011/02/16(水) 22:29:49
解除されてた・・・
恥ずかしい・・・
テストするんじゃなかったorz
0259デフォルトの名無しさん2011/02/16(水) 22:45:44
unittest {
 while(!post2ch());
}
0260デフォルトの名無しさん2011/02/16(水) 23:23:47
>>249
>>251
>>252
ありがとう
glextをポーティングして、毎回APIエントリ取得することにしました。
こっちはほぼhtodそのまま。
ただし、やはり>>253みたいに手動でextern(Windows)する必要ありました。
(試行錯誤で一日使った…。でもこれが楽しいのかな。他言語にするか、と思った途端やる気なくなる)
0261デフォルトの名無しさん2011/02/17(木) 00:11:21
>>259

unittest {
 while(!post2ch()) {}
}
0262デフォルトの名無しさん2011/02/17(木) 01:10:42
>>260
glext.hをhtodする時の備忘録。(Windows32bit)

・htod前
gl.hとglu.hのAPIENTRYとかを全消ししてinclude
wchar_tとかint64_tとか
typedef long int int32_t;
typedef long long int int64_t;
typedef unsigned long long int uint64_t;
typedef unsigned short wchar_t;

・htod後
頭にextern(Windows):
htodで追記されてるextern(C)を削除する
GLsyncとか構造体の宣言は手動でやる必要あり
関数宣言の引数名でrefとinが登場してる

他にもあったかもしれんけど、忘れますた。
アホっぽいところあったら指摘してください。

いやー、ちょっとOpenGL借りたいときFBO便利だー
しかし、wglMakeCurrentしないとwglGetProcAddressできないのは誰が決めたんだろう
0263デフォルトの名無しさん2011/02/18(金) 01:16:40
メンバ関数のデリゲートを作った際に、
デリゲートの.ptrがどの実体を指しているか判定する方法はありますでしょうか。
たとえば

class Inst { void f() {} }
auto inst = new Inst;
auto deli = &(inst.f);

と置いたとき、deli.ptrがinstを指すものかどうか判定したいのですが……
0264デフォルトの名無しさん2011/02/18(金) 06:59:44
deliと&(inst.f)を==で比較すればいいんじゃね?
0265デフォルトの名無しさん2011/02/18(金) 09:56:29
>>263
正しい方法じゃ無いかもしれないが出来た。
http://ideone.com/MSWxU
0266デフォルトの名無しさん2011/02/18(金) 19:57:09
ついにstd.datetimeが来たのか…
0267デフォルトの名無しさん2011/02/18(金) 21:04:20
64bit linux サポート
0268デフォルトの名無しさん2011/02/18(金) 21:17:33
ええいさっき2.051でコンパイルしたwxDがタッチの差で動かなくなってやがる
0269デフォルトの名無しさん2011/02/18(金) 21:50:18
>>268
くそー、ノロケか・・・

俺的にはforeach( ; )をforeach( : )に修正して欲しい
0270デフォルトの名無しさん2011/02/18(金) 22:16:34
class A1{}
class A2 : A1{}
class A3 : A2{}
:

という継承関係があるとき、(n <= m)なクラスAn, Amについて
あるメンバ関数fがAn〜Amの間でオーバーライドされているかの判定は
どのような方法がありますか?

isで比較してみたのですがこの方法ではどうも結果がおかしいです
http://ideone.com/bGbOD
0271デフォルトの名無しさん2011/02/18(金) 22:28:19
予約語invariantは消滅したと思ってたけどcast(invariant)ってまだ利くのな
バグなの?仕様なの?
0272デフォルトの名無しさん2011/02/19(土) 02:13:55
>>271
バグじゃね
0273デフォルトの名無しさん2011/02/19(土) 07:59:49
>>270
void delegate() dg1 = &a1.f;
writeln(dg1.funcptr == dg1.funcptr);
デリゲート変数の関数ポインタを比較で、とりあえず出来るみたいだけど
込み入った事すると、前スレで上がったsuper周りのバグに引っかかって、うまく機能しないかも
0274デフォルトの名無しさん2011/02/19(土) 09:26:38
>>271
class invariantが残ってね?
0275デフォルトの名無しさん2011/02/19(土) 12:41:30
>>273
ありがとうできました
superこわいよsuper
http://ideone.com/gQeVL
0276デフォルトの名無しさん2011/02/19(土) 12:46:06
>>275
private設定で貼ってしまったorz
http://ideone.com/zQiIB
0277デフォルトの名無しさん2011/02/19(土) 13:11:33
DFL が落ちまくってイライラしていたが
常駐ソフト(IME Watcher)が悪さしていたでござる

今までWinXPのタスクバーに抵抗してたのに・・・w
0278デフォルトの名無しさん2011/02/19(土) 13:58:12
>>265
ありがとうございました。
そのコードを参考に組んでみたところ、
なにかうまくいかないので調べていたところ、
interface参照をcast(void*)していたことが原因でした。
http://ideone.com/fJEJ3

cast(Object)で再びアドレスが一致したので、
正解ではないかもしれませんがこれでいけそうです。
ありがとうございました。
0279デフォルトの名無しさん2011/02/19(土) 16:43:57
interfaceといえば

void func(T)(T obj) if (is(T:Object)) {}
interface I {}
void main() {
 I obj = new class I {};
 func(obj);
}

これがエラーになるのって言語仕様的にどうなん?
interfaceを実装するものは確実にObjectも継承すると思うんだが…
0280デフォルトの名無しさん2011/02/19(土) 17:23:33
cast(Object)
0281デフォルトの名無しさん2011/02/19(土) 20:09:55.52
>>278
後で思ったんだけど、writeln()に出力する時にcast(void*)が必要なだけで、
普通の比較にはいらなかった気がするw
0282デフォルトの名無しさん2011/02/19(土) 23:52:14.40
文字列mixinで定義してあるシンボルを選択インポートできない・・・やられた
0283デフォルトの名無しさん2011/02/20(日) 01:59:31.78
>>267
マジだ
0284デフォルトの名無しさん2011/02/20(日) 12:37:09.93
誰がマゾやねん
0285デフォルトの名無しさん2011/02/20(日) 21:47:24.13
>>284
このD使いめッ!
0286デフォルトの名無しさん2011/02/20(日) 23:40:14.46
M言語に名前変えようぜ!
拡張子は.mな
0287デフォルトの名無しさん2011/02/21(月) 00:03:09.29
Dさんの視点で考えろよ
S言語が正解
0288デフォルトの名無しさん2011/02/21(月) 02:40:57.02
saD
0289デフォルトの名無しさん2011/02/21(月) 02:44:27.16
MarsからsaDに改名した訳だ
0290デフォルトの名無しさん2011/02/21(月) 22:58:34.97
一年ぶりくらいに触ったら全く別の言語になってて吹いた
相変わらずだな
0291デフォルトの名無しさん2011/02/21(月) 23:11:34.10
一年前はそんな別物だったか?
0292デフォルトの名無しさん2011/02/21(月) 23:12:05.43
とりあえず予約語がたくさん消えてるのは確認した
0293デフォルトの名無しさん2011/02/22(火) 20:12:27.35
DってSIMD演算はCから使えばいいの?
0294デフォルトの名無しさん2011/02/23(水) 02:08:38.08
mmintrin.h〜xmmintrin.h〜emmintrin.h〜intrin.h〜smmintrin.h〜nmmintrin.hをポートするかインラインアセンブラ使えば良いんじゃないの
0295デフォルトの名無しさん2011/02/24(木) 19:29:36.50
ttp://ideone.com/rcqoQ
std.string.cmpとかpureでnothrowで@safeであるかのように思うだろ?
ところがどっこい……っ!
0296デフォルトの名無しさん2011/02/24(木) 20:10:23.87
>>286
Objective-Cとかぶる。
0297デフォルトの名無しさん2011/02/24(木) 22:33:40.59
http://anlyznews.blogspot.com/2011/02/objective-c.html
http://dvcs.servehttp.com/op/Looping/file/b952a5d72c9f

誰かD言語(gcc)版書いてくれ
俺には無理だ
0298デフォルトの名無しさん2011/02/24(木) 22:53:14.95
gdcって実は生きてるんだっけ
ldcも復活したって噂は聞いたが
0299デフォルトの名無しさん2011/02/24(木) 23:51:11.05
ttp://bitbucket.org/goshawk/gdc/wiki/Home
これか。コードはともかくGDCの環境整えるのがめんどくさいな。
0300デフォルトの名無しさん2011/02/25(金) 00:04:11.28
MinGWのgccでO3をつけてコンパイルしたのが6秒くらいだった環境で
-O -inlineをつけたdmdでstructでやってみたら8秒くらいだった
classだとvirtualになるからかさらに1.5倍くらいかかる
もうちょっと頑張れ
0301デフォルトの名無しさん2011/02/25(金) 06:15:16.29
dmdだけど、classでもfinalつけると速くなるなあ。
「Dでは全部virtualだけど、オーバライドされてない関数はコンパイラが検出して非virtualにしてくれるよ!」
ってどっかに書いてあった気がしたんだが。

まあ今まであんまりfinalつける癖がなかったから、
「速度的なアドバンテージもあるから、なるたけつけるようにしようね!」
っていうDさんの優しさだと思っとく。
0302デフォルトの名無しさん2011/02/25(金) 06:56:40.29
>「Dでは全部virtualだけど、オーバライドされてない関数はコンパイラが検出して非virtualにしてくれるよ!」

リンカが検出してくれるなら判るが
コンパイラに検出可能なんかね
0303デフォルトの名無しさん2011/02/25(金) 06:59:42.42
finalがついてる関数は検出して非virtualと判定するよ!とかじゃね?w

あとモジュールprivateなクラスはソース内で閉じてるから検出可能とは思うけどどうなんだろう。
0304デフォルトの名無しさん2011/02/25(金) 11:09:35.51
GCの制御に「弱い参照」って作れませんでしょうか。
オブジェクトAとBが相互参照していても
その相互参照以外の参照ルートがなくなるとGCが回収してくれて、
回収時にデストラクタでメッセージングして相互参照を消すコードを書くような形で。
0305デフォルトの名無しさん2011/02/25(金) 11:49:33.35
アク禁のおかげで若干旬が過ぎた気もするけど
2.052であばばばってなった人殆どいないんかな・・・

std.string.replace >> std.array.replace
std.date >> std.datetime

俺はかーなーりー痛かったぞと。
0306デフォルトの名無しさん2011/02/25(金) 17:37:58.59
>>305
そんな痺れるような痛みが大好きなんですよね。わかります。
0307デフォルトの名無しさん2011/02/25(金) 17:43:09.68
gdcってgdbと紛らわしいからやめて欲しい
0308デフォルトの名無しさん2011/02/25(金) 19:43:51.99
>>305
replaceはまだしもstd.datetimeはドキュメントが膨大すぎて途方に暮れざるを得ない
だが翻訳の中の人の痛みに比べたらこの程度…
0309デフォルトの名無しさん2011/02/25(金) 20:07:01.83
言語仕様の破壊的変更が一段落したから
今度はライブラリかー
わくわくが止まらない
0310デフォルトの名無しさん2011/02/25(金) 20:21:28.19
2.051から2.052にしたらアプリサイズが3MBから5MBになたw

それはそうと、Linuxで開発してる側の人間から見ると、
DMDとGDBて同じにしか思えないんだが…何か違うのかなぁ。

2.052のzip内のDMDがlibcのバージョン違いで動かなかったもんで、
ソースをgccでコンパイルしなおしたりしてるんだけど。
0311デフォルトの名無しさん2011/02/25(金) 20:22:17.99
なぜindexOfをグローバルに出したしstd.datetimeェ・・・
private付けてくれよ
0312デフォルトの名無しさん2011/02/25(金) 21:19:13.23
Objectが投げられなくなったのが地味に面倒だった
0313デフォルトの名無しさん2011/02/25(金) 21:34:41.45
>>304
それ、デフォルトの動作じゃね?
DMDは世代型コピーGCなはず。
0314デフォルトの名無しさん2011/02/25(金) 22:27:52.80
2.048からバージョンアップしたけどOpenGLのポーティングがコンパイル通らなくなってて嬉しくなった
0315デフォルトの名無しさん2011/02/26(土) 00:20:38.13
GUIライブラリどうするかな…
コンパイルできる奴が1つも無いというのは置いておくとして
どれが見捨てられてどれに未来があるのかがまったく読めないのが困る
いっそどれが生き延びてもいいようにラッパを書くか?
0316デフォルトの名無しさん2011/02/26(土) 00:45:29.69
Qt on D があると嬉しい
0317デフォルトの名無しさん2011/02/26(土) 00:57:31.75
WindowsTimeZone.getTimeZoneが失敗するな
かなり適当だけど直してみたhttp://codepad.org/6xHhr1vh
getInstalledTZNamesも直さないといけないはずだけど面倒なので誰か任せた
0318デフォルトの名無しさん2011/02/26(土) 02:08:30.35
>>316
あるよ
ttp://www.dsource.org/projects/qtd
頑張れば動くんじゃないかと思う
0319デフォルトの名無しさん2011/02/26(土) 02:34:41.42
いまはもう動かない〜
0320デフォルトの名無しさん2011/02/26(土) 03:58:01.19
へ〜あるんだ
でも9年も前か
残念だけど
話にならんな〜
0321デフォルトの名無しさん2011/02/26(土) 04:39:16.05
>>320
ん?誤爆?
QtDの最終更新は先月だけど
0322デフォルトの名無しさん2011/02/26(土) 08:26:36.62
GUIする時Eventに対するEventArgはEventの種類で親子関係あるから
classにせざるを得ないと思うんだけど、GC付きの言語でこれやると
例えばMouseEventとかマウスが動くたびに大量のnewが発生してGCがバリバリ動いてしまう
ゲームのメイン処理中はプールしたメモリ内をやりくりしてGC動かないように必死なのに
こういうフレームワーク的な部分でGC発動してたら萎えるなと思うんですけど
そういうものと諦めるものなんですか?
0323デフォルトの名無しさん2011/02/26(土) 09:16:27.72
>マウスが動くたびに大量のnewが発生してGCがバリバリ動いてしまう

newは大量だろうけどその都度GCする訳じゃないし
0324デフォルトの名無しさん2011/02/26(土) 10:35:40.43
>>322
ttp://www.kmonos.net/alang/d/2.0/memory.html#freelists
0325デフォルトの名無しさん2011/02/26(土) 11:51:34.23
マウスをぐりぐり動かすとゲージが伸びて
MAXに到達したらGC発動! ぴきーん!

そんなゲームを作ってくれ
# こういう単純なのが演出しだいでウケるんだよな
0326デフォルトの名無しさん2011/02/26(土) 12:19:09.65
>MAXに到達したらGC発動! ぴきーん!

ここの動作を kwsk
0327デフォルトの名無しさん2011/02/26(土) 12:47:59.19
あれだ
GC過程でWin95時代のデフラグみたいなのが表示されるんだ
0328デフォルトの名無しさん2011/02/26(土) 12:55:52.41
.NETとかGC標準だけどどうやってるんだろうな
PCの性能がよくなってるから速い遅いの感覚があてにならん
0329デフォルトの名無しさん2011/02/26(土) 20:34:06.97
基本ゲーム用に作られたモジュールだけ使うようにして、
残りはオブジェクトプールでなんとかってとこかと
0330デフォルトの名無しさん2011/02/26(土) 20:43:42.76
>>327
デフラグ表示の過程でもnewするだろうから……ゴクリ
0331デフォルトの名無しさん2011/02/26(土) 23:10:08.86
>>322 がGUIライブラリの不満なのか言語に対する不満なのか
よくわからなくなってきた

SDLかわいいよSDL

少し前にSDLでゲーム作ってみたら
テキスト表示するのに毎回フォント→画像イメージ生成する羽目になって
GCについては考えないことにしたw
0332デフォルトの名無しさん2011/02/26(土) 23:34:46.81
>>331
キャッシュ機構作っとくといいよ
0333デフォルトの名無しさん2011/02/27(日) 11:50:21.12
明示的deleteも出来ると言うのに、お前らときたら・・・
0334デフォルトの名無しさん2011/02/27(日) 14:09:48.65
DigitalMarsのmakeって
OBJ = $(SRC:.d=.obj)
みたいなことできないの?
0335デフォルトの名無しさん2011/02/27(日) 15:32:44.39
可能
0336デフォルトの名無しさん2011/02/27(日) 20:07:45.83
マジか…
もうちょっとやり方調べてみるかー
0337デフォルトの名無しさん2011/02/27(日) 21:26:58.11
tamaさん主催でD言語会議、始まるよ!
みんな参加しようぜ
ttp://partake.in/events/feac18f7-0b78-4129-92c5-ad0cce8feafb
03383342011/02/27(日) 21:32:33.53
うーん、置換できん

ひょっとしてDigitalMarsのmakeって何種類かある?
dmdについくるのはハズレmakeだったりするのか
0339デフォルトの名無しさん2011/02/27(日) 21:42:06.82
何年か前に試したけどできなくて、結局当時からmingw32-make使ってるなあ。
0340デフォルトの名無しさん2011/02/27(日) 22:10:13.89
Windowsならnmakeと相性いいよ。batch-modeはやい
0341デフォルトの名無しさん2011/02/27(日) 22:30:33.39
rdmd myappbuild.d
とかやればいいような気がしてきた
0342デフォルトの名無しさん2011/02/28(月) 19:51:18.72
>>337
東京は遠い…
会社がDのために出張費を出してくれるとか

150%ありえないか
0343デフォルトの名無しさん2011/02/28(月) 19:57:41.61
東京なら日本全国日帰り可能だろ?
どんな僻地に住んでんだよ
0344デフォルトの名無しさん2011/02/28(月) 20:15:25.33
>>343
何を言っとるんだ。
東京「が」僻地なんで遠いんだ。
0345デフォルトの名無しさん2011/02/28(月) 20:17:20.80
平安時代の話?
0346デフォルトの名無しさん2011/02/28(月) 20:27:13.73
極東のさらに東端なんかいちいち行ってられねって
0347デフォルトの名無しさん2011/02/28(月) 20:45:20.26
そっか、残念。世界で一番デカイ都市圏なのにな・・・
0348デフォルトの名無しさん2011/02/28(月) 21:17:08.77
>>343
宝島
0349デフォルトの名無しさん2011/02/28(月) 21:28:30.26
(ただし23区に限る)
0350デフォルトの名無しさん2011/02/28(月) 21:37:07.31
ウォルたん辺りがひょっこり来ないかな
0351デフォルトの名無しさん2011/02/28(月) 23:41:25.57
ニコ生でひとつ
0352デフォルトの名無しさん2011/03/01(火) 02:15:27.09
2.052からかなあ
http://ideone.com/t1LaP
0353デフォルトの名無しさん2011/03/01(火) 02:58:32.75
>>352
2.051 では出ない
2.052 では結合後のlength が 2で返ってきててワロタ

きっとLinux 64bitサポートの恩恵に違いない・・・さて 2.052をアンインスト(ry
0354デフォルトの名無しさん2011/03/01(火) 07:56:45.27
条件演算子は他にもバグるのでやめたほうがいい
左右の型を合わせるよう気をつけたら大丈夫かも
0355デフォルトの名無しさん2011/03/01(火) 09:43:11.00
>>352-353
static assert( ("" ~ '\xE3').length == 1 ); // ver.2.051
static assert( ("" ~ '\xE3').length == 2 ); // ver.2.052

どうみても(ry
0356デフォルトの名無しさん2011/03/01(火) 11:45:44.70
そういうののテストコードはないのかね
0357デフォルトの名無しさん2011/03/01(火) 16:22:55.86
ttp://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=43138
irrlicht engine の D portingやりかけ版を発見(まだ動かない)

起動してもグレー画面だった
中をちらっと見たところ GC? 何それおいしいの? な不安を感じたので
これ以上の探索を断念w (ヘッダの変換だけでいいよもう・・・)

対応環境は windows+OpenGL(derelict) D2
0358デフォルトの名無しさん2011/03/01(火) 18:40:44.06
すみません、リファレンスに詳しく載っていないので心配なんですが、
スレッドセーフな配列を作りたい場合は以下で良いのでしょうか?

synchronized Class[] Array;

それとも要所要所にキチンとsynchronized ブロックするべき?
0359デフォルトの名無しさん2011/03/01(火) 23:00:13.03
いつまでも未完成だから流行んないのか。残念だなぁ。
0360デフォルトの名無しさん2011/03/01(火) 23:19:03.68
>>358
それだと変数宣言がsynchronizedブロックで囲まれるだけじゃないかな
使う時にsynchronizedすべきかと
0361デフォルトの名無しさん2011/03/02(水) 00:11:08.93
ttp://www1.axfc.net/uploader/Sc/so/210314
DWT2のbaseとswt(win32)とswtsnippetsを2.052で動かせたのでパッチ置いとく

というかDWTって何なの?
tioportみたいにSWTからJava to Dで自動変換してるの?
それとも全部手作業で変換してるの?
0362デフォルトの名無しさん2011/03/02(水) 03:25:12.59
それ公式に送ってあげたら?
DFL以外にも生きてるのがあったとは
0363デフォルトの名無しさん2011/03/02(水) 06:05:51.66
これどうしてthis呼ぼうとしてるの?
http://ideone.com/t2oy6
0364デフォルトの名無しさん2011/03/02(水) 06:44:20.97
>>362
問題は100点満点で連続1桁を取るレベルの英語力なんだよ…

小学生から英語やっとくべきだったなぁ
Dを触りだしてからとみにそう思う
0365デフォルトの名無しさん2011/03/02(水) 11:41:10.17
>>363
バグじゃね。
0366デフォルトの名無しさん2011/03/02(水) 16:49:23.27
>>363
なんだこれ
こんなバグあるのか
0367デフォルトの名無しさん2011/03/02(水) 18:21:32.62
>>157 の現象がDMD2.052で通るようになったぞと。
0368デフォルトの名無しさん2011/03/02(水) 18:39:58.23
>>362
gtkDもこないだ 2.050,Windows で試してみたらさっくり動いた
trunkはそれなりに更新されているみたい
0369デフォルトの名無しさん2011/03/02(水) 18:57:07.22
そんな中自力でGUIを作ろうとしてしまった件について
HTML5/CSS3のレンダラを書けばそれでGUI代わりにならね?的な。
0370デフォルトの名無しさん2011/03/02(水) 19:18:15.07
DでGUIライブラリ作るのめっちゃ楽しいです!
0371デフォルトの名無しさん2011/03/02(水) 19:28:30.51
Objective-Cのメッセージに変換される呼び出し規約書けないかなあ。楽しくなると思うんだが。
0372デフォルトの名無しさん2011/03/02(水) 20:24:04.81
オープンソースだから、自分で拡張するという方法も、あるにはある。
0373デフォルトの名無しさん2011/03/02(水) 21:02:29.72
仕方なくへたくそな英文メール書いて
パッチを送る直前まで行ったけど踏ん切りがつかない
英文添削スレとかあるのかと思ったのに無いのか…
0374デフォルトの名無しさん2011/03/02(水) 21:06:00.86
ここに書けばいいと思うよ
このスレは住人の1/4くらいは東大関係者だし
0375デフォルトの名無しさん2011/03/02(水) 21:12:46.97
ええと、1/3くらいは英語で論文を書いている人だと思う。
そういうところで気軽に頼めたりするのが2chのいいところ。
0376デフォルトの名無しさん2011/03/02(水) 21:21:15.50
マジか…さすがDさんはエリート言語だな
ちょっと変な所が無いか見ていただけますでしょうか。スレ汚しごめんなさい

Title: DWT2 patch for D2+Phobos

Dear Jacob Carlborg,
Nice to meet you.
(こんにちははじめまして)
I wrote patch to compile and execute DWT2 with dmd 2.052 (and Tango 0.99.9).
(dmd 2.052とあとTangoでDWT2をコンパイル・実行するためのパッチを書きました)
But target is only base, swt (for win32), and swtsnippets.
(対象はbaseとswt(win32)とswtsnippetsだけです)
And, I fixed bugs in swt for win32:
(あと、swt(win32)のバグをいくつか直しました)
* Access violation in beginning drag at TableItem.
  (TableItemのドラッグ開始時にアクセス違反)
* Garbling multibyte string at CTabItem.
  (CTabItemでマルチバイト文字列が文字化けする)
* FileDialog doesn't become modal.
  (FileDialogがモーダルにならない)
* to_path() problem in rakefile.
  (rakefileのto_path()の問題)
My patch include these.
(これらの修正もパッチに入れてます)
Please use it if it is good.
(よろしければお使い下さい)
My English unskilled, sorry.
(私は英語が下手くそです。すいません)

Best regards,
(署名)
0377デフォルトの名無しさん2011/03/02(水) 21:35:57.35
開発系のフォーラムでそこまで形式ばった書き方する人あまり見たことないな。
Hi, Jacob! とかで初めて、 Thanks! とかでしめるのをよく見る。
あと My English unskilled, sorry. とかは不要じゃない?
0378デフォルトの名無しさん2011/03/02(水) 22:02:25.37
俺も英語得意じゃないけど Please はかなり強い謙遜だから
気軽に使わない方がいいって聞いたことがある
0379デフォルトの名無しさん2011/03/02(水) 22:06:09.81
そんなの人それぞれ。

俺は丁寧で気持ちの良いコミュニケーションが好きだから、

could you kindly ~ please?

みたいなのは普通に使うぞ。
0380デフォルトの名無しさん2011/03/02(水) 22:15:06.40
むむむ。please以外の書き方がわかんね

最初だから多少堅めの方がいいんじゃないかなと思っていますが
開発系の常識だと軽い方がいいのかなぁ
とりあえず「英語下手です」とかは外す事にします
なぁに、今はいい翻訳ソフトもあるんだから何とかなるさ

アドバイスありがとうございます
0381デフォルトの名無しさん2011/03/02(水) 22:24:34.52
このスレみとったらオラもD言語やりたくなった
0382デフォルトの名無しさん2011/03/02(水) 22:29:09.76
まあ意味は取れる文だからいいんではないかなと。
語感的に
I wrote a patch for DWT2(base, swt-win32, and swtsnippets) to compiling it with dmd 2.052 (and Tango 0.99.9).
Additionally, I fixed some bugs in swt-win32:
みたいなほうが落ち着くけど、
前置詞とかネイティブでも迷う時があるらしいし。
0383デフォルトの名無しさん2011/03/02(水) 23:04:06.41
>>376
Hi Jacob,

I've written a patch which allows dmd(2.052) and
Tango(0.99.9) to compile and execute DWT2.
It works for base, swt on win32 and swtsnippets.

Also, it fixes some bugs of swt/win32.

Bugs fixed in my patch are:
- An access violation that occurs at the beginning of dragging a TabletItem.
- Multibyte strings are garbled on CTabItem.
- Sometimes it's unable to set FileDialog to be modal.
- to_path() problem in rakefile.

Could you please have a look at it?
I hope it will be included in D.

Thanks,

you name

バグについてはもっと詳細に具体的な情報を書いた方が良いと思われ。
もし既知のバグなら関連する URL とか、発生するタイミングとか。
0384デフォルトの名無しさん2011/03/02(水) 23:06:40.56
D はあまり詳しくないのと、>>376 さんのパッチについても
よく理解していないので、おかしな文書だったらスマソ。
0385デフォルトの名無しさん2011/03/02(水) 23:28:32.04
添削してもらって完璧な英文になって英語できる奴だと勘違いされると割とマジでまずいw
意味さえ伝わればおkくらいの勢いで、添削していただいた文を参考に書き直して送ってみます
後は野となれ灰となれロストなれ

スレ占有失礼しました。ありがとう!
0386デフォルトの名無しさん2011/03/02(水) 23:33:53.73
ガンガレ!
0387デフォルトの名無しさん2011/03/03(木) 06:30:32.26
tangoのFileSystem.rootsに該当する機能ってphobosにはまだ無いのかな
0388デフォルトの名無しさん2011/03/03(木) 17:18:37.84
公式サイトどぞー
0389デフォルトの名無しさん2011/03/03(木) 20:21:20.41
ねんがんのswig の D対応と
irrlicht のインターフェースファイルをてにいれたぞ!

あと1年はやく出会いたかったぜ・・・
0390デフォルトの名無しさん2011/03/03(木) 21:43:40.60
C++とのインターフェイスがしっかりしてれば、こんな問題起きないのに!
0391デフォルトの名無しさん2011/03/03(木) 21:48:17.98
C++の言語仕様が糞だから簡単にコンパイラを実装できるものを目指してDが作られたのに
C++とのIFをしっかり盛り込んだら本末が転倒しちゃう!
0392デフォルトの名無しさん2011/03/03(木) 21:51:35.63
ウォルたん「C++コンパイラの実装できるやつなんてこの世に存在しねーよ
      だから完璧なインタフェースも無理だよ」
0393デフォルトの名無しさん2011/03/03(木) 21:55:13.88
マングリング規則を揃えるだけじゃん?
0394デフォルトの名無しさん2011/03/03(木) 22:17:04.50
>>393
portingェ・・・
0395デフォルトの名無しさん2011/03/03(木) 22:24:03.97
wxDの努力には涙ぐましいものがある
0396デフォルトの名無しさん2011/03/03(木) 22:29:34.96
.NET的なフォーマット関数("{:0X}"みたいなの)ってまだ無いよね
書こうかな

と思ったところでstd.dateの二の舞になるから誰も書かないだけだと気づいた
0397デフォルトの名無しさん2011/03/03(木) 22:48:03.69
>>396
馬鹿な、tangoは.NETスタイルだぞ
0398デフォルトの名無しさん2011/03/03(木) 23:22:53.83
僕のライブラリに至ってはobject.Error: Access Violationが出てまともに動かないスタイルだぞ!
0399デフォルトの名無しさん2011/03/04(金) 00:24:57.36
いや、そういうスタイルならまともかどうかは関係ない

僕のはイカスAVが出るスタイルさ と言うべき
0400デフォルトの名無しさん2011/03/04(金) 01:51:28.61
T enforce(T)(T value, lazy Exception ex);
って定義なのに
enforce!sizet(line.length, new IOException);
じゃなくて
enforce(line.length, new IOException);
で呼び出せるのってどんな仕組み?
0401デフォルトの名無しさん2011/03/04(金) 02:18:19.07
http://www.kmonos.net/alang/d/2.0/template.html
関数テンプレート の暗黙型推論
0402デフォルトの名無しさん2011/03/04(金) 11:54:11.30
const(Object)refとかマジで欲しいんだけど

const(Foo) foo = getFoo1();
  :
foo = getFoo2();

とかやりたいときにいちいち
import std.typecons
とやって
Rebindable!(Foo) foo = getFoo1();
とやるなんて狂気の沙汰だぜ
autoすら使えない…
おまけに演算子オーバーロードとか無効化されるし
0403デフォルトの名無しさん2011/03/04(金) 14:38:54.51
int c;
int[] arr;
std.algorithm.countUntil(arr, c); // OK

int cc;
const(int[]) carr;
std.algorithm.countUntil(carr, cc); // だめ

うーん、通ってほしい…
0404デフォルトの名無しさん2011/03/04(金) 15:14:57.88
immutable COMMA = ",";
std.string.split("a,b,c", ","); // OK
std.string.split("a,b,c", COMMA); // (immutable(char)[], immutable(char[]))だから駄目と言われる

templateの引数チェックが鬼すぎるんだ
0405デフォルトの名無しさん2011/03/04(金) 22:04:11.01
あああもうDラヴ!D大好き!D愛してる!!
Dのない生活なんて考えただけで・・・

やだー!!
0406デフォルトの名無しさん2011/03/04(金) 22:51:12.24
ttp://dusers.dip.jp/modules/wiki/?Other%2FD%E8%A8%80%E8%AA%9E%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E5%95%8F%E9%A1%8C%E7%82%B9%E3%81%BE%E3%81%A8%E3%82%81
DWTには何に問題も無いと申したか

WDTだって?ちょっとぐぐってくる!
0407デフォルトの名無しさん2011/03/04(金) 22:54:55.30
>>406
よせ、それはまだ極秘のプロジェクトだ
かかわると消されるぞ
0408デフォルトの名無しさん2011/03/05(土) 00:14:25.09
ところで std.zip や std.zlib の void[] ってどんなもんだとイメージすればいいの?
ubyte[] はイメージしやすいけど、似たようなもん?
0409デフォルトの名無しさん2011/03/05(土) 00:16:26.69
import std.regex;
void main() {
 .replace("a", .regex("a"), "b"); // ok
 .replace("a"w, .regex("a"w), "b"w); // compile error
 .replace("a"d, .regex("a"d), "b"d); // compile error
}

Dって楽しいなァアーハハハアハアハアハ
0410デフォルトの名無しさん2011/03/05(土) 00:22:01.25
>>void[]
有名進学塾に通う塾生達かな
空っぽの心で勉強だけひたすらしてるイメージ
0411デフォルトの名無しさん2011/03/05(土) 12:52:18.95
そろそろD言語で何か作ろうか
0412デフォルトの名無しさん2011/03/05(土) 13:39:22.72
>>ubyte[]
こっちは学校のトイレでタバコ吸ってるDQN達か。
噛み付くぞてめぇ!って粋がってるイメージ
0413デフォルトの名無しさん2011/03/05(土) 14:25:07.68
>>411
Dのプロジェクトなんて無数にあるぜ!
でも心の綺麗な人にしか見えないんだ
0414デフォルトの名無しさん2011/03/05(土) 14:35:04.70
https://github.com/search?language=d&q=%2F%2F&type=Repositories
0415デフォルトの名無しさん2011/03/05(土) 15:53:42.34
心のきたない俺は
空に瞬いている星と地に墜ちた星を見分けられる
ようになりたい
0416デフォルトの名無しさん2011/03/05(土) 16:10:17.11
必死になってD1からD2に移植してきたアプリがまともに動くようになってしまった
コンパイルエラーが出ない
const関係で詰んだりしない
unittestが意味不明な理由で失敗しない
循環static thisで落ちたりしない
どこからともなくHiddenFuncErrorが投げられたりしない
よくわからない箇所でアクセス違反が発生したりしない

虚しい…
0417デフォルトの名無しさん2011/03/05(土) 16:39:15.03
じゃあ次は >>414 に登録して星になるんだ
0418デフォルトの名無しさん2011/03/05(土) 16:47:57.97
D言語の人ってエディタ何使ってるんですか?
0419デフォルトの名無しさん2011/03/05(土) 16:53:22.99
サクラエディタにキーワード登録して使ってる
0420デフォルトの名無しさん2011/03/05(土) 17:02:55.72
emacsかVisualD
0421デフォルトの名無しさん2011/03/05(土) 17:32:44.81
DFL+scintillaで自作エディタ
0422デフォルトの名無しさん2011/03/05(土) 17:34:11.47
サクラエディタがもう一人。
VisualDはutf-8で保存してくれるようになったんかな。
0423デフォルトの名無しさん2011/03/05(土) 18:32:53.98
秀丸とマクロ
0424デフォルトの名無しさん2011/03/05(土) 18:40:03.66
VisualDうまく入れられなかった。
画像付きで解説してるところないですか?
あるいは誰か解説をしてもらえると幸いです。
0425デフォルトの名無しさん2011/03/05(土) 18:47:06.85
VisualD をGoogleの画像検索すると、1番上にそれらしいのが出るぞ
0426デフォルトの名無しさん2011/03/05(土) 18:59:34.66
サクラエディタ
Dの1_234.56みたいな数値定数とr""を認識してくれる設定ファイルが欲しい・・・
0427デフォルトの名無しさん2011/03/05(土) 19:07:17.03
>>424
VS2003〜2010のどれかをインストールしてる状態でVisualDをインストールしてDMDのフォルダを指定するだけじゃん
VS立ち上がったままでやったら駄目だぞ?
0428デフォルトの名無しさん2011/03/05(土) 19:15:14.70
>>426
`\"`とかやると変になるよな
正規表現キーワードとかで何とかなるのかしらん
0429デフォルトの名無しさん2011/03/05(土) 19:18:51.42
>>426
うまく機能してるか不安だけど

/(?<!\w)0[xX][\da-fA-F_]*(\.[\da-fA-F_]+)?([pP][\+\-]?[\d_]+)?[fFL]?i?(?!\w)/k
/(?<!\w)([\d_]+\.([\d_]+)?|([\d_]+)?\.[\d_]+)([eE][\+\-]?[\d_]+)?[fFL]?i?(?!\w)/k
/(?<!\w)([1-9][0-9_]*|0[bB][01_]+|0[xX][0-9A-Fa-f_]+|0[0-7_]*)(L|u|U|Lu|LU|uL|UL)?(?!\w)/k

/(`[^`]*`|(?<!\w)r"[^"]*"|(?<!\w)q"[^"]*")[cwd]?/k
0430デフォルトの名無しさん2011/03/05(土) 19:32:19.31
おっと、通常の""文字列と''の文字定数も必要なんだった
/((?<!\w)x"[\s0-9A-Fa-f]*"|(?<!r)"([^"\\\r\n]|\\.)*?")[cwd]?/k
/'[^']+'/k

標準機能の""と''の色付けは無効にして、全部正規表現キーワードでやってる
0431デフォルトの名無しさん2011/03/05(土) 19:32:30.51
おお、8進数まで認識する…
GJ
0432デフォルトの名無しさん2011/03/05(土) 20:37:02.75
正規表現キーワードは複数行対応したら神なんだが
0433デフォルトの名無しさん2011/03/05(土) 21:48:46.23
よし、サクラエディタはオープンソースなんだからD言語で実装し直そうぜ
0434デフォルトの名無しさん2011/03/05(土) 21:59:52.22
それはやらないのがDスタイルだろ?
0435デフォルトの名無しさん2011/03/05(土) 22:23:57.23
サクラエディタの描画周りのコードの汚さェ・・・
0436デフォルトの名無しさん2011/03/05(土) 22:27:40.81
今まで@propertyをメソッドの一行上に書くスタイルで書いてたんだが、

class Test
{
  @property
  void delegate() func()
  {
    return _func;
  }
  private void delegate() _func;
}
がコンパイル通らなくてびっくりした。

void delegate() @propertyっていう型に認識されてるっぽいんだが、そんなものあるのか?
まぁ今後はvoid delegate() func() @propertyって後置しようと思ってるから良いんだけど…
0437デフォルトの名無しさん2011/03/05(土) 22:42:55.96
後置ってそのためだったのか
0438デフォルトの名無しさん2011/03/05(土) 22:54:55.62
その@は句読点じゃなくてatという単語だったのかw
@property ってアノテーションと同じ感覚で書きたくなるよなあ
0439デフォルトの名無しさん2011/03/05(土) 23:06:13.31
Javaのアノテーションとpythonのデコレータも同じような書き方で全然意味が違ってややこしいのに
これ以上@に変な意味与えるのやめて
0440デフォルトの名無しさん2011/03/05(土) 23:17:33.18
@propertyとかを別の行に書くとgrepして検索した時に
プロパティってすぐ分からないから1行に書きたくなる俺は異端?
0441デフォルトの名無しさん2011/03/06(日) 06:26:20.24
前置の@propertyが高階関数に付けられなくても困らないかな?
0442デフォルトの名無しさん2011/03/06(日) 18:58:03.40
>>422
文字コードの話ならエディタでDのソースコードを開いている状態で
VSのファイルメニュー→「保存オプションの詳細設定」で変えられるぞ
ソリューションエクスプローラで.dファイルを選択しているだけだと出てこないのが罠
0443デフォルトの名無しさん2011/03/06(日) 20:54:45.48
128 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/14(火) 05:21:24
VisualDがutf-8で保存してくれない……。

129 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/14(火) 11:32:49
日本語が使えなくなるだけだと思えば許せる。
VisualDはVS2010のデバッガが使えるってだけで最高だけど、やっぱりインテリセンスがなぁ。

130 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/14(火) 17:42:21
ファイル→保存オプションの詳細設定でUTF-8に変えてくれる
デフォでUTF-8にして欲しいけどな

131 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/15(水) 00:58:23
簡単に解決できそうな気がするけど。問題として認識されてないんだろうなあ。

132 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/15(水) 01:00:25
いつものパターンか
0444デフォルトの名無しさん2011/03/06(日) 21:02:38.90
>>443
VSの仕様って良く分からんけど、アドオン側からデフォルトの保存コードを変更できるもんなの?
VS本体でも変えられないのに
0445デフォルトの名無しさん2011/03/06(日) 21:29:46.06
俺もよくわからんが、VS本体でも変えられないってのはよくわからん。
保存オプションからコードは変えられるんだろ?
新規作成かなんかの時にアドオンからutf8にしてくれるなら、
別にVSの「デフォルトの保存コード」を変更する必要はなくね?
いや、そういうことができるのかはわからんし、結論としてはよくわからんが。
0446デフォルトの名無しさん2011/03/06(日) 21:32:29.56
メモ帳でBOMつき空ファイル作って
Visual D の新規ファイルのテンプレートに
突っ込んでやればいいんじゃないかな
0447デフォルトの名無しさん2011/03/07(月) 05:55:31.67
>>427
なんか、前はなぜまともにいかなかったのかわからないほどあっさりでけたw
これ、メソッドのインテリセンスはなし?
0448デフォルトの名無しさん2011/03/07(月) 10:50:50.27
Eclipse使い('A`)ノ
0449デフォルトの名無しさん2011/03/07(月) 14:11:28.12
インラインアセンブラのコンパイルエラー文が
標準出力に出ると気づかずに時間を無駄にした・・・統一して orz

コンパイラ     →エラー出力
インラインアセンブラ→標準出力
リンカ       →標準出力
0450デフォルトの名無しさん2011/03/07(月) 20:17:26.02
DWT2 with D2、何とか動くけどたまに異常に長時間固まるなぁ
どこを直せばいいことやら…
0451デフォルトの名無しさん2011/03/07(月) 20:56:17.87
>>450
dmd
0452デフォルトの名無しさん2011/03/07(月) 21:52:38.89
確かにphobosよりはdmdっぽい
0453デフォルトの名無しさん2011/03/07(月) 22:38:49.62
GCが悪さしてるとかじゃなくて?
0454デフォルトの名無しさん2011/03/07(月) 22:59:08.75
今core.sync.*ってまともに動くの?
0455デフォルトの名無しさん2011/03/08(火) 02:37:21.81
多分動く
0456デフォルトの名無しさん2011/03/08(火) 06:09:17.48
課題が山積過ぎて今何やってるのかさっぱりわからんのだが
0457デフォルトの名無しさん2011/03/08(火) 23:52:27.11
大丈夫だ。Dのコミュニティには船頭クラスの人材がゴロゴロいるからな
0458デフォルトの名無しさん2011/03/09(水) 00:04:09.01
船頭多くして山に登る・・・?
0459デフォルトの名無しさん2011/03/09(水) 00:08:55.70
船頭多くしてTIOBEランキングを登ってくれると良いんだが
0460デフォルトの名無しさん2011/03/09(水) 00:10:34.66
委員会設計と独裁者設計の悪いとこどりしてね?w
0461デフォルトの名無しさん2011/03/09(水) 01:08:10.12
クラスのポインタ取るのって void* でキャストとかすればよかったのね。。。
クラスは参照だっていうから、C++ のように & してたけどうまくいかなんだ。
emplace のソース見てはじめて知ったけど、常識?
0462デフォルトの名無しさん2011/03/09(水) 01:09:21.34
面接でD言語使ってますとアピールしたら不思議がられた。
0463デフォルトの名無しさん2011/03/09(水) 01:15:08.22
会社にもよるが、元々DelphiやらHaskellやらScalaやらを使ってます!みたいなところでもないかぎり
むしろ言わないほうがいいと思うぞ。
普通の会社はプログラミング言語といえばC系とJavaとC#とPHPぐらいしか選択肢がない。
0464デフォルトの名無しさん2011/03/09(水) 13:40:29.21
日本語訳サイトの更新キター と思ったら std.datetimeが英語だw
これは誰か翻訳手伝ってくれということだな・・・
0465デフォルトの名無しさん2011/03/09(水) 19:25:49.64
日本語サイトの中の人はたまに英文のまま公開してからゆっくり翻訳してる事があるから
つまり手伝ってあげて
0466デフォルトの名無しさん2011/03/09(水) 23:13:25.42
そういえば自分も構造体の継承が欲しかったんだけど、
alias this すれば近い感じで使えるのね。便利便利。
0467デフォルトの名無しさん2011/03/10(木) 10:58:53.05
だからクラス使おうぜ・・・
0468デフォルトの名無しさん2011/03/10(木) 13:59:19.02
Phobosにも構造体で実装されてるのが結構あるから、
そういう既存のものに自分機能をつけたいことはあるかもしれない。
0469デフォルトの名無しさん2011/03/10(木) 19:49:49.59
機能の追加には興味ないけど一つの配列に種類の異なるものを入れたりすることには興味ある
Variant使えばいいのか?
0470デフォルトの名無しさん2011/03/10(木) 20:04:22.60
この前たまたま見つけたんだけど
http://www.kmonos.net/alang/d/2.0/phobos/std_typecons.htmlのstruct Tupleのとこ
使えるのか?
0471デフォルトの名無しさん2011/03/10(木) 20:34:30.39
コンパイル時に型が決定してる必要がある
0472デフォルトの名無しさん2011/03/11(金) 10:58:32.61
>>469
継承
タプル
variant型

お好きなのをどうぞ。
0473デフォルトの名無しさん2011/03/11(金) 11:54:04.50
継承→事前定義の必要あり
タプル→型の順番はコンパイル時に決まる。その場で定義できる構造体に等しい。
variant→実行時に何でも入るが、実行時処理が増えるのと、値取り出しの型に関する処理が面倒。
って感じか。
0474デフォルトの名無しさん2011/03/11(金) 12:15:18.10
ああ、もう二つあった。
共用体
void*型
0475デフォルトの名無しさん2011/03/11(金) 12:46:56.80
variantは共用体やvoid*型に実行時型情報を加えた構造体ですな。
0476デフォルトの名無しさん2011/03/11(金) 12:52:01.96
誰か日本語シンボルを扱えるデバッガをつくってくれ

ローカルシンボルをすべて日本語で記述して
漢字かな混じり文の伝統を継ぐガラパゴス文化を創造するのだ

なに、全角英数が使えないだと・・・?
0477デフォルトの名無しさん2011/03/11(金) 13:02:08.85
>>476
言い出しっぺの法則。
0478デフォルトの名無しさん2011/03/11(金) 18:51:07.71
boxer それなりに便利だったんだけど、消滅する運命になってしまったね・・・。
なんでだろ。
ちなみに今使おうとするとコンパイラが落ちた気がする。

>>476
前お遊びでやってみたんだけど、いちいち日本語に切り替えるのが
めんどくさくてやめてしまった・・・。
全てを全角でかけないときついね。


地震怖かったー・・・!
0479デフォルトの名無しさん2011/03/11(金) 21:22:07.39
boxはvariantに置き換えられるだけでしょう
コンパイル時型情報を生かした高速なやつ
0480デフォルトの名無しさん2011/03/11(金) 21:27:43.79
地震後にD言語友の会が死んでてひやっとしたけど
中の人は神回避したらしい
0481デフォルトの名無しさん2011/03/12(土) 00:59:02.79
地震に巻き込まれて命を落とされたD言語利用者の御冥福をお祈りします
0482デフォルトの名無しさん2011/03/12(土) 01:41:34.72
itkz が ついったでデマ流したとかで叩かれてる
どのくらい関わっている人かよく知らんけど
0483デフォルトの名無しさん2011/03/12(土) 14:06:38.74
Visual D の更新が活発だ
ううむ、これは困ったぞw
0484デフォルトの名無しさん2011/03/12(土) 20:09:50.07
クラスのgetterからクラス内の配列をconstにして返してもらって
その配列をdupでコピーすると配列のメンバに変更を加えることができる
理屈としては問題ないんだろうけどなんか気持ち悪いなぁ…
0485デフォルトの名無しさん2011/03/12(土) 20:13:29.13
状況がよくわからんけどオリジナルに変更加えられるわけじゃないんでしょ?
変更したくないなら dup を const で受け取ったりすればいいのかな?
0486デフォルトの名無しさん2011/03/12(土) 20:34:48.92
>>485
>>484 は配列の要素がクラスの時じゃないか?
ttp://ideone.com/epioS

たしかにこれは気持ち悪いな
0487デフォルトの名無しさん2011/03/12(土) 21:11:29.93
>>486
なるほど、クラスか・・・。
これは気持ち悪い。
0488デフォルトの名無しさん2011/03/12(土) 21:32:09.28
推移的constが推移しないんだよな
0489デフォルトの名無しさん2011/03/12(土) 22:29:09.44
よくわからんが、const([]T) をdupしたら []T になっちゃうってことか?
本当は[]const(T)になってほしい、と。
0490デフォルトの名無しさん2011/03/12(土) 22:29:32.02
[]の位置が逆だ……ごめん。
0491デフォルトの名無しさん2011/03/12(土) 22:55:45.12
クラスの場合const(T)==const(void*)かmutable(T)==mutable(void*)かしか定義できない
const(void)*にあたるものがない
0492デフォルトの名無しさん2011/03/13(日) 00:53:53.49
http://ideone.com/8I6aK
http://ideone.com/hwZln
http://ideone.com/INckh

これを見る限りだと、単純にdupのバグっぽいな。
0493デフォルトの名無しさん2011/03/13(日) 06:26:28.93
>>409
パッチ上げられてたぞ
完全に直ってるのかしらんけど
0494デフォルトの名無しさん2011/03/13(日) 12:33:06.67
ifでテンプレート引数を絞り込むのって乱用するべきじゃないな
細かくやりすぎると>>409みたいに想定漏れを招く
どうせテンプレート内でエラーになるんだから通してしまえばいい
04954942011/03/13(日) 12:33:57.11
>>404だった…
404だから見えなかったんだ
0496デフォルトの名無しさん2011/03/13(日) 15:11:09.55
>>494
これ、まさにコンセプトでも懸念されてたことなんじゃないか
0497デフォルトの名無しさん2011/03/13(日) 15:56:47.22
static if で実現できることはそっちでやった方がいいお

Constraint のシンタックスハイライトに対応するIDEは登場するのかなー?
0498デフォルトの名無しさん2011/03/13(日) 18:17:04.16
テンプレート制約って&&で繋げるよりもifの行を増やす方向の方がいいなあ
&&を使った今の状況だとどの条件に引っかかったかが長々と表示されてすげー分かりにくい
0499デフォルトの名無しさん2011/03/13(日) 19:39:02.33
プリプロセッサを無くした代わりにポストプロセッサが必要になりました、と
0500デフォルトの名無しさん2011/03/13(日) 20:13:11.61
>>498
というと、どうかく?
0501デフォルトの名無しさん2011/03/13(日) 20:22:39.33
>>500
std.container.SList.thisで例えれば、
this(Stuff)(Stuff stuff)
if (isInputRange!Stuff
    && isImplicitlyConvertible!(ElementType!Stuff, T)
    && !is(Stuff == T[]))
{
これを、
this(Stuff)(Stuff stuff)
if (isInputRange!Stuff)
if (isImplicitlyConvertible!(ElementType!Stuff, T)
if (!is(Stuff == T[])
{
こう書いて、引っかかったifを示してくれればいいなあとか思う
0502デフォルトの名無しさん2011/03/13(日) 20:35:55.68
>>501
いいかも
0503デフォルトの名無しさん2011/03/13(日) 20:47:43.33
ubyte* p;があるとして
ubyte[] r = p[0..n];したときのrってスタック上に確保されないで
ヒープ上でnewされてRangeかなんかのインスタンスになっちゃいます?
0504デフォルトの名無しさん2011/03/13(日) 21:39:08.41
それだけでは、内容のコピーはされない。pの示す先を直接参照する格好
r ~= 0; などすればコピーされるけど
0505デフォルトの名無しさん2011/03/13(日) 22:20:08.61
>>504
rの持ってる情報ってpへのポインタとlengthくらいだと思うんですけど
これはスタック上かGC管理のヒープ上のどちらに確保されるんでしょうか
0506デフォルトの名無しさん2011/03/13(日) 22:33:36.37
>>503の例だと新たに確保はされず、「共有」される
0507デフォルトの名無しさん2011/03/13(日) 22:51:20.65
>>506
ありがとうございます
0508デフォルトの名無しさん2011/03/13(日) 22:53:34.34
lengthどこ行った?
0509デフォルトの名無しさん2011/03/13(日) 23:00:33.68
こういうソース見て目からウロコが落ちた、と思った
union{
 wchar[] dstring;
 DStringW filename; // 配列ヘッダの構造体
}
struct DStringW{
 uint length;
 wchar* pointer;
}
0510デフォルトの名無しさん2011/03/13(日) 23:23:15.97
特に珍しい構造でもあるまい
0511デフォルトの名無しさん2011/03/14(月) 10:01:45.79
>>505
コンパイラによる。
でもそもそも、本当にそんなことを気にしないといけないプログラムを作っているのか?
0512デフォルトの名無しさん2011/03/14(月) 19:42:01.87
>>492
ttp://ideone.com/9H6Mn
合法な節税を積み重ねてたら税務署に怒られたIBMの気分だぜ
0513デフォルトの名無しさん2011/03/14(月) 19:59:37.65
immutableとクラスは今かなり水と油だなあ
0514デフォルトの名無しさん2011/03/14(月) 20:07:54.19
>>512
プログラムの内容が現象とマッチしていてすばらしいw
0515デフォルトの名無しさん2011/03/14(月) 20:24:22.92
>>513
いや、ただ単にdupが酷いだけ。
0516デフォルトの名無しさん2011/03/15(火) 07:36:03.45
そういえばコンパイル時乱数、なんてできんのかな??
かぶらない変数名の定義とかに使いたい(__LINE__ がうまく動けばそれで良い話だが・・・)。
0517デフォルトの名無しさん2011/03/15(火) 09:27:41.90
むしろ乱数だったら希少な確率で被って、再現性のないコンパイルエラーになるんでは。
もう一回コンパイルしたら何故か通る。
0518デフォルトの名無しさん2011/03/15(火) 11:54:27.50
>>516
配列使えよ・・・
0519デフォルトの名無しさん2011/03/15(火) 15:19:13.69
>>517
そこはあれですよ。種を変えてその場をしのぐ。

>>518
乱数もそうだけど、配列にしてもどこかで状態を保持しないといけないね。
やり方わからん。。。
0520デフォルトの名無しさん2011/03/15(火) 15:32:34.88
予めファイルに乱数列を書きだしておいてimport()で読み込むとかどうッスか
0521デフォルトの名無しさん2011/03/15(火) 15:45:13.11
>>519
環境変数とかどう
0522デフォルトの名無しさん2011/03/15(火) 16:38:51.09
セシウムをデクリメントするスーパープログラムはないのかっ!
0523デフォルトの名無しさん2011/03/15(火) 16:52:10.76
おまえら、乱数で変数名を決めるとか、愚策だって分ってるんだよな?
0524デフォルトの名無しさん2011/03/15(火) 17:16:17.84
ええ、そりゃもう分かってますw
0525デフォルトの名無しさん2011/03/15(火) 17:17:21.81
__LINE__ がちゃんと動けばそれでいい。けど動かないから・・・。
0526デフォルトの名無しさん2011/03/15(火) 17:32:30.12
__RANDOM__
0527デフォルトの名無しさん2011/03/15(火) 17:34:13.27
使い込むと数百回に一回しかコンパイルが通らない神コードが出来ます
0528デフォルトの名無しさん2011/03/15(火) 17:39:23.84
ストカスティックプログラミング!
0529デフォルトの名無しさん2011/03/15(火) 19:25:42.77
Dにもgensymだと……?
0530デフォルトの名無しさん2011/03/15(火) 19:27:17.52
やはりプリプロセッサを
0531デフォルトの名無しさん2011/03/15(火) 21:50:05.37
>>520
そういやdmd本体もまずソースコードを生成するプログラムを作ってから
そいつで生成したコードを改めてコンパイルしてた気がする

makeの話題で build.d 書けば、みたいな話が出てたし
一つのソースに収まらない事を気にしなければ簡単にできそうだ
0532デフォルトの名無しさん2011/03/15(火) 22:58:56.70
コンパイル時にこういうの使えない?

import std.process;
import std.conv;

string getUniqID()
{
    string id = environment["uniq_id"];
    environment["uniq_id"] = to!string(to!int(id) + 1);
    return id;
}
0533デフォルトの名無しさん2011/03/16(水) 13:12:43.75
>>532
コンパイル時に環境変数を書き変える・・・?

まあたぶん、これでやりたいことは出来るだろう。
http://www.kmonos.net/alang/d/2.0/rdmd.html
0534デフォルトの名無しさん2011/03/16(水) 13:16:35.52
ああそれとも、コンパイル時にバージョン番号を自動的に+1させたいのかな?
そういうツール、探せばあると思うけど。(Dでも使える無料のが。自分で作ってみるのも一興。)
05355162011/03/16(水) 14:36:35.00
みなさんすいません。
やりたいことは RAII を使ったクラスに対して new するような
テンプレートミックスインを作って運用したいんだけど、
入れ子にしたときに変数名がかぶるのを避けたい、ということです。
例えば

template Hoge()
{
mixin("scope auto hoge = new ScopeHoge();");
}

を使って

{
mixin Hoge!();
〜処理〜
{
mixin Hoge!(); // 変数名衝突?
}
}

ていう使い方も出来るようにしたいんです。
行番号を変数名にくっつけられれば避けられるんですけど、
現状それができないなぁ、という感じです。
今は mixin Hoge!(__LINE__) というように使えばいいか。
05365162011/03/16(水) 14:36:49.78
と思ったんですけど、あれ?
今やってみたらコンパイル通りました。

mixin template Hoge()
{
scope auto hoge = new ScopeHoge();
}

でも普通にコンパイル通りますね。意図通りに動いているかどうかは
まだ確認していないですけど。。。
0537デフォルトの名無しさん2011/03/16(水) 14:52:00.10
rdmdて使ったこと無いんだけど、
ソースが書き換わらない場合でdmdの実行と比較して、
やっぱり遅いよね?
普通に考えればソースファイルのチェックしなきゃだし。
0538デフォルトの名無しさん2011/03/16(水) 17:46:41.54
>>536
http://www.kmonos.net/alang/d/2.0/template-mixin.html
>Mixinの中の宣言は、周囲のスコープに 'import' されます。 Mixinの中の宣言と同じ名前の宣言が周囲のスコープに存在した場合、 周囲のスコープの宣言が、 Mixinのそれを上書きします
らしい。

>>537
別に重くても問題無いでしょ。
05395162011/03/16(水) 18:10:00.70
>>538
どうもありがとう。
もう __LINE__ を渡すようにしてやってみるわ・・・。
今は何故かスコープクラスのデストラクタが呼ばれないことがあるのを調査中・・・。

ちなみに処理計測のスコープクラスです。
05405162011/03/16(水) 20:20:40.82
わーお。
テンプレートでミックスインしてその中で new したスコープクラスの
デストラクタ呼ばれないっぽい。
素直に new と書くか・・・。
0541デフォルトの名無しさん2011/03/16(水) 20:36:51.32
>>539
そんなことするなよ。
代わりに、aliasパラメタを使って何とかしようぜ。
テンプレートの外で宣言したシンボルを、テンプレートに渡すんだ。
たぶんいける。
05425162011/03/16(水) 21:00:10.02
>>541
aliasパラメタね。やってみる。ありがとう。
0543デフォルトの名無しさん2011/03/16(水) 22:08:16.09
>>542
aliasじゃ無いが、文字列ミックスインを使った方法でやってみた。
http://ideone.com/mQRdZ
0544デフォルトの名無しさん2011/03/16(水) 22:15:36.80
>>542
もっと簡単な方法を見逃していたww
http://ideone.com/xHCQa
05455162011/03/16(水) 22:20:10.22
>>543
ありがとう。
自分も文字列ミックスインでスコープクラスの new まで
出来たんだけど、スコープ抜けてもデストラクタが呼ばれなくて・・・。

alias パラメタって、外部のパラメタ渡すということは外部の宣言を
渡すのかな?
なかなか出来ないんだけど、そもそも1行でかけないと意義薄いかも・・・。
05465162011/03/16(水) 22:21:29.64
>>544
おっと!やってみる!
05475162011/03/16(水) 22:28:06.18
>>544
出来たけど出来ない・・・!
デストラクタ、仕事しろ!

最新の dmd で試してみる。不具合報告が多かったから
躊躇してたんだけど。
0548デフォルトの名無しさん2011/03/16(水) 22:32:11.16
newとペアで
scope(exit)delete xx;
もmixinしてみたら?
0549デフォルトの名無しさん2011/03/16(水) 22:34:42.21
あともうひとつ。
ストレージクラスのscopeは今後廃止されるかもしれないので、
scope(exit)文でdeleteするのが無難かもしれない。
05505162011/03/16(水) 22:40:40.53
>>549
なるほど、ありがとう!試してみる。
ちょっと気になるのが、scope クラスの new って
スタックへのクラスインスタンス割り当てだったと思うので
無くなったら効率面でちょっと気になるな・・・。

ちなみに最新にしたら std.datetime がすごい行数になって
コンパイルも通らない・・・!
ワクワクしてきた!

そして地震にハラハラ。
0551デフォルトの名無しさん2011/03/16(水) 22:41:10.37
本当にデストラクタ呼び出されないの?
05525162011/03/16(水) 22:53:08.91
>>551
デストラクタで writeln しておいて、普通に new した場合は
コンソール出力されるけど、テンプレートミックスインすると何もされない。。。

最新では試せてないけど。
0553デフォルトの名無しさん2011/03/16(水) 23:03:24.06
あれ?なんでtemplate mixin挟むとコンパイル通らないんだろう・・
どこかおかしいですか?

http://ideone.com/J6M6n
http://ideone.com/uGibM
0554デフォルトの名無しさん2011/03/16(水) 23:20:16.08
>>553
そのコードだけで言うなら、mixin templateにし忘れている。
0555デフォルトの名無しさん2011/03/16(水) 23:20:42.02
>>553
template test() -> mixin template test()
とか?
0556デフォルトの名無しさん2011/03/16(水) 23:24:09.68
>>552
逆転の発想もあるけどね
http://ideone.com/D52RZ
0557デフォルトの名無しさん2011/03/16(水) 23:27:46.82
>>552
アド貼り間違えた・・
http://ideone.com/UusDr

>>554, 555
だめぽい・・
http://ideone.com/Tg0kV
05585162011/03/16(水) 23:30:13.44
>>556
あー、なるほど!おもしろい。
ちょっと検証してみる。
ありがとうです。
0559デフォルトの名無しさん2011/03/16(水) 23:40:24.70
>>557
バグだあ!
0560デフォルトの名無しさん2011/03/16(水) 23:47:34.10
>>559
うむ、うれしそうだ
0561デフォルトの名無しさん2011/03/17(木) 00:06:48.57
mixinで scope(exit)をねじこむだと・・・!?
俺がウォルたんならそんな使い方は蹴る。てか泣いて謝る
0562デフォルトの名無しさん2011/03/17(木) 00:27:41.99
>>556の
void watcher(void delegate() f)
を
void watcher(scope void delegate() f)
に変えると最適化が効いて普通の関数呼び出しと同じくらいの速さになるらしいよ
0563デフォルトの名無しさん2011/03/17(木) 00:31:12.32
何その scope ・・・!
知らなかった。
ってか、scope って意味が多すぎ。
05645162011/03/17(木) 00:39:36.53
最新でやっと動くようになったけど、相変わらずデストラクタ呼ばれなく、

mixin template Foo()
{
 scope auto rec = new Foo();
 scope (exit) delete rec;
}

ってやると
>>557
と同じコンパイルエラーが出る。。。
0565デフォルトの名無しさん2011/03/17(木) 00:45:27.81
Scopedじゃ駄目なのか?
0566デフォルトの名無しさん2011/03/17(木) 01:05:53.40
>>564
mixin template の中は宣言しか書けない

class Foo
{
 scope auto rec = new Foo();
 scope (exit) delete rec;
}
とやって書けないのと同じ

文字列ミックスインでねじこめないのも同じ
05675162011/03/17(木) 01:16:29.30
そもそも

mixin template Foo()
{
 scope auto rec = new Foo();
}
と書けてしまうのがおかしい?

まぁ諦めて普通に書きます。
みなさんありがとう。
05685162011/03/17(木) 05:47:03.81
っつーか、RAII なら構造体使えばいいことに気付いた・・・。
scope とか new とか書かなくていいし。
注意するのは引数無しのコンストラクタが使えないくらいか。

ストレージクラスのscopeが無くなるのは構造体使えばいいからなのかな。
0569デフォルトの名無しさん2011/03/17(木) 07:55:41.31
>>568
しかし構造体の一時オブジェクトはデストラクタが呼ばれないバグがあるらしい
0570デフォルトの名無しさん2011/03/17(木) 13:59:09.89
もう、関数テンプレートでいいや。
http://ideone.com/WJPZe

ていうか、関数テンプレート使えばよかったんじゃね?
0571デフォルトの名無しさん2011/03/17(木) 14:10:21.09
本当に。
http://ideone.com/LYmTr
05725162011/03/17(木) 17:36:35.36
>>569
なんと!?今のところ大丈夫そうだけど・・・。
念のためユニットテスト用意してチェックしておく。
バグも調べてみます。ありがとう。

>>570-571
使う側から見て、シンプルにできるのかな。
1行で書けると見通しがいいので、やっぱり RAII が便利だなぁ。

でもありがとう。覚えておきます。
0573デフォルトの名無しさん2011/03/17(木) 17:49:40.87
http://ideone.com/S1TMB
こういうことがあるので構造体は毎回ちゃんとした変数にいれたほうがいい
05745162011/03/17(木) 17:54:21.07
>>573
なるほど。
確かにちゃんと変数に入れてた。だから大丈夫だったのか。
重ね重ねどうもありがとう。
0575デフォルトの名無しさん2011/03/17(木) 18:07:44.46
>>573
なにこれこわい
0576デフォルトの名無しさん2011/03/17(木) 18:24:37.27
ほんと直して欲しい
0577デフォルトの名無しさん2011/03/17(木) 18:28:33.44
http://d.puremagic.com/issues/show_bug.cgi?id=5657
報告済み。vote求む
0578デフォルトの名無しさん2011/03/17(木) 19:43:30.04
>>572
プログラムを理解するのに必要なコードが、変に分散したり、複雑に絡みあったりしなければ読みやすい。
行は関係ない。
05795162011/03/17(木) 19:57:52.46
>>578
でも同じことするのに1行で書ける方法があるならそっちがいい。
コピペしなくてもいいように mixin とかできるならいいかもしれない。

ということで RAII で最低限満たしているから今のところそれでいいかなと。
0580デフォルトの名無しさん2011/03/17(木) 20:23:24.75
>>579
結局の所、何かやりたいのかよく分からないから、曖昧なレスしか出来ないんだよね。
なんでmixinの中でscope付ける必要があるんだろう?
05815162011/03/17(木) 20:53:02.70
>>580
元々は C++ で実装していたようなことを D で実現したくて、
書き方も似たようなシンプルなものにしたかったのね。
んでマクロは無いけどテンプレートとか使えばできるかなぁと
やってみたんだけど、色々無理そうなことがわかった、という感じかな・・・。

みなさんどうもありがとう。勉強になりました。
そろそろ消えようと思います。
0582デフォルトの名無しさん2011/03/17(木) 20:55:21.79
マクロ的な事なら文字列mixinがおすすめよ
0583デフォルトの名無しさん2011/03/17(木) 20:59:44.74
C++でいうところのこういうの作りたいんだとエスパー

class Time
{
  time_t t_;
public:
  Time(){t_ = time(NULL);}
  ~Time(){printf("処理時間:%d\n", time(NULL) - t);}
};

int main(){
  Time t0;
  {
    Time t1; // この変数名がかぶらないようにmixinで変数名を自動割り当てしたい
    doSomething1();
  }
  doSomething0();
  return 0;
}
0584デフォルトの名無しさん2011/03/18(金) 12:19:22.97
>>582
文字列 mixin は試したみたいよ。
0585デフォルトの名無しさん2011/03/19(土) 16:42:40.32
テキストファイル読み込みをUTF-8エンコーディングしながら読みたいんですけど
std.encodingってどうやって使うんでしょうか

それとBufferdFileでファイルを開いてreadLineしたものをstd.encodingで
stringにして使おうと思ってるんですけどこのやり方って一般的ですか?
0586デフォルトの名無しさん2011/03/19(土) 16:45:40.29
std.encodingは使えないモジュールNo1候補だよ
使い方も意味不明だしもちろんMS932ことshift jisには対応してないよ
0587デフォルトの名無しさん2011/03/19(土) 16:48:02.62
>>586
まじですか、なんという・・・
0588デフォルトの名無しさん2011/03/19(土) 16:49:48.47
str = std.c.windows.charset.fromMBSz((str ~ "\0").ptr)
とかやればSJISからUTF-8に変換できるかな?
0589デフォルトの名無しさん2011/03/19(土) 17:23:22.21
Windowsのコードページに従って変換したいのか、SJIS決め打ちで変換したいのかは一考しろよ
0590デフォルトの名無しさん2011/03/19(土) 17:30:02.78
一応貼っとく。コンパイル通るのかは知らんが。
http://www.wikihouse.com/sakurai/index.php?DJcode
0591デフォルトの名無しさん2011/03/19(土) 18:42:54.96
>>589
Shift-JIS/JIS/EUC/UTFに関わらずテキストファイルを読み込んだ時点で
UTF-8として読み込むようなイメージです

>>590
まさにJCodeですね ありがとうございます試してみます
0592デフォルトの名無しさん2011/03/19(土) 23:30:18.85
jcode使って自動判別させるなら一行ずつ渡すと誤判定ありそうだし、
頭から何百バイトか渡して判別だけして、あとは毎行変換って感じになる?
なら、個人的にはファイル読み込みが二度手間になるのが嫌な感じなんで、
std.file.readで一気に読み込んで変換してstd.string.splitlinesかなあ。
まあ凄いデカいファイルを想定してる場合はしゃーないが。
0593デフォルトの名無しさん2011/03/20(日) 00:24:46.91
>>355あたりのバグさっさと直んないかなあ
dateからdatetimeに直したからもう戻れねえ・・・
0594デフォルトの名無しさん2011/03/20(日) 01:19:41.25
パッチが出てるから先に当てればいいよ
0595デフォルトの名無しさん2011/03/20(日) 06:28:45.86
>>594
ありがとう
bugzillaとか使いこなせる人が羨ましいなあ
0596デフォルトの名無しさん2011/03/20(日) 17:11:56.14
splitlinesいいね
foreachと組み合わせて手軽に行毎の処理できるんだ
0597デフォルトの名無しさん2011/03/21(月) 01:05:37.17
>>357
の irrlichtポーティングがとりあえず動くようになってた

一方 swigは書式がよくわからん上に
インタフェースファイル修正→変換が遅くてやってられん 頭痛くなったorz
0598デフォルトの名無しさん2011/03/21(月) 10:44:14.20
すみません・・・これなんでしょう?
http://ideone.com/Ks6qI

・デストラクタのthis参照がだめ?
・それ以外に不正なコードがある?
・std.convがダメ?
・GCがダメ?
・その他?

csv設定ファイルをキャッシュする処理に連想配列を使ったら、
やけに落ちるなーと思って追いかけてったらこんな感じですっごく困ってます。
0599デフォルトの名無しさん2011/03/21(月) 11:27:12.11
>>598
D2.052+Windows だとコンパイルエラーもなく
実行できてそれなりのログも出た

そこのツールはD2.042

結局どこで困ってるのかわからん
0600デフォルトの名無しさん2011/03/21(月) 11:29:28.39
>>598
text関数って内部でto!string()してるからcast(void*)とかしちゃだめじゃない?
void*ってto!string()できないから。
http://ideone.com/THXpl

>>599が最新のdmdだといけるって言ってるからstd.convのバグだろうね
とりあえずcast(ubyte*)thisにすれば2.042でも回避できる。
0601デフォルトの名無しさん2011/03/21(月) 11:41:28.39
2.042→2.052間でconv.dめちゃくちゃ修正入ってるけどここ直したら行けた

【誤】
/**
Pointer to string conversions prints the pointer as a $(D size_t) value.
*/
T toImpl(T, S)(S value)
if (isPointer!S && !isSomeChar!(typeof(*S.init)) && isSomeString!T)
{
return to!T(cast(size_t) value, 16u);
}

↓

【正】
/**
Pointer to string conversions prints the pointer as a $(D size_t) value.
*/
T toImpl(T, S)(S value)
if (isPointer!S && (!is(typeof(*S.init)) || !isSomeChar!(typeof(*S.init)))
&& isSomeString!T)
{
return to!T(cast(size_t) value, 16u);
}
06025982011/03/21(月) 11:45:47.85
Linux DMD2.052/2.051で再現してます。

cast(void*)が未定義だとかで悪いんなら良いんですが、
どうもそうでなさそうな感じなんですが・・・
先のソースも"remove test:"の箇所を若干書き換えるだけで
再現したりしなかったりします。

問題なのは、同じく文字列の連想配列を持つcsvの設定ファイルを
キャッシュるクラスが頻繁にクラッシュしてまして。
※元のソースはcast(void*)はありませんでした。

ダンプを取ったらconvの中だったり、utf.encodeの中だったりで
メモリアクセス関連か、convなのかと思っていましたが・・・
原因がわからない状態だと、対処もできず困ってます。
0603デフォルトの名無しさん2011/03/21(月) 11:51:41.81
>>602
GCによる解放順序は未定義なのでデストラクタではクラスメンバのインスタンスだろうがアクセスするのはアウト
デストラクタの中でハッシュにアクセスしたりしてないですか?
0604デフォルトの名無しさん2011/03/21(月) 12:08:26.78
>>602
C++の感覚でデストラクタ使っちゃだめ
http://ideone.com/7XXFl
0605デフォルトの名無しさん2011/03/21(月) 12:43:59.57
メモリ解放系の後処理を放棄してGCに任せるか
明示的にdeleteやらdisposeを作って呼ぶってことか
scope(exit)と組み合わせて何とかなるのかな
0606デフォルトの名無しさん2011/03/21(月) 12:50:53.12
今は標準ライブラリの中でGC依存してるから努力しても無駄な気もする
06075982011/03/21(月) 12:51:51.93
ありがとうございます。
デストラクタはthisのキャスト以外してなかったと思いますが、
デバッグの過程で色々とやり過ぎたかもしれません。
デストラクタ中心にもうちょい追ってみます。
06085982011/03/21(月) 13:54:50.14
全力のデストラクタ全消しで安定しましたorz

デバッグのログ出力に問題があったということか…
ありがとうございました。
0609デフォルトの名無しさん2011/03/21(月) 20:37:07.95
const int i = 0;
auto j = i;

これだとjの型はconst intと推論されるらしいのですが、
intと推論して欲しいときはどう書けば良いのでしょうか。
C++の型推論と同じかと思っていたら違っていたので驚きました。
0610デフォルトの名無しさん2011/03/21(月) 20:51:31.17
>>609で型推論からconstを外して欲しい局面が思いつかない
この場合は普通に宣言する

逆にconst外れちゃうようじゃ安全性に問題あるよね?
const A a = new A;
auto b = a;
とかbを通してaの中身触れちゃうし
0611デフォルトの名無しさん2011/03/21(月) 20:52:51.78
それはもうautoじゃなくてintって書くしかないんじゃないか。
どうしても推論させたいなら
auto j = cast(int)i;
とか、とにかくintって具体的な型名書きたくないなら
Unqual!(typeof(i)) j = i;
とか。
0612デフォルトの名無しさん2011/03/21(月) 21:06:54.73
Unqualで
0613デフォルトの名無しさん2011/03/21(月) 21:27:01.99
const int i = 0;
const int j = 0;
auto k = i + j; //const int

実際はimmutableな値とimmutableな値の和をmutableな変数に入れたかったのですが
これもだめみたいなので。

auto l = i + j + 0; // int
抜け道を見つけたのでしばらくこれでごまかしておきます。

それとcodepadだと>>609のjはintと推論されてしまうみたいですね。
0614デフォルトの名無しさん2011/03/21(月) 23:02:08.85
codepadってD1だっけ
0615デフォルトの名無しさん2011/03/21(月) 23:09:51.80
ちょっと古いD2だったと思う

2.042くらいだったかな
10×10個くらいは破壊的変更が入ってることになりますね
0616デフォルトの名無しさん2011/03/21(月) 23:16:49.39
残念ながらD1.026
http://codepad.org/7fhqL4n4
0617福盛俊明2011/03/22(火) 00:42:43.06
アハ〜♪”
0618デフォルトの名無しさん2011/03/22(火) 02:36:45.27
2.042なのはcodepadじゃなくてideoneだな
0619デフォルトの名無しさん2011/03/22(火) 04:19:43.78
http://www.geocities.jp/courant_de_console/main_street/
0620デフォルトの名無しさん2011/03/22(火) 06:48:19.26
>>616
>>618
本当だ
勘違いすまぬ
0621デフォルトの名無しさん2011/03/22(火) 06:48:52.44
>>613見て思ったけど、constな左辺値がconstに推論されるのに、
constではない右辺値がconstではなく推論されるのは……いいんだろうけどどうなんだ。
0622デフォルトの名無しさん2011/03/22(火) 09:59:52.45
>>613
抜け道というか、落とし穴になりそうだな
0623デフォルトの名無しさん2011/03/22(火) 13:15:59.11
D3っていつ出るの?
0624デフォルトの名無しさん2011/03/22(火) 13:40:57.28
引数の宣言のように
 inout k = i + j;
でimmutable, constを引き継いで
 auto k = i + j; // mutable
 const k = i + j; // const
とかなってくれたら分かりやすい気がするがなぁ…
0625デフォルトの名無しさん2011/03/22(火) 13:43:11.84
明日
0626デフォルトの名無しさん2011/03/22(火) 19:12:19.79
明日っていつ?
0627デフォルトの名無しさん2011/03/22(火) 21:05:06.91
なんかD3が出て今のD2が安定版扱いになるのって、
結局のところ複数のバージョンに対応するライブラリ作ってる人の手間が増えるだけじゃねえの? って気がする。
0628デフォルトの名無しさん2011/03/22(火) 21:21:58.24
普通は安定版になったら喜ぶんだけどな
安定版を死骸と同一視するマゾのなんと多いことか
0629デフォルトの名無しさん2011/03/22(火) 21:40:12.70
安定版になるには、bugzillaの消化ペースをもっと上げないとなあ
0630デフォルトの名無しさん2011/03/22(火) 23:08:30.48
D1が安定しているという幻想をぶち壊す
0631デフォルトの名無しさん2011/03/23(水) 08:05:55.28
                       ヘ(^o^)ヘ いいぜ
                         |∧  
                     /  /
                 (^o^)/ てめえがD1が
                /(  )    安定しているというなら
       (^o^) 三  / / >
 \     (\\ 三
 (/o^)  < \ 三 
 ( /
 / く  まずはそのふざけた
       幻想をぶち壊す
0632デフォルトの名無しさん2011/03/23(水) 14:46:59.21
上のほうで使ってる人に触発されてluad触ってるんだが、構造体渡そうとするとdmd落ちた。
渡そうとしてた構造体の中のunittest消したら通ったんで、
すげえ釈然としないが同じ症状で悩んでる人のためにメモ。
0633デフォルトの名無しさん2011/03/23(水) 14:57:38.87
luad内の"__traits(allMembers"付近をいじってunittestを無視するようにすれば解決するかもしれない
0634デフォルトの名無しさん2011/03/23(水) 19:07:41.91
datetimeのunittestが通らない件
Windows
0635デフォルトの名無しさん2011/03/23(水) 21:10:52.29
ubuntu64bitにインストールできません。
debファイルは「amd64用じゃない」と怒られるし、zipの方は「librtが無い」と怒られる(あるのに)。
やり方知っている方いたら助言お願いいたします。
0636デフォルトの名無しさん2011/03/23(水) 21:32:55.25
gcc-multilibをインストールしたらdmdできるようになりました
debファイルの方はやっぱりインストール怒られる
0637デフォルトの名無しさん2011/03/23(水) 21:55:40.91
いや、コンパイル時にdmd -m64 すればいいだけでした。(zipからインストールの時)
debファイルはアーキテクチャ無視のインストールでいけるのかな。
0638デフォルトの名無しさん2011/03/23(水) 22:00:50.26
64bitマシンとOSは手に入れたが-m64はこわくて試せない
0639デフォルトの名無しさん2011/03/23(水) 22:09:27.76
君はそれでもDゲンガーかね
0640デフォルトの名無しさん2011/03/23(水) 22:20:47.47
なるほど、デフォルトでは常に32bitコードとしてコンパイルするのね。
0641デフォルトの名無しさん2011/03/23(水) 22:49:37.29
せいぜいDゴース
0642デフォルトの名無しさん2011/03/24(木) 00:08:44.99
D言語からperlとかのスクリプトを実行したいんですけど、
どうすれば良いですか?
0643デフォルトの名無しさん2011/03/24(木) 00:57:27.69
http://www.kmonos.net/alang/d/2.0/phobos/phobos.htmlを見て、
プロセスに関係ありそうなのはstd.processかな・・・みたいに見当を付けるんだ
0644デフォルトの名無しさん2011/03/24(木) 01:14:34.36
>>643
どうもありがとう
0645デフォルトの名無しさん2011/03/24(木) 13:35:46.22
perl.dを書くところからかと思った。
0646デフォルトの名無しさん2011/03/24(木) 14:49:11.76
libperlってC++だったよな…
0647デフォルトの名無しさん2011/03/24(木) 15:12:22.85
テキストボックスのクリックされた行を知りたい
↓
クリックされるとワードが選択状態になるので
選択範囲の位置とテキスト全体から改行文字を数えよう
↓
日本語を含む場合に行ズレが
↓
テキストボックス:SJIS 2バイト
文字列データ: UTF8 3バイト
↓
orz       今ココ
ハジメテ シッタゼ
0648デフォルトの名無しさん2011/03/24(木) 15:21:15.19
Windowsと仮定して、なんでGetWindowTextWとwcharを使わないんだ?
06496472011/03/24(木) 16:45:16.28
文字位置から行数を取得というのは解決。ちゃんとAPIを探すべきだった。

wcharか・・・まあ考えておきまひょ
0650デフォルトの名無しさん2011/03/24(木) 18:59:08.21
テキストボックスだと?
DでGUIプログラミングをやるような覇王級の猛者がまだいたのか…
0651デフォルトの名無しさん2011/03/24(木) 19:52:33.44
DWT2 のD2対応が更新されてるな
たぶん今月頭に誰かがパッチを送った内容だと思うけど

さあみんな、これで安心してGUIプログラミングできるな!!!
0652デフォルトの名無しさん2011/03/24(木) 20:14:07.12
うわマジだ
パッチ送ってから色々あって一週間くらいやり取りが途絶えてたからてっきり忘れられてるものだと
ここの人達に感謝

DLL不要で/機能が揃っていて/マルチプラットフォームで/コードがDネイティヴで
という条件をつけるとDWTが唯一のGUIライブラリになっちゃうから何とか生存してほしいなぁ
0653デフォルトの名無しさん2011/03/24(木) 23:48:37.57
DWTのライセンスってここ見ると「おそらくCPL」って書いてあるけど
実際のところ何なんですか?
http://dusers.dip.jp/modules/wiki/?Libraries%2FDWT

CPLって
・ソースの無断変更はNG
・無保証
・ライブラリを使用して作ったバイナリにはライセンスは適用しない
って認識でOK?
0654デフォルトの名無しさん2011/03/24(木) 23:53:47.55
>>653
実際にはコード中にEPLと書かれてる
ttp://sourceforge.jp/projects/opensource/wiki/licenses%2FEclipse_Public_License
ttp://ja.wikipedia.org/wiki/Eclipse_Public_License

GPLと互換性が無いんだよな…
0655デフォルトの名無しさん2011/03/25(金) 00:13:20.59
>>654
読みました�d
ライブラリ使用者側としては「DWTを使ってるけど何かあってもDWT作成者には責任はないです」
っていうのをDWTのリンクに添えて書いておけばソース開示なしで商用利用も可能って感じかな
間違ってたら突っ込みお願いします
0656デフォルトの名無しさん2011/03/25(金) 01:08:41.32
Cのソースを手っ取り早くDに書き直すとき、
exit(0)とかはとりあえずthrow new Exception("exit(0)")してるんですが、
もっとそれっぽいのありますか。
0657デフォルトの名無しさん2011/03/25(金) 01:39:29.24
std.c.stdlib.exit(0);
0658デフォルトの名無しさん2011/03/25(金) 05:51:23.20
// s.d
struct S { private int n; }

// main.d
import s;
void main() { S s; s.tupleof[0] = 10; }

が通っちゃうらめえ。
0659デフォルトの名無しさん2011/03/25(金) 07:03:40.65
tupleofでprivateメンバにアクセスできるのかー
またバグなのか仕様なのかよくわからない動作なのか
0660デフォルトの名無しさん2011/03/25(金) 09:35:56.30
private とか static とか deprecated とか この辺はバグ満載な感じ
修正優先度も低そうだし
0661デフォルトの名無しさん2011/03/25(金) 10:53:28.69
-m64であえなく玉砕。
リンカが通らないorz
0662デフォルトの名無しさん2011/03/26(土) 05:03:56.50
これ何か間違ったことしてます?
http://ideone.com/OHI9o
0663デフォルトの名無しさん2011/03/26(土) 06:05:47.20
テンプレート関数はまだオーバーロードできなかった気がする
0664デフォルトの名無しさん2011/03/26(土) 08:07:10.82
>>658見て気づいたが、構造体リテラルでprivateメンバも設定できるのな。
privateメンバあるなら大抵コンストラクタもあるだろうから問題はないだろうけど、なんか微妙に気持ち悪い感じ。
0665デフォルトの名無しさん2011/03/26(土) 12:17:31.60
>>664
>>658の場合は

auto s = S(42);

ができるんだよなぁ
privateは見えない建前だから、その42はどこ行くの?っていう
0666デフォルトの名無しさん2011/03/26(土) 13:51:32.38
単に代入するだけのコンストラクタが自動的に定義されてるだけと考えるとわりといける
リテラルだと思うときもいけど
0667デフォルトの名無しさん2011/03/26(土) 15:54:24.70
privateは読み飛ばしたらいいかな
0668デフォルトの名無しさん2011/03/26(土) 16:10:55.89
not accessibleでコンパイルエラーが自然じゃね。
0669デフォルトの名無しさん2011/03/26(土) 19:50:41.91
opCall()をオーバーロードすればいいんじゃね?
0670デフォルトの名無しさん2011/03/26(土) 21:22:10.38
a += b;
と
a =+ b;
を間違えて30分くらいハマった
こういう文法を持つC言語は邪悪すぎる
みんなでDに移行しようぜ
0671デフォルトの名無しさん2011/03/26(土) 22:53:51.65
>>666
privateと指定することができないじゃん
0672デフォルトの名無しさん2011/03/26(土) 22:58:34.30
>>669
なんの為?
0673デフォルトの名無しさん2011/03/27(日) 00:02:46.84
半年ぶりに戻ってきてdmdのバージョンを上げてコンパイルしたらエラーが沢山
イヒヒイイヒヒ
0674デフォルトの名無しさん2011/03/27(日) 00:19:54.40
半年くらいならCとBASIC程度の違いで済むのかな
0675デフォルトの名無しさん2011/03/27(日) 00:45:38.95
修正ではなく移植と申したか。
0676デフォルトの名無しさん2011/03/27(日) 09:59:11.22
Lua使ってる人がいるみたいだけど、squirrel.dってどっかにあるのかな
Bindingsにあるのかと思ったら古かったんで自分で書こうかと思ってるんだが
0677デフォルトの名無しさん2011/03/27(日) 11:47:13.40
importファイルだけならhtod使えば30分くらいでできたよ
0678デフォルトの名無しさん2011/03/27(日) 12:49:10.03
自動変換して30分とかDさんぱねぇっす

というかhtodってメンテされてんの?
0679デフォルトの名無しさん2011/03/27(日) 12:51:29.44
いやある程度自動変換させといてエラー出るところだけ自分で修正するんだけどね・・・
0680デフォルトの名無しさん2011/03/27(日) 14:49:57.93
htodはconst char*をchar*に変換してくれるのを初めだいぶ使えない子
「エラー出るとこだけ修正」だと↑とかマクロがっつりコメントアウトしちゃうとことか修正できないし
ぶっちゃけ手書きとあんま変わらん
0681デフォルトの名無しさん2011/03/28(月) 19:46:38.75
ttps://github.com/Rayerd/dfl
期待sage
0682デフォルトの名無しさん2011/03/29(火) 06:43:10.90
exportってどういうときに使うんでしょうか?
なんだか無くても動いてるような気がするんですが。
0683デフォルトの名無しさん2011/03/29(火) 17:41:55.15
dmd2.052 -m64にてコンパイル…

struct st_list {
alias st_list *prev;
alias st_list *next;
void *data;
};
assert(st_list.sizeof == 8); // safe

どういうことだってばよ?
0684デフォルトの名無しさん2011/03/29(火) 18:20:48.38
aliasを何だと思ってるんだ?
0685デフォルトの名無しさん2011/03/29(火) 18:31:18.33
prevというメンバがいるんじゃなくて、prevというalias型を定義しただけだから問題ない
0686デフォルトの名無しさん2011/03/29(火) 19:28:09.21
ごめん、古いソースだったもんでこうなってたんだ。
こりゃ32bitでもダメっぽいな。失礼しました。
0687デフォルトの名無しさん2011/03/29(火) 19:43:05.63
gtkDも生きてたか
0688デフォルトの名無しさん2011/03/29(火) 19:47:41.95
dflの中の人が動き出したんですか?
0689デフォルトの名無しさん2011/03/29(火) 20:22:11.67
>>686
いやなんか完璧に勘違いしてない?
0690デフォルトの名無しさん2011/03/29(火) 20:26:09.64
>>688
上のリンクは本家とは無関係
0691デフォルトの名無しさん2011/03/29(火) 20:35:16.44
auto f = to!float("0"); // 落ちる

えええ・・
0692デフォルトの名無しさん2011/03/29(火) 21:55:02.69
>>691
落ちない
Ubuntu 10.10 64 bit
0693デフォルトの名無しさん2011/03/29(火) 21:57:08.17
落ちない
win7-64bit dmd 2.052

ちゃんと落ちないなんてどうしちゃったのうちのdmd…
0694デフォルトの名無しさん2011/03/30(水) 00:33:41.18
struct Foo(T){
 T i;
 this(T i) pure
 {
  this.i = i;
 }
}

を-Hスイッチでdiファイルにするとpureが消えますが、これはdmd2.052の仕様ですか。


Foo!(T) bar(T)(T i) pure
{
 return typeof(return)(i);
}

とか出来なくなる。SciDやろうとしてハマった。
06956942011/03/30(水) 00:37:02.76
ちなみに
>>691は落ちなかった。
ubuntu 10.04 64bit
0696デフォルトの名無しさん2011/03/30(水) 02:00:53.73
>>691
2.048で落ちた小数点を探しに行ってなんとなく落ちるぽい動作だな
最新版だと直ってる
0697デフォルトの名無しさん2011/03/30(水) 10:42:05.11
>>689
http://www.steinmole.de/d/
こいつの中の人に言ってくれよ・・。
少し前まで(32bitで)12になって動いてて、そのまま気づかなかったんだよ。

-m64で構造体のサイズがmysql.hの定義とズレまくって
大変だったと言いたかっただけなんだorz
0698デフォルトの名無しさん2011/03/31(木) 23:33:20.05
void main(){
 int i;
 int* p = &i;
 writeln(i.sizeof); //-m32でも-64でも4
 writeln(p.sizeof); //-m32だと4で-m64だと8
}

これが原因でSDLでセグメンテーションエラーとか出る。
具体的には-m64で
auto screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
すると、screen.format以降がずれずれ。
こういうのってどうしようもないの?
0699デフォルトの名無しさん2011/03/31(木) 23:47:30.12
そもそもDのintはCと連動してない。ビット数固定だったはず。
0700デフォルトの名無しさん2011/03/31(木) 23:47:51.89
言語側にint_ptrみたいな汎用整数型が欲しかったな
というかなんでないんだろう
0701デフォルトの名無しさん2011/04/01(金) 00:06:09.10
よくわからんけどSDLが64ビット対応してないんじゃね?
0702デフォルトの名無しさん2011/04/01(金) 06:58:37.29
alias std.traits.Signed!size_t int_ptr;
extern(C) SDL_Surface* SDL_SetVideoMode(int_ptr, int_ptr, int_ptr, Uint32);

auto screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);

これでどうだろ?
まあSDLが64bit対応してなかったらどっちにしろ詰むわけだが
0703デフォルトの名無しさん2011/04/01(金) 08:30:33.81
intptr_tとかの型ならstd.stdintにあるよん
0704デフォルトの名無しさん2011/04/01(金) 15:26:57.53
// c/c++ -m64
printf("%d", sizeof(MYSQL)); => 1248

// D MySQL Driver + DMD2.052 -m64
writeln(MYSQL.sizeof); => 1040

( ゚д゚)…

  !
(゚д゚ )

version(X86_64) {
struct MYSQL { byte[1248] a; }
}

今は反省してない。
0705デフォルトの名無しさん2011/04/01(金) 19:28:24.07
>>703
おおマジか…
sizediff_tとかhash_tみたいな意味不明の型は何もimportしないでも使えるというのにどうしてそんな差別を
0706デフォルトの名無しさん2011/04/01(金) 21:06:04.68
>>698
構造体の定義を全部64bit用に調整してやるしかないんじゃないかな
大丈夫だSDLの構造体はそんなにいっぱいない
0707デフォルトの名無しさん2011/04/01(金) 21:28:07.78
64bit対応に詳しくないんだけどそもそもSDLのDLLを64bitでコンパイルしちゃえばサイズ合う、なんてことはないの?
0708デフォルトの名無しさん2011/04/01(金) 21:34:09.12
言語以前のことで悩んでるとしか
0709デフォルトの名無しさん2011/04/01(金) 21:49:54.34
そもそも64bitなんて必要あるのかから議論をしようか
マーケティングに踊らされていないか
オール電化に似た負のイメージしかない
0710デフォルトの名無しさん2011/04/01(金) 21:53:43.46
いや、その議論は他所でやろうぜ。
0711デフォルトの名無しさん2011/04/01(金) 22:00:23.80
単にメモリが増えるという意味での64bit化は要らんけど、
x86の場合はレジスタ数が増える恩恵のほうがでかいし、各プラットフォームともにここぞとばかりにABIを改良してたりするからなあ

……という話をしようと思えば他所にいくべきですねわかりましたごめんなさい
0712デフォルトの名無しさん2011/04/01(金) 23:02:45.40
>>698
64bit対応のことはよくわからんけど
・SDLのバイナリが64bitで構築されているか?
・ヘッダが64bitのラッパーになっているか?(htodは対応してないはず)
・import libが64bit用で生成されているか?(またOMF変換とか一手間かかるの?)
・Dアプリを64bitで記述・コンパイルしているか?( -m64の部分 )

あとWinでSDL使ったらSDL_ImageだのSDL_mixerだのさらにzlibだの
依存が多くてうんざりしたがそいつらみんな64bitなの? とか
derelictは対応してるの? とか

1つ1つ潰してみては
0713デフォルトの名無しさん2011/04/01(金) 23:06:14.43
いや、ここまで読む限り、単にD版ヘッダーがおかしいだけでしょ
0714デフォルトの名無しさん2011/04/01(金) 23:49:35.03
linuxならいいんだろうけどwinだと64bit版のDLLそろえるのがめんどくさそうだなー
0715デフォルトの名無しさん2011/04/02(土) 00:04:31.05
いや、自分でコンパイルしようとしたら面倒だけど、どっかにあるのを取ってくるならそうでもないだろ。
一応Windowsはバイナリ互換性が保証されてるわけだし。
0716デフォルトの名無しさん2011/04/02(土) 09:54:52.90
当方ubuntu 10.04 64bit。
デフォルトのリポジトリにあったlibsdlを入れてるから、64bit版で間違いはないはず。

で、使ってるDインポートファイルの抜粋↓

align(4)
struct SDL_Surface
{
 Uint32 flags;
 SDL_PixelFormat* format;
 int w, h;
 Uint16 pitch;
 void* pixels;
 int offset;
 private_hwdata* hwdata;
 SDL_Rect clip_rect;
 Uint32 unused1;
 Uint32 locked;
 SDL_BlitMap* map;
 uint format_version;
 int refcount;
}

extern(C) SDL_Surface* SDL_SetVideoMode(int width, int height, int bpp, Uint32 flags);

これをどうすれば
0717デフォルトの名無しさん2011/04/02(土) 10:03:48.10
sage忘れた

if (SDL_Init(SDL_INIT_VIDEO) < 0)
 throw new Error("SDL_Init failed.");
scope(exit) SDL_Quit();

SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);
if (screen is null)
 throw new Error("SDL_SetVideoMode failed.");

writeln(screen.fags);// 0
writeln(screen.format);// XXXXXXXXFFFFFFFF ← !!
writeln(screen.w);// 0 ← あー
writeln(screen.h);// 640 ← はいズレたー
0718デフォルトの名無しさん2011/04/02(土) 10:04:22.21
すまんまた忘れた
0719デフォルトの名無しさん2011/04/02(土) 10:08:00.02
ちなみに、Dソース中でscreen.??を呼ばない限りははうまく動く。(ように見える)
0720デフォルトの名無しさん2011/04/02(土) 10:31:22.49
あ!! alignか?
くそー、今試せない
0721デフォルトの名無しさん2011/04/02(土) 11:03:15.36
>>720
たぶんそう
SDLの構造体はVC、CodeWarrior、Borlandだと4Byteアライメントが指定されてるけど他はないっぽい
ubuntuならたぶんGCCだろうからalign(4)だとずれるかもしれない。特に64bit

SDLのヘッダに、「ディスクからロードした時の為に4Byteで揃えてます」みたいに書いてあるけど
これは嘘ってことだな

0722デフォルトの名無しさん2011/04/02(土) 15:16:57.92
まずC/C++ 64bitと、D言語64bit、の双方で
SDL_Surface構造体の各メンバの配置位置とサイズを確認すべきじゃない?
配置位置は、構造体先頭ポインタとメンバのポインタの差から
サイズは、sizeofで
0723 ◆LLLLLLLLL. 2011/04/03(日) 08:53:57.07
| ̄:/ : : /: : : : : : : :i: : : i: :\ : :\    \
|: / : : : / : : : : :.i: : : : |: : : :|: : : |: : : i     '
: :|: : : : |: : i: : : :|: : : /i|: : :|:| : : :|: : : |     |
: :|: : : : |: :.|:斗 十‐/ i|: :∧-‐ト|: : : |     |
: :|: : : : |イ|: :|:/ |:/   |:/ |ハ: : |: : : |  \_,ノ
: :|: : : : | レヤ示ト     rテv|:./|: : : :|
ヽ|: : : : |/{:::::::i }     トイ レ: :|/|/   関東地方 
( |: : : : 代c::ノソ     レリ |: : : : |       東北地方 北海道地方
.〈.|: : : : |x`¨       、¨x.|: : : i:|    にいる
\|i: : : :|        ,   /|: : : i:|      すべての 愛すべき 国民へ 告ぐ
∨リ\: :iト 、      `´ ィ  |: : /|リ      
‐┴―\|- 〈 >rァ 爪|V  |/
:::::::::::::::::::::::ヽ \ リ
::::::::::::::::::::::::__\
:::::::::::::::/ ::r――‐へ      rっr‐-、_
:::::::::/ :://      ∧. | ̄ ̄ ̄| | | | | ̄ ̄ ̄ ̄ ̄ ̄ ̄|
:::/ ::/ /          ヽ|.    L|_|_ト'           |
/ ::::/  /         \   ただちに 逃げろ    |
. :::/ |/           |                 |.........
0724デフォルトの名無しさん2011/04/03(日) 14:09:44.24
根拠はコレ?

ttp://homepage2.nifty.com/h-shioi/Earthquake/Note/ShioiNote.htm
0725デフォルトの名無しさん2011/04/03(日) 16:30:25.07
DのIDEがあるの無いのという話を聞くたびに思う
D2でIDEを作れないことの方が問題だと

でもDFLのforkといいgtkDの復活といい状況よくなってきてるな
0726デフォルトの名無しさん2011/04/03(日) 16:47:29.73
D-IDEは.NETのポートだけじゃなくて全部C++なの?
0727デフォルトの名無しさん2011/04/03(日) 16:47:58.93
VisualDはD製だぜ
0728デフォルトの名無しさん2011/04/03(日) 17:39:48.80
PoseidonはDWTだったか
0729デフォルトの名無しさん2011/04/03(日) 18:13:22.36
むしろDMDと同じくDを使わずにIDEを作るほうが
はるかに楽な気もするが

文字列ミックスインがにくい!
CTFEがにくい!
DMDのよくわからない挙動が(ry
0730デフォルトの名無しさん2011/04/03(日) 18:14:45.21
全部愛しいですけど何か?
0731デフォルトの名無しさん2011/04/03(日) 18:50:00.48
多分 729 はツンデレ
0732デフォルトの名無しさん2011/04/03(日) 18:54:03.98
万能すぎのis文が一等こわい
0733デフォルトの名無しさん2011/04/03(日) 20:54:21.16
D言語でまどかマギカのアクションゲーム作ろうず
0734デフォルトの名無しさん2011/04/03(日) 21:00:16.87
>>733
DXlibでやるならば手伝う。
0735デフォルトの名無しさん2011/04/03(日) 21:03:21.32
絵と音楽を用意してくれるなら手伝う
0736デフォルトの名無しさん2011/04/03(日) 21:10:56.26
手伝い方教えてくれたら手伝う
0737デフォルトの名無しさん2011/04/03(日) 21:17:03.56
ええい早くgithubなりbitbucketなりのリポジトリを作るんだ
0738デフォルトの名無しさん2011/04/03(日) 21:33:27.60
DXlibってDで使えたのか
0739デフォルトの名無しさん2011/04/03(日) 21:35:14.00
dxlib4dってのがある
0740デフォルトの名無しさん2011/04/03(日) 21:38:28.52
なんか新しい流れw
0741デフォルトの名無しさん2011/04/03(日) 21:39:04.12
リポジトリまだか?
俺は本気で手伝うぞ
0742デフォルトの名無しさん2011/04/03(日) 21:42:44.84
まずシステムをどうするかだな・・
0743デフォルトの名無しさん2011/04/03(日) 21:53:12.35
2Dアクションか3Dアクションか。
2Dでいいとも思うけど。
0744デフォルトの名無しさん2011/04/03(日) 22:06:53.75
DXライブラリならニコニコのMMD使えるからフリーで短期決戦ならそっちが良くね?
0745デフォルトの名無しさん2011/04/03(日) 22:09:14.58
そういえばニコニコにも自作ゲームタグってのがあるな
芝が生えるゲームどこ行ってもうたんや…
0746デフォルトの名無しさん2011/04/03(日) 22:13:00.30
システムやジャンルを決める前に、作る側の役割を決めないと。
チームでゲームを作る上でもっとも大切なのはポジショニング。
0747デフォルトの名無しさん2011/04/03(日) 22:17:29.80
まどかマギカなんかほっとこうぜ。
それよりD言語でD言語のマスコットキャラの育成ゲーム作ろうずwww
0748デフォルトの名無しさん2011/04/03(日) 22:18:46.14
特にD使うような奴が、何もかも全部一人で決める魅力を放棄できるとは思えんw
0749デフォルトの名無しさん2011/04/03(日) 22:19:30.49
あんなマスコットを育成するくらいならC++使うほうを選ぶわ
0750デフォルトの名無しさん2011/04/03(日) 22:26:04.15
>>748
あるあ……あるあるwww
0751デフォルトの名無しさん2011/04/03(日) 22:33:01.62
じゃあ間を取って、Dのマスコットキャラのアクションゲームだな。
0752デフォルトの名無しさん2011/04/03(日) 22:41:24.16
Dマスコットアクションに清き一票を
0753デフォルトの名無しさん2011/04/03(日) 23:01:20.66
じゃあFPSでDマスコットが撃たれると
うざいポーズでよけまくるゲームを
0754デフォルトの名無しさん2011/04/03(日) 23:01:27.96
破壊的変甲グレートDのマスコットキャラ
0755デフォルトの名無しさん2011/04/03(日) 23:04:42.20
Dマスコットのエロゲ
0756デフォルトの名無しさん2011/04/03(日) 23:11:31.98
こうしてこの話は雲散霧消していくのだった・・・
0757デフォルトの名無しさん2011/04/03(日) 23:20:57.83
―235年後―
0758デフォルトの名無しさん2011/04/03(日) 23:25:54.31
D2の仕様っていつ固まるの?
0759デフォルトの名無しさん2011/04/04(月) 01:20:38.55
235年してもD2仕様固まんないのかよ…
0760デフォルトの名無しさん2011/04/04(月) 01:35:51.32
      ☆ チン     マチクタビレタ〜
                        マチクタビレタ〜
       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        ヽ ___\(\・∀・) < D3まだ〜?
            \_/⊂ ⊂_ )   \_____________
          / ̄ ̄ ̄ ̄ ̄ ̄ /|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       |  愛媛みかん |/
0761デフォルトの名無しさん2011/04/04(月) 10:20:12.20
その前に D2.01.0001 が出るのがスジだろ
0762デフォルトの名無しさん2011/04/04(月) 19:20:15.52
ttp://www.ku6.jp/report/11.html
>2011年04月03日 23時52分
はえーよ
0763デフォルトの名無しさん2011/04/05(火) 01:16:49.63
おお、SDLとOpenGLのインポートファイル使わせていただいております
DXも使ってみようかな
協力して一緒に覚え酔う
0764デフォルトの名無しさん2011/04/05(火) 05:22:45.74
マスコットアクションw
0765デフォルトの名無しさん2011/04/05(火) 20:02:50.60
西日本も福島原発の放射能に曝される。

4/7 予測 http://up3.viploader.net/ippan/src/vlippan198234.jpg
発表はドイツ気象庁 http://www.dwd.de/
0766デフォルトの名無しさん2011/04/05(火) 20:12:48.85
何の話かと思ったら確かにDの形をしてるな
0767デフォルトの名無しさん2011/04/05(火) 21:56:33.30
dmdのmをひっくり返してdwdか…
0768ubuntu64ビットでのSDL利用に困ってた者2011/04/06(水) 00:40:35.74
>>721
確認遅くなったが、align(4)を全部消したら普通に動いたので一応報告。
0769デフォルトの名無しさん2011/04/06(水) 14:42:52.21
Portable C Compiler 1.0登場ってすごいな

Dも うかうかしてられない
うぉるたんにもっと開発スピードを落としてもらわないと
0770デフォルトの名無しさん2011/04/06(水) 20:11:05.73
俺が空気の悪い職場に缶詰になってる間にD forumに物凄いGUIツリーができてるなぁ
DによるDのためのGUIライブラリって本気で欲しいのは欲しいんだがDFLスルーされすぎワロタ
0771デフォルトの名無しさん2011/04/06(水) 23:01:10.57
なぜだ…DFLは素直じゃないか…
0772デフォルトの名無しさん2011/04/06(水) 23:05:05.43
つまり素直なライブラリなど要らぬと
0773デフォルトの名無しさん2011/04/06(水) 23:24:58.82
素直が一番いいんだよーう
0774デフォルトの名無しさん2011/04/06(水) 23:36:40.49
誰かBoostライセンスなGUIライブラリを・・
0775デフォルトの名無しさん2011/04/06(水) 23:49:55.55
DFLってなんでそんなにスルーされてんの?
0776デフォルトの名無しさん2011/04/07(木) 00:04:12.63
DFL==.NETライク
.NETライク==MS的
MS的==悪い
DFL==悪い

ということだったりして

Windows版だけならあとレイアウト関係とgraphics関係の機能が揃えば
ほぼ完璧ってくらいまで来てると思うんだけどな
0777デフォルトの名無しさん2011/04/07(木) 00:07:21.80
DFLってあまりにも普通に使えすぎて大した話題にもならないんだよね。
0778デフォルトの名無しさん2011/04/07(木) 00:36:05.30
そもそもWindows使ってないとか
外国のPC事情なんて知らないけど
0779デフォルトの名無しさん2011/04/07(木) 08:06:51.93
DFLのマルチプラットフォーム対応は
Gtkの上に実装しようとしてたが
頓挫してるんだよねー。
0780デフォルトの名無しさん2011/04/07(木) 09:26:19.46
っていうかWindows専用で.NETライクでってことならもうそれ.NETでいいじゃん。
0781デフォルトの名無しさん2011/04/07(木) 15:54:44.07
D.NETは欲しいなあ。GCの意味なくなるけど。
0782デフォルトの名無しさん2011/04/07(木) 16:24:30.18
すみません。
DでMMO鯖アプリケーションを作成しているのですが、
同時接続人数10人程度でCPU負荷5%前後、
5%のうち3割近くをGCの処理だけに持って行かれています。

メモリ使用量が増えるにつれ、GCの処理も遅くなる傾向があるようで、
このまま公開に至ると100人程度でパンクしそうな感触なんですが、
このあたり皆様どう対処しているでしょうか?

カスタムnewとフローリストの組み合わせあたりが妥当でしょうか。。。
0783デフォルトの名無しさん2011/04/07(木) 18:58:44.30
>メモリ使用量が増えるにつれ、GCの処理も遅くなる傾向があるようで、
これあるなぁ
大量にデータを作って大量に捨てるソフトで
3割どころか8割近くGCの処理時間だったことがある
今のDのGCは出来がよくないって聞いたような気もする

その時はクラスを廃して構造体だけにしたら格段に早くなったけど
GCされるのはクラスだけじゃないよね
0784デフォルトの名無しさん2011/04/07(木) 21:53:16.65
まだ古典的なMark&Sweepなのかね?
何にせよJVMのように膨大なリソースを投入されているわけではないからなあ
0785デフォルトの名無しさん2011/04/07(木) 22:14:07.89
メモリ使いすぎるとGCが重くなっちゃうとかかわいい///
0786デフォルトの名無しさん2011/04/07(木) 22:21:52.02
ttp://slashdot.jp/askslashdot/comments.pl?sid=520973&cid=1895935
ええいまたGC萌え廃人か
0787デフォルトの名無しさん2011/04/07(木) 22:30:45.12
dmdは世代型コピーGCなはず。

>>782
とりあえず、メモリの確保と解放が最小限になるプログラムを作ろうか。
目標は、プレイヤーのログインとログアウト、ゲームの状態や場面の切り替えの時だけで、確保と解放をする。

...それとも、既にそんな感じ?
0788デフォルトの名無しさん2011/04/07(木) 22:33:57.90
std.typeconf.RefCountedタソにも頑張って欲しいんだが
こっちも構造体デストラクタのバグのせいでドジッ娘なんだっけ。
0789デフォルトの名無しさん2011/04/07(木) 22:35:57.69
ABA Gamesの人だったかが昔
「なるべく注意してnewも使わずリソースがその場限りで
開放されるようにしてるのにそれでもGCが走ッちまうぜ」
みたいな愚痴を言ってたような気がする
0790デフォルトの名無しさん2011/04/07(木) 22:46:51.01
D1がメンテナンスモードに入ってる現在、GCの実装が糞とは考えにくいけどなあ。
Dの標準ライブラリが糞な可能性は、今も高いけど。
0791デフォルトの名無しさん2011/04/08(金) 00:01:51.93
揺れたー。
DのGCへの信頼が揺らいだと思ったら地面も揺れた。
0792デフォルトの名無しさん2011/04/08(金) 00:25:15.40
公式の説明を素直に読めば世代コピーみたいな高度なことなんかしてなくて
普通に全スキャンするイマイチなGCのままじゃない?
07937822011/04/08(金) 01:45:36.75
>>783
ちゃんとログを取っていなかったので数値を出さなかったのですが、
30人ログインさせた際CPU負荷30%付近(瞬間的に100%近く)で、
メインループは5%前後だったので残りは・・・

クラスを廃して構造体ってのは参照で少々痛い目に遭ったので控えたいなぁ。
refを使い出すと一時変数の参照を受けたりしてc++より厄介に感じました。

>>787
PCはそんな感じですが、
他は後から調整するつもりで(というかもう少しGCがいい子と期待していた…)
敵やマップの生成、破棄がそこそこ多いかもです。
一番newが多いのはAIのLuaDと通信周りなので、このあたり詰めてみます。
0794デフォルトの名無しさん2011/04/08(金) 02:04:50.20
世代別GCじゃなくてまだ単なるM&Sだよ
オブジェクトが増えるとGCに掛かる時間が増えるのも認識されてて,Davidがパッチ投げてる(正確なヒープスキャンとはまた別)
あと,forkがある環境向けに並行Markとか行う実装もブランチはある(テスターが全然いないから取り込まれる予定は今の所無し)
0795デフォルトの名無しさん2011/04/08(金) 11:45:53.83
>>792
公式の説明を素直に読むなら・・・

1.GCで確保された領域を指す 'root' ポインタを全て列挙します。
2.rootから指されている領域内から、 再帰的にGCメモリ領域内を指しているポインタを探索します。
3.GCで割り当てられた領域のうち、 生きたポインタで指されていないことが分かった領域を全て解放します。
4.残ったメモリ領域のデータをコピーして使用領域をまとめる処理 (コピーGCと呼ばれます) が実行される可能性があります。

1~3で少なくともマーク&スイープが実装されていることがわかり、
4で少なくともコピーGCが実装されていることがわかる。

これやっぱり世代型コピーGCだろ。
0796デフォルトの名無しさん2011/04/08(金) 12:15:36.24
「可能性があります」ってのは「各処理系はそのように実装してもよい」程度の意味じゃね?
DMDの実際がどうなのかは知らないけど別の事のような気がする
0797デフォルトの名無しさん2011/04/08(金) 12:18:29.55
説明見るとそうだけど、現在のGCは単純なマーク&スイープで実装されてるってのも前に見たが・・・
0798デフォルトの名無しさん2011/04/08(金) 12:51:44.72
>>796
1~3までに、メモリが十分に空いたら、実行しないかも? ということじゃね。

>>797
何時の話か書いてくれないと、コメントのしようが無いって言う。
0799デフォルトの名無しさん2011/04/08(金) 13:05:45.98
将来コピーGCを実装するかもしれないから
メモリ領域が移動されないことを前提としたコーディングはしないでね!ってことだよ
0800デフォルトの名無しさん2011/04/08(金) 13:09:41.20
だいぶ古い話なんでソースが見つからなかったんだけど、コピー&コンパクションはコストの問題で非現実的なので
実際は単純なマーク&スイープに留めてあるよって言う話があってふーんそうかって思ってたんだよね。

一応こんなの出てきたけど俺が見たのとは違う。 ttp://goo.gl/8Ci3Z
0801デフォルトの名無しさん2011/04/08(金) 13:19:41.16
つーかソース嫁
0802デフォルトの名無しさん2011/04/08(金) 13:24:23.63
>>800
古いのかよ。

むう、せめてGCのソースが見つかれば・・・(見つけられない俺)
0803デフォルトの名無しさん2011/04/08(金) 13:35:45.42
tangoなんかは独自にGC組み込んでるんだよねえ
0804デフォルトの名無しさん2011/04/08(金) 14:19:02.26
>>796,799だろうなあ。
GCの実装変えたよなんて話あったらもっと話題になってるっつーの。
0805デフォルトの名無しさん2011/04/08(金) 16:09:45.51
やっぱGCって遅いんだなあ
0806デフォルトの名無しさん2011/04/08(金) 17:05:48.03
>>802
tk\mem.cかなあ
0807デフォルトの名無しさん2011/04/08(金) 17:12:08.65
あーでももしかしたらtrunkの中じゃなくて公式リリースのsrc\druntime\src\gc\gcx.dかも
0808デフォルトの名無しさん2011/04/09(土) 02:30:22.38
DのGCはクソ、というのは読めばわかる
初歩的なGCを素直に実装しただけなので、他のGC実装(boehmとか)に比べれば簡単で読みやすい
GCの仕組みを知る入門用として読むのはおすすめ
しかしlispやjavaが営々と積み上げてきた高速化技術がなんもはいってないので実用的にはクソ

>>800
「俺が見たのとは違う」って俺が見たのはどのバージョン?

4年ぶりに2.052確認したけど変わってないと思う
0809デフォルトの名無しさん2011/04/09(土) 02:44:36.44
やはりDはだめな子なのか!?
誰かナイスなGC実装してくれよ
0810デフォルトの名無しさん2011/04/09(土) 03:02:25.37
モダンなGCにはオブジェクトの移動が不可欠で、オブジェクトを移動するにはある値がDオブジェクトのポインタ(移動可)なのか数値やC由来のポインタ(移動不可)なのか区別できる必要があり、その情報をコンパイラが吐いてくれないことにはライブラリだけでは実装できない
0811デフォルトの名無しさん2011/04/09(土) 03:20:37.89
>>809
ぶっちゃけるとネイティブでかつランタイムに大きな負担をかけずに
JavaレベルのGCを搭載するのはかなり厳しい(実際そんなGC見た事無い)
コンパイラを弄ってランタイムとの関係をもっと密にすれば行けるかもしれないけど
そうするとJavaみたいに環境の差を吸収する基盤のないD言語だとそこで死ぬ
勿論タスクを分解して,処理の並列度を上げるという逃げ道はあるけども

region inference的なものを入れれるのであれば新しい道が開ける可能性もあるが
どこまで実用で使えるのか分からんしなぁ
0812デフォルトの名無しさん2011/04/09(土) 03:42:49.04
>>810
immutableの仲間が増えそうな気がするな

fixed(char *) c = malloc(10);
char *d = new char[10]; //movable

c = d; // error!
d = c; // ok
0813デフォルトの名無しさん2011/04/09(土) 04:16:51.30
よく知らんのだけど、ポインタがありながらexact GCを許すために
C#はそんなようなトリックを使ってるんだっけ?
0814デフォルトの名無しさん2011/04/09(土) 04:36:14.83
C#はunsafeを明示してポインタを使うと、そのブロック内では対象オブジェクトは移動をロックされる。
>>812はそうではなくて、D言語風に、素のポインタはいつの間にか移動するポインタ、
fixedを付けると移動しないポインタ、ぐらいのつもりで書いた。細かいことは考えてない。

今思ったんだがポインタ演算中に別スレッドでgc走ってポインタが移動すると結果が狂うんじゃ……
0815デフォルトの名無しさん2011/04/09(土) 08:45:26.93
>>808
ソースの場所おしえてくれ〜
0816デフォルトの名無しさん2011/04/09(土) 09:49:33.49
質問なんだけど
interface A{}
class foo{}
class bar: foo , A{}
class baz: foo, A {}
があって
foo[] array
に、fooとbarとbazが混在してるとして
arrayのうちinterface Aを継承してるものをピックアップなんてできないよね?
書いてるうちに、出来るわけねーじゃんって思ったけど一応質問してみる・・・
0817デフォルトの名無しさん2011/04/09(土) 10:29:58.53
Is式は全能
0818デフォルトの名無しさん2011/04/09(土) 10:55:09.91
immutableとconstは統一してほしい、inoutがダサい
Cとのインターフェイスでもこの辺りや文字列でイラっとくることがある
0819デフォルトの名無しさん2011/04/09(土) 12:16:41.32
GCのやり方はプログラマがえらべるよってのがDのスタンスのはずだ
仮想マシンもないのにGCにごりごり依存してる標準ライブラリの存在がネック
だとすると・・・ピコーン

alias std!FooGC std;
0820デフォルトの名無しさん2011/04/09(土) 12:19:22.67
void* p = std!fooGC.stdlib.mallloc();
std!barGC.stdlib.free(p);

('A`)
0821デフォルトの名無しさん2011/04/09(土) 12:19:37.15
>>816
出来る
0822デフォルトの名無しさん2011/04/09(土) 13:34:50.45
SDLつかえねええええええ

SDL\SDL_audio.d(45): C-style function pointer and pointer to array syntax is dep
recated. Use 'function' to declare function pointers
SDL\SDL_audio.d(77): C-style function pointer and pointer to array syntax is dep
recated. Use 'function' to declare function pointers
SDL\SDL_rwops.d(31): C-style function pointer and pointer to array syntax is dep
recated. Use 'function' to declare function pointers
0823デフォルトの名無しさん2011/04/09(土) 13:56:39.00
>>822
int (*fp)(int, int); //C-Style
↓
int function(int, int) fp; //D-Style
0824デフォルトの名無しさん2011/04/09(土) 14:09:50.10
つ DerelictSDL

main() の頭でDLL初期化が必要なので注意
DerelictSDL.load(); // SDLのそれぞれのDLLに対してこういう初期化文を追加
0825デフォルトの名無しさん2011/04/09(土) 14:53:10.39
構造体のinitのオーバーライドどうやってやります?
0826デフォルトの名無しさん2011/04/09(土) 15:39:35.07
>>823,824

thx!
とりあえず>>823の変換をちまちまやってみるが
うまい正規表現とかないですか
おとなしくDerelictSDLにしといたほうがいいですか
0827デフォルトの名無しさん2011/04/09(土) 15:43:51.46
$1とか使って置換すればそんな難しくないと思われる
0828デフォルトの名無しさん2011/04/09(土) 15:46:20.24
undefined indentifer bitとか\(^o^)/
bitって廃止になったんじゃなかったか
DerelictSDLしてくる
0829デフォルトの名無しさん2011/04/09(土) 16:16:02.17
ttp://www.ku6.jp/keyword6/1.html
ちょっと前にURL載ってるけどここのじゃじゃダメなん?
日付見る限りCスタイルの関数宣言とかbit使ってるってことなさそうだが……
0830デフォルトの名無しさん2011/04/09(土) 16:28:59.65
>>825
継承関連はクラスでどうぞ。
0831デフォルトの名無しさん2011/04/09(土) 19:09:39.90
>>830
Cとのインターフェースで使う構造体で初期値が固定なものがあって
それを使うたびに自前で毎回全メンバーに決まった値入れたり
initXXX()みたいな関数呼び出したりするのが自明すぎだし書き忘れたらバグの元だしで嫌なんだ
initを使えれば見た目もすっきりしていいんだけど・・・
0832デフォルトの名無しさん2011/04/09(土) 19:25:35.91
struct S { int i=10; }
とかするとS.init.iは10になった気がするんだけど、使えそう?
0833デフォルトの名無しさん2011/04/09(土) 20:00:57.47
今日からDはじめました
勉強のためにほかの人が書いたプログラムを写経しようと思ってます
初心者でも理解できるような物があれば教えてください
0834デフォルトの名無しさん2011/04/09(土) 20:43:25.94
>>832
�dほんとだできますた
0835デフォルトの名無しさん2011/04/09(土) 21:39:09.69
>>832, 834
それホントに出来た?
自分は出来なかった・・・。
例えばこんな。

struct Hoge
{
int a = 30;
unittest
{
static assert(Hoge.a.init == 30); // 0 == 30 となり失敗する
}
}

ttp://www.kmonos.net/alang/d/2.0/property.html#init
には書いてあるけど、あるときを境にこれが出来なくなったと理解してる。
いつかの更新履歴に書いてあったような・・・。
08368352011/04/09(土) 21:41:55.63
ごめん、Hoge.a.init ではなく Hoge.init.a と書けばいいのか!
できたー!サンクス!
0837デフォルトの名無しさん2011/04/09(土) 22:08:28.85
>>833
D公式のトップにあるやつとか?
ただ、もしあなたがプログラミング自体の初心者なら、別の言語から始めることをお勧めする。(とりあえずjavaでいい)
0838デフォルトの名無しさん2011/04/09(土) 22:09:00.89
>>832
http://ideone.com/ggfoA

('A`)
0839デフォルトの名無しさん2011/04/09(土) 22:17:15.95
えと、何か言いたい?
0840デフォルトの名無しさん2011/04/09(土) 22:21:26.23
T.init.s.a とか?
0841デフォルトの名無しさん2011/04/09(土) 22:36:24.84
http://ideone.com/C0MPB

(゚∀゚)!
0842デフォルトの名無しさん2011/04/09(土) 23:09:05.26
そーいや今日の会議はどうだったのかなっと
0843デフォルトの名無しさん2011/04/09(土) 23:17:48.86
会議行った人、感想ちょーだい
0844デフォルトの名無しさん2011/04/10(日) 00:06:23.65
#dkaigiの要約
ttp://twitter.com/nalto32/status/56624705855176704
0845デフォルトの名無しさん2011/04/10(日) 10:15:34.11
>>844
把握
0846デフォルトの名無しさん2011/04/10(日) 12:08:58.76
>>844
FU○K
0847デフォルトの名無しさん2011/04/10(日) 12:12:03.79
実際Phobosは妙な機能は充実してるけど基本的な機能が足りない気がするんだよね
Locale周りとか…dwt2使ってて国別のリソース取るところではたと困ったし
0848デフォルトの名無しさん2011/04/10(日) 13:06:48.26
そういえばちょっとまえに、テンプレートの型推論で、静的配列の要素数もちゃんと推論してくれる事に感動した俺。
http://ideone.com/em1tO
0849デフォルトの名無しさん2011/04/10(日) 17:14:21.43
こっちがまとめとしてふさわしい
ttp://twitter.com/mono_shoo/statuses/56567451500023808
0850デフォルトの名無しさん2011/04/10(日) 17:36:51.97
「こんなに沢山いたのか」「非実在D言語er」「僕は一人じゃなかったんだ」
とかお前ら人数に感動しすぎww
0851デフォルトの名無しさん2011/04/10(日) 17:39:54.89
>>848
こんなこと出来たのかw
テンプレートとか苦手なロートルだけどこういうの見るとやってみたくなるな
0852デフォルトの名無しさん2011/04/10(日) 18:13:51.39
動画撮ってたりしないのかな?
0853デフォルトの名無しさん2011/04/10(日) 18:51:47.78
動画を撮るプログラムをDで書くのが間に合わなかったらしい
0854デフォルトの名無しさん2011/04/10(日) 19:31:20.55
完成してたはずなのに、当日コンパイルできなくなってたんですね、わかります
0855デフォルトの名無しさん2011/04/10(日) 19:44:21.19
昨日はpushがあったからな(笑)
破壊的なのかはしらんが
0856デフォルトの名無しさん2011/04/11(月) 02:40:00.43
いやースコープガード文スタイリッシュだー。
最新dmdにスリルを求めてしまう事の次にD言語使ってる感が出る。
0857デフォルトの名無しさん2011/04/11(月) 08:09:51.69
一応いっとくとDのGCが特にクソな訳ではなく
rubyとかのスクリプト言語のもたいていクソなんだが
メインの実行が遅いので、メインとGCの比率で見ると目立たないだけ
0858デフォルトの名無しさん2011/04/11(月) 08:10:57.23
>>815
>>807
0859デフォルトの名無しさん2011/04/11(月) 16:48:24.40
すみません、>>794のGCのパッチは何処にあるでしょう?
GCも何とかなるなら何とかしたい。
0860デフォルトの名無しさん2011/04/11(月) 17:08:40.34
ttp://www.digitalmars.com/d/2.0/struct.html#ConstStruct
t = s; // ok, t.a is now 3 -> ウソ、cannot modify const (dmd2.052 win)

ドキュメントの方がおかしいような気がしなくもないがどうなんだろう
0861デフォルトの名無しさん2011/04/11(月) 20:42:09.42
大量のバグをかかえているdmdよりも、ドキュメントを疑うのかよ
0862デフォルトの名無しさん2011/04/11(月) 20:45:40.30
dmdは常に正しい
0863デフォルトの名無しさん2011/04/11(月) 21:13:27.77
値型がconstなら初期化以外変更不可
そう、貴様は同じ場所に留まって、もがき続けるしかないのだ!
0864デフォルトの名無しさん2011/04/11(月) 22:02:27.30
言語仕様書は、dmdの挙動の説明書ではない
0865デフォルトの名無しさん2011/04/12(火) 01:50:14.40
dmdの挙動が言語仕様を決定する
0866デフォルトの名無しさん2011/04/12(火) 02:08:02.14
つまり、挙動不審なんですね、わかります。
0867デフォルトの名無しさん2011/04/12(火) 04:28:06.83
なあ、いいこと思いついたんだ聞いてくれ

scope class を、scope class のメンバ変数としても存在出来るようにするんだ。
で、scope class はデストラクタ終了後に自分の scope class メンバ変数を delete する。

ちょっと突破口の香りしね?
0868デフォルトの名無しさん2011/04/12(火) 07:57:51.76
面白いと思うけど、何に対する突破口?
光魔術に対する突破口?
0869デフォルトの名無しさん2011/04/12(火) 12:49:44.82
闇プログラマーとしての突破口か。
0870デフォルトの名無しさん2011/04/12(火) 13:14:39.46
↓こういうのを一つにまとめて
if (nodeSrc == node.parent
|| nodeRes == node.parent
|| nodeExt == node.parent) { 〜以下省略

↓みたいに書けそうな気がするけどなにか簡単な書き方ないかな?
if (node.parent in [nodeSrc,nodeRes,nodeExt]) { 〜以下省略
0871デフォルトの名無しさん2011/04/12(火) 14:16:10.25
つ template
0872デフォルトの名無しさん2011/04/12(火) 14:43:23.48
http://ideone.com/l5ee8
こんな感じ?
0873デフォルトの名無しさん2011/04/12(火) 15:05:48.32
てかこれでいいわ。
void*[T] include(T)(T[] a...)
{
void*[T] bar;
foreach(o;a)
{
bar[o] = null;
}
return bar;
}

を定義しといて

if(node.parent in include(nodeSrc,nodeRes,nodeExt) ){〜以下略
0874デフォルトの名無しさん2011/04/12(火) 17:10:33.22
>>873
なかなか。ありがと
0875デフォルトの名無しさん2011/04/12(火) 20:19:12.98
C/C++でいう、
〜前略〜
int i;
int a[256];
char b[1024];
〜中略〜
int *ap = a;
char *abp = (char *)ap;

for(i = 0; i < 1024; i++) abp[i] = b[i];
〜後略〜

とか、

struct test_s{
int a;
char b[16];
};
〜中略〜
test_s a;
char b[20];
〜中略〜
test_s *ap = a;
char *abp = (char *)ap;

for(i = 0; i < 20; i++) abp[i] = b[i];
〜後略〜

とか、できますか?
0876デフォルトの名無しさん2011/04/12(火) 21:35:03.91
つ asm
0877デフォルトの名無しさん2011/04/12(火) 21:37:45.40
相変わらず、趣味で遊ぶにはいいね、ってとこから進んでないのなw
0878デフォルトの名無しさん2011/04/12(火) 21:43:17.91
どゆこと?普通にできるでしょ
0879デフォルトの名無しさん2011/04/12(火) 21:55:15.65
>>875
int[256] a;
char[1024] b;
(cast(char*)a.ptr)[0 .. 1024] = b[];

test_s a;
char[20] b;
(cast(char*)&a)[0 .. 20] = b[];
0880デフォルトの名無しさん2011/04/12(火) 21:57:16.66
え、バイト列から構造体や型の違うデータを取り出すのに、アセンブラが必要なわけ・・・?
0881デフォルトの名無しさん2011/04/12(火) 21:59:40.10
>>879
おぉ、これはずいぶん簡潔に・・・・。
こうすれば出来るんですね。ありがとうございます。
0882デフォルトの名無しさん2011/04/12(火) 22:07:38.87
int[256] a;
char[1024] b;
(cast(char[])a)[] = b[];

これでもいける
0883デフォルトの名無しさん2011/04/12(火) 22:30:46.95
D2 + DFL のサンプルコード探しているのですが
GUI部分とメイン処理を別スレッドでやるのに、参考になるもの何処かにないでしょうか?
0884デフォルトの名無しさん2011/04/13(水) 00:16:37.15
可変個引数 (...) な関数の内部で、可変個引数 (...) な関数に
引数をまるまるスルーパスすることってできます?
0885デフォルトの名無しさん2011/04/13(水) 01:29:03.82
>>883
C#(というか.net)で、やりたい事書いているサンプル探して、それと同じ様な
クラスやメソッドがDFLにないか、探してみるといいよ
enticeのヘルプにクラスの一覧みたいなのがあったと思う
0886デフォルトの名無しさん2011/04/13(水) 01:34:36.08
>>883
サンプルじゃないけどココがひっかかる所かもしれない(コメント欄)
ttp://d.hatena.ne.jp/haru-s/20090716/1247730305
0887デフォルトの名無しさん2011/04/13(水) 02:09:41.01
>>884
void f(T...)(T args){ g(t); }
void g(T...)(T args){}
0888デフォルトの名無しさん2011/04/13(水) 02:16:04.24
>>883
http://bit.ly/hlAaZG どうぞ。
0889デフォルトの名無しさん2011/04/13(水) 02:43:09.07
>>884
C/Dスタイル可変個引数だと出来そうにない。
代わりに、テンプレートのタプルパラメタを使えば出来るはず。(>>887と同じ方法)
void foo(...) を void foo(T...)(T t)に変えて、tをそのまま渡す。(渡す先はC/Dスタイル可変個引数でもおkなはず)

型安全可変個引数だと、受け取った配列(またはクラス)をそのまま渡せばよさそうだ。
0890デフォルトの名無しさん2011/04/13(水) 03:09:43.10
WindowsのコマンドプロンプトでもPowerShellでも、標準出力でascii外の文字
を使うと、正しく表示されないのが困ったもんだ。何でUTF-8なんか使うんだ。
08918842011/04/13(水) 03:09:52.72
>>887, 889

なるほどなるほど。試してみます。
ありがとうございました。
0892デフォルトの名無しさん2011/04/13(水) 03:36:25.52
D言語コンパイラをCentOSにインストール出来ない・・・。
0893デフォルトの名無しさん2011/04/13(水) 04:20:56.19
なんかニューカマー多い?
0894デフォルトの名無しさん2011/04/13(水) 06:53:46.58
CentOSでDMDがなぜ動かないのかと思ったら、gccが4.1.2に巻き戻っていた・・・。
make長げー・・・。
0895デフォルトの名無しさん2011/04/13(水) 07:01:37.88
ついにD言語が一大流行をはじめたか
0896デフォルトの名無しさん2011/04/13(水) 07:48:38.19
>>890
コマンドプロンプトの文字コードは変えられる
0897デフォルトの名無しさん2011/04/13(水) 08:08:21.50
>>895
多分、流行ってない。
けど、思ったよりだいぶマトモな仕様だし、
有名なソフトに使われればその日も近いかも。
0898デフォルトの名無しさん2011/04/13(水) 08:09:10.54
本来ならPhobosがOSのロケールを見て出力(入力もか)文字コードを変えるべきなんだよな
内部UTF-8と決め打って、なおかつ他の箇所では適切に(なるまで時間かかった気もするけど)変換してるんだから
0899デフォルトの名無しさん2011/04/13(水) 08:35:56.80
>>895,897に見る新参と古参の温度差
0900デフォルトの名無しさん2011/04/13(水) 11:10:31.87
むう、std.encodingを拡張して、SHIFT-JISに変換するプログラムを組めないだろうか?

http://www.kmonos.net/alang/d/2.0/phobos/std_encoding.html
http://site.icu-project.org/

・・・もしかしたら出来るかもしれない。
0901デフォルトの名無しさん2011/04/13(水) 13:36:09.00
>>900
頼んだぞ
0902デフォルトの名無しさん2011/04/13(水) 13:38:02.95
や、やっぱり俺なのか!?
0903デフォルトの名無しさん2011/04/13(水) 14:37:28.23
ライブラリじゃなくてフィルタ(SJIS->UTF, UTF->SJISの2つ)があれば
パイプであれこれ柔軟にできるんじゃないかと思うが
探してもうまく見つけられなかった
0904デフォルトの名無しさん2011/04/13(水) 16:17:38.71
nkfとか?
0905デフォルトの名無しさん2011/04/13(水) 17:56:48.00
本家につながらないー
0906デフォルトの名無しさん2011/04/13(水) 18:03:36.46
ホントだ。
0907デフォルトの名無しさん2011/04/13(水) 18:52:02.07
節電のためサーバを落とします
0908デフォルトの名無しさん2011/04/13(水) 19:06:14.63
東電エリアなのかよ
0909デフォルトの名無しさん2011/04/13(水) 20:03:56.47
>>897
キラーアプリがあればとみんな待ち望んで誰も動こうとしないのもまたD。
そろそろすごいもの作りませう >>910-
0910デフォルトの名無しさん2011/04/13(水) 20:06:59.16
やっとつながった
0911デフォルトの名無しさん2011/04/13(水) 20:07:24.53
上の方のD言語使いがみんなして「俺がスゴイの出すからちょっと待ってろ」って言ってるんだもん
09128832011/04/13(水) 20:12:55.82
>>885 >>886 >>888
ありがとうございます
おかげで、なんとかなりそうです
0913デフォルトの名無しさん2011/04/13(水) 20:21:50.76
キラーアプリキラー それがD
0914デフォルトの名無しさん2011/04/13(水) 21:36:50.99
いま俺がやってる、ってのはいつまでも出ないフラグ
無視して先に出すべ
0915デフォルトの名無しさん2011/04/13(水) 21:39:48.68
>>913
破壊的変更があるからねw
0916デフォルトの名無しさん2011/04/13(水) 21:43:16.85
Dマスコットアクションの敵にキラーが必要だな
0917デフォルトの名無しさん2011/04/13(水) 22:12:45.42
真の敵は自分自身だ


スパイダーマン3みたいだな
0918デフォルトの名無しさん2011/04/13(水) 22:28:46.90
spy Der man

Derの中にC++のスパイが?
0919デフォルトの名無しさん2011/04/13(水) 23:04:07.34
luad には未来を感じた
誰か似たようなインタフェースのSquirrel版を作ってくれまいか



Squirrel使ったことないけどw
0920デフォルトの名無しさん2011/04/13(水) 23:19:42.05
現状だと構造体のインスタンス保存してないからメソッド呼べなかったりとかで
(つか中でthis参照するとめちゃくちゃな値が返ってくる)
使い物にならん感じだったなあluad

自分でも作ろうとしてみたが、>>75もいってるprivate判定とかで面倒になってる。
__traits(compiles)で呼び出すコード書いて通るか否かでやってるんだが、
・特殊関数(__ctorとか__unittest*とか)
・静的変数と普通の変数
・static関数と普通の関数
・↑の各種オーバライド
とか判定してたら条件分岐多すぎて閉じ括弧の量がlispみたいになっちまって今書き直してるとこw
0921デフォルトの名無しさん2011/04/14(木) 01:56:06.88
はぁ・・・。DMDがCentOS5.6で動いてくれない・・・。
gcc-4.5.2にアップしたのに、4.2.3よりバージョンが低いと言われた・・・死にたい。
そもそも、なんでgccが必要なんだよ・・・。
0922デフォルトの名無しさん2011/04/14(木) 01:59:06.51
dmcじゃダメなんだね
0923デフォルトの名無しさん2011/04/14(木) 06:11:31.55
うちはいけてる
09249202011/04/14(木) 07:42:10.66
なんか寝る前に書き込む時違和感あったんだがオーバーライドじゃなくてオーバーロードだった。
はじゅかしい。
0925デフォルトの名無しさん2011/04/14(木) 08:01:19.12
>>140
再現コードないの
0926デフォルトの名無しさん2011/04/14(木) 08:21:00.72
>>900
各自で作るのはいいけど、
作ったらPhobosに入れて欲しい
0927デフォルトの名無しさん2011/04/14(木) 13:49:21.62
>>926
おおおおおおおお俺は、つつつつつつつ作らないぞ!???????????????
0928デフォルトの名無しさん2011/04/14(木) 19:42:31.95
>>921
標準のリンカがgcc
0929デフォルトの名無しさん2011/04/14(木) 19:56:00.94
>>921
良く分からないけどgccって名前のプログラム作って引数を変換してdmcに渡すとかじゃだめなの?
0930デフォルトの名無しさん2011/04/14(木) 20:33:18.76
gdbがd言語に対応してたことに今気づいた

ddbgの完成度にもどかしさを感じてたので
mingw環境(3つ目)をまた入れてみるか
0931デフォルトの名無しさん2011/04/14(木) 20:43:39.21
dmcはwindow用しかないでしょ
0932デフォルトの名無しさん2011/04/14(木) 20:43:50.35
windows
0933デフォルトの名無しさん2011/04/14(木) 20:45:44.91
>>925
ttp://wiki.dprogramming.com/Dfl/Snapshots
dfl-20100801.zip 内の packages/dfl/examples/ 以下
dmd.exeとdfl.exeにPATHが通っている状態で、同梱のmakeall.batを実行でビルド出来ます
drop.d と droplist.d のdebugビルドはD1/D2共に、ドラッグするとAccessViolation
0934デフォルトの名無しさん2011/04/14(木) 21:05:44.91
>>928
OPTLINKを使わなくていいなんて嗚呼
なんて羨ましいんだ!!なんて羨ましいんだ!!
0935デフォルトの名無しさん2011/04/14(木) 22:33:34.04
嫌いなの?
0936デフォルトの名無しさん2011/04/14(木) 23:04:27.74
ちょっと大き目のソフトを-gつきでリンクして
意味不明のダイアログが出てきて失敗した思い出しかない
0937デフォルトの名無しさん2011/04/14(木) 23:14:46.33
mingw-gdcとかってないの?
0938デフォルトの名無しさん2011/04/14(木) 23:27:41.52
普通にあるよね
0939デフォルトの名無しさん2011/04/15(金) 18:00:26.25
もうやだこのダメ言語・・・
ttp://ideone.com/iie3s

('A`)
0940デフォルトの名無しさん2011/04/15(金) 19:39:02.84
>>939
wwww
0941デフォルトの名無しさん2011/04/15(金) 20:01:23.33
alignはprivate:みたいな感じでスコープの断絶があるのかな?って想像はできるけど
Bはなんだろな
0942デフォルトの名無しさん2011/04/15(金) 20:18:56.51
D言語はバグとか破壊的変更といった鞭も多いけど高性能なforeachとかscopeとか飴も一杯ある

ここは一つDに飴をくっつけてDame言語と呼ぼうと思う
0943デフォルトの名無しさん2011/04/15(金) 20:47:17.49
>>939
2パスせまんてくすまじっく!
Dはだめじゃないよかわいいよ
0944 忍法帖【Lv=4,xxxP】 2011/04/15(金) 22:54:08.70
import式はgtkbuilderと相性がいいな。UIファイルと実行ファイルをまとめられる。
0945デフォルトの名無しさん2011/04/15(金) 22:58:06.59
>>942
何いってんだ飴ばかりじゃないかと言おうと思ったがDame言語が強まるだけだった。
0946デフォルトの名無しさん2011/04/15(金) 23:11:09.68
D言語は好きだけどD言語erの自虐的なMっぷりも大好き。
0947デフォルトの名無しさん2011/04/15(金) 23:33:11.64
Bugzillaの残り件数見てもなお、D2を使おうとする俺は、Mなんだろうなあ
0948デフォルトの名無しさん2011/04/15(金) 23:33:54.30
ウォルたん「バグ多くねーし。GCCと比べてもちょっと少ないし」
0949デフォルトの名無しさん2011/04/15(金) 23:36:01.62
ヒント:ユーザー数に対して見つかっているバグの数
0950デフォルトの名無しさん2011/04/15(金) 23:54:07.31
Dは仕様が明確だからC++みたいにバグがバグかどうか分からないという事例が少ないんだよ
0951デフォルトの名無しさん2011/04/16(土) 00:59:06.42
そりゃあもちろんバグじゃなく仕様だからな
0952デフォルトの名無しさん2011/04/16(土) 01:17:42.22
VisualDでリンクできねえええええええ
SDL.libとSDL_mixerだけはできてるうう
09539212011/04/16(土) 04:57:15.84
GDC入れて落ち着いた。
DMDなんて、夢だったんや・・・。
0954デフォルトの名無しさん2011/04/16(土) 12:24:50.18
開発スタッフの人数に対して見つかっているバグの数を考えると憂鬱になる
0955デフォルトの名無しさん2011/04/16(土) 12:57:06.37
発見数は愛の指標だと思うことにした
0956デフォルトの名無しさん2011/04/16(土) 15:57:08.31
.libってバイナリじゃないの?

SDL_netのlibをリンクしようとすると
エラーがでる

エラー 3 Error 43: Not a Valid Library File
0957デフォルトの名無しさん2011/04/16(土) 16:00:24.07
>>956
LIBがCOFFなのでは
0958デフォルトの名無しさん2011/04/16(土) 21:14:50.67
そろそろ次スレの季節だな
↓テンプレに追加してほしい
■ IDE
ttp://www.dsource.org/projects/visuald (Visual D)
■ ライブラリ(OpenGL,SDLなどゲーム開発に便利な詰め合わせ)
ttp://www.dsource.org/projects/derelict (Derelict)
0959デフォルトの名無しさん2011/04/16(土) 22:03:18.32
ひょっとして忍法帖がいるのか?
0960デフォルトの名無しさん2011/04/16(土) 23:55:30.83
Derelictでかいし、SDL+OpenGLだけなら>>829のほうがすき
つうか確認のために踏んだら素材が増えてるよwww やったねたえちゃん!

libはBorland用の(omf)使うか、VC++用(coff)をcoff2omfで変換するか、
もしくはimplib /s xxx.lib xxx.dllでdllから自分で生成する。
この辺のことって今はどっか(友の会あたり?)に書いてあるのかしら。
0961デフォルトの名無しさん2011/04/17(日) 00:17:58.27
逆引きD言語のこともたまには思い出してあげてください・・・
http://wikiwiki.jp/dlang/
0962デフォルトの名無しさん2011/04/17(日) 00:22:48.54
現状見出しにある項目って公式和訳で完全に事足りるよね・・・
0963デフォルトの名無しさん2011/04/17(日) 00:24:44.08
>>829にlibつけてほしいけどライセンス的に問題あったっけ
0964デフォルトの名無しさん2011/04/17(日) 00:40:39.51
>>829 は文面から放置のにおいを感じたから
スルーするつもりだったのにw

もりもり増えてるじゃないか!
0965デフォルトの名無しさん2011/04/17(日) 15:42:36.00
次スレ
http://hibari.2ch.net/test/read.cgi/tech/1303022487/
0966デフォルトの名無しさん2011/04/17(日) 16:00:03.63
>>2にいったいなにが
0967デフォルトの名無しさん2011/04/17(日) 19:08:36.65
スペルインターセプト
0968デフォルトの名無しさん2011/04/18(月) 19:27:09.72
D言語は犠牲になったのだ...大量のバグによってな
0969デフォルトの名無しさん2011/04/18(月) 21:37:46.78
もしかして
class C
{
0970デフォルトの名無しさん2011/04/18(月) 21:39:13.38
static int Func() { return 2; }
}

とかして

C.Func()ってできない?

C inst = new C();
inst.Func()でなくて
0971デフォルトの名無しさん2011/04/18(月) 22:03:11.02
できるはず
0972デフォルトの名無しさん2011/04/18(月) 22:03:43.50
久々にバグに出会えたと思ったらデマかよ
0973デフォルトの名無しさん2011/04/18(月) 23:30:07.88
何で出来ないと思っちゃったのか気になる
0974デフォルトの名無しさん2011/04/18(月) 23:38:49.60
バグが出ないってのはアレだ、使い込みが足りない
1日10本ぷろぐらむを書く、それを日課にすべし
0975デフォルトの名無しさん2011/04/18(月) 23:46:40.91
コード2万本です
0976デフォルトの名無しさん2011/04/18(月) 23:49:13.43
それで足りるのか?
0977デフォルトの名無しさん2011/04/19(火) 18:03:22.85
import std.stdio;
class C
{
public:
static int func() @property { return data; }
private:
static int data = 13;
}

void main()
{
writeln(C.func);
}
0978デフォルトの名無しさん2011/04/19(火) 18:06:07.91
しまったまた書きこんでしまった

import std.stdio;
class C
{
public:
  static int func() @property { return data; }
private:
  static int data = 13;
}

void main()
{
  writeln(C.func);
}

これでコンパイル通らず5行目で'this' is only defined in non-static menber functions, not func
と出るのだがどういう意味ですか><
0979デフォルトの名無しさん2011/04/19(火) 18:13:43.26
普通にコンパイル通るし実行もできる@2.052
0980デフォルトの名無しさん2011/04/19(火) 18:43:59.12
あれ?コンパイル通ってしまった

スペルミスだろうか(#^ω^)ビキビキ
0981デフォルトの名無しさん2011/04/19(火) 18:45:28.83
スレ汚しすみません
0982デフォルトの名無しさん2011/04/19(火) 19:42:04.08
こんな感じのシングルトンクラスをマスターに作ってたんですが、
複数のスレッドからA.instance()を呼び出す際に、
ちょくちょくセグメンテーション違反で落っこちます。
static変数はスレッドセーフと思ってましたが、
根本的に何か間違っているでしょうか?

class A {
  B[] b;
  static A instance() {
    static A a;
    if(a is null) {
      a = new A();
    }
    a.update();
    return a;
  }
  void update() {
    B[] tmp;
    // 外部ファイルの更新チェック、読込み等。で、だいたいこの辺で落ちる
    synchronized(this) {
      b = tmp;
    }
  }
}
class B {}
0983デフォルトの名無しさん2011/04/19(火) 19:52:31.78
constでもなけりゃスレッドセーフじゃないんじゃね?
0984デフォルトの名無しさん2011/04/19(火) 20:12:55.09
>>982
D2はそうだけど、D1は違うよ。
09859822011/04/19(火) 21:58:51.90
ありがとうございます。
log4cxxも同じような感じで使ってたんですが、
ログ出力を止めたら再現しなくなりました。

恐らく他(自分のコード)に問題がありそうなので調査してみます。
0986デフォルトの名無しさん2011/04/19(火) 22:39:43.69
>>985
ところで>>982のコードだと、スレッド別にAのインスタンスが生成されるが大丈夫か?
0987デフォルトの名無しさん2011/04/19(火) 22:57:48.81
>恐らく他(自分のコード)
Dに限っては疑うべきは自分のコードにあらず
0988デフォルトの名無しさん2011/04/19(火) 22:59:22.61
大丈夫じゃないと思います
0989デフォルトの名無しさん2011/04/19(火) 23:01:09.05
っていうかスレッド別に生成されるからスレッドセーフになってるんであって、
sharedにしたらふつーにsynchronizedにしないとダメなんじゃ
0990デフォルトの名無しさん2011/04/19(火) 23:36:19.88
gccにInterlockedIncrementが無いぜーと嘆いてたら、D言語なら文法レベルでサポートしてるぜ、
と言われたんですが、本当ですか。
0991デフォルトの名無しさん2011/04/19(火) 23:53:42.94
>>990
どんな話題だ、と思いつつ、、、
単体の命令には無いけど、synchronized文を使えば同じ事は出来るな。
てか、gccでも同じ関数使えるだろ。。。
0992デフォルトの名無しさん2011/04/20(水) 00:59:01.98
synchronized文は、その文を同時に複数実行できないようにするだけあって、
アトミック化するのとは違うのでは。
core.atomicってどうなってるのだろう。
0993デフォルトの名無しさん2011/04/20(水) 07:06:06.72
>>990
gccには__sync_add_and_fetchってあったような
0994デフォルトの名無しさん2011/04/20(水) 07:15:39.73
キーワード長ぇよ
せめてsyくらいにしてくれ
0995デフォルトの名無しさん2011/04/20(水) 10:51:42.66
>>986
そこは意図的にスレッド別に作ってます。
スレッド数が最大8程度なので、
同期を取って一つを使い回すよりかはこういう使い方のほうがいいかなと。
0996デフォルトの名無しさん2011/04/20(水) 15:12:25.23
>>994
お前studio容認派か
0997デフォルトの名無しさん2011/04/20(水) 20:46:23.63
うめ
0998デフォルトの名無しさん2011/04/20(水) 20:47:24.58
998
0999デフォルトの名無しさん2011/04/20(水) 20:48:25.57
999
1000デフォルトの名無しさん2011/04/20(水) 20:49:27.97
100000000000000000000000000000!!!!!!!!!!!1111111
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。