Create  Edit  Diff  Phillro Industries  Index  Search  Changes  History  Source  RSS  Note  wikifarm  Login

Phi::TypeData

Phi::TypeData

実行時型情報(RTTI、Run Time Type Information)をラップしたクラス。

実行時型情報というのは Delphi のクラスに関する内部情報。

Apolloではこの実行時型情報を使ってプロパティの自動作成を行っている。

Ruby レベルで公開されているのは、列挙型に関する情報が Phi::TYPE_INFO に置かれているだけ、か?

$(Apollo)/sample/console/typeinfo.rb にあるように、published property の情報は一通りとれます。 これを使えば Delphi IDE のようなオブジェクトインスペクタも作れるはず。 --moriq

properties

count : Fixnum

items : Array of Phi::TypeInfo

ord_type : Fixnum (OrdType?)

min_value : Fixnum or Bignum

max_value : Fixnum or Bignum

base_type : Phi::TypeInfo

comp_type : Phi::TypeInfo

float_type : Fixnum (FloatType?)

max_length : String

class_type : Phi::TypeInfo

parent_info : Phi::TypeInfo

unit_name : String

method_kind : Fixnum (MethodKind?)


require "phi"
ti = Phi::TYPE_INFO["TAlign"]
p ti.type_data #=> #<Phi::TypeData:0xfab738>
require "phi"
p ti = Phi::TYPE_INFO["TAlign"] #=> #<Phi::TypeInfo: kind=TK_ENUMERATION name="TAlign">
p td = ti.type_data   #=> #<Phi::TypeData:0xfab738>

p td.base_type   #=> #<Phi::TypeInfo: kind=TK_ENUMERATION name="TAlign">
p td.class_type  #=> nil
p td.comp_type   #=> nil
p td.count       #=> nil
p td.float_type  #=> nil
p td.items       #=> nil
p td.method_kind #=> nil
p td.max_value   #=> 6
p td.min_value   #=> 0
p td.ord_type    #=> 1
p td.parent_info #=> nil
p td.unit_name   #=> nil

require "phi"
require "methods_for_wiki"
puts Phi::TypeData.methods_for_wiki

base_type

class_type

comp_type

count

float_type

items

max_length

max_value

method_kind

min_value

ord_type

parent_info

unit_name

Last modified:2004/12/07 13:16:37
Keyword(s):
References:[Phi-Classes] [Phi-Constants] [Phi::TypeData] [Phi::TypeInfo]