Your SlideShare is downloading. ×

Dreflection

1,290

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,290
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. D と reflection はまじしん一ろう
  • 2. えらい前
    • 具体的には 5 年くらい前とかから
    • Reflection 欲しいなーという声は少なからずあった
    • 最初のアンオフィシャルウィッシュリスト (2005-3 月 ):
      • Nanka
      • Kanka
      • Hoge
      • Reflection API
      • -> 4 位
  • 3.
    • ウィッシュリストで未だ絶賛一位
      • つまりまだ無い
      • Java, C# : ある
      • C, C++ : ない
      • D : ない
      • 残念な感じ
  • 4. なんで欲しいか
    • RPC 作るとか
    • シリアライザ欲しいとか
    • バックトレースとか出ると開発ラクとか
    • etc etc…
  • 5. 努力 過去
    • インチキ reflection とか backtrace とか
    • 自分のバイナリからシンボルテーブル読んで
      • _D3std4math3absFlZl
    • デマングルして引数型とか返り値型を判定
    • 弱点
      • 構造体とかクラスのメンバがわからん
      • つまりシリアライザ書けない
  • 6. 努力 過去
    • FlectioneD とか DDL とか
    • 似たようなことをもうちょい体系的に
    • まぁ正直なところ完璧とはほど遠いか
  • 7. 現在
    • こんなんが動く
      • 存在するクラスの一覧くらいは出せる
      • ClassInfo から仮想関数テーブルとかも取れる
    import std.moduleinit; foreach (ModuleInfo mi; ModuleInfo.modules) { foreach (ClassInfo ci; mi.localClasses) { printf(“%.*s ”, ci.name); } }
  • 8. 現在 続き
    • c lass ClassInfo
    • c onst(MemberInfo[]) getMembers(string);
      • 絶賛未実装
    • DMD 見るとコードは書きかけてるので作るつもりはあるにはあるのでないかな
  • 9. 未来
    • コンパイルタイムリフレクションを充実させて
    • ライブラリ側で reflection 提供できるようにするよー
      • by うぉるたー
    • たしかにコンパイル時には現状の D でもそれなりに情報取れる
  • 10. まとめ
    • D での Reflection の現状とかについて
    • まぁ近いうちにそれなりになんか入るのではないかな。知らんけど。
    • 将来的にはコンパイルタイム reflection を充実させてライブラリとして提供、らしい

×