Dreflection
Upcoming SlideShare
Loading in...5
×
 

Dreflection

on

  • 1,921 views

 

Statistics

Views

Total Views
1,921
Views on SlideShare
1,920
Embed Views
1

Actions

Likes
0
Downloads
2
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Dreflection Dreflection Presentation Transcript

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