Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > rdoc/parsers/parse_cライブラリ
C 言語で記述されたソースコードから組み込みクラス/モジュールのドキュメン トを解析するためのサブライブラリです。
C 言語で記述された拡張ライブラリなどを解析するのに使用します。 rb_define_class や rb_define_method などで定義されたものに 対応する C 言語の関数のコメントを解析します。
例: Array#flatten の場合。rb_ary_flatten のコメントが解析されます。
/* * Returns a new array that is a one-dimensional flattening of this * array (recursively). That is, for every element that is an array, * extract its elements into the new array. * * s = [ 1, 2, 3 ] #=> [1, 2, 3] * t = [ 4, 5, 6, [7, 8] ] #=> [4, 5, 6, [7, 8]] * a = [ s, t, 9, 10 ] #=> [[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10] * a.flatten #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] */ static VALUE rb_ary_flatten(ary) VALUE ary; { ary = rb_obj_dup(ary); rb_ary_flatten_bang(ary); return ary; } ... void Init_Array() { ... rb_define_method(rb_cArray, "flatten", rb_ary_flatten, 0);
上記の例の場合、rb_ary_flatten 関数と Init_Array 関数は同じファイルに記 述されている必要があります。
また、Ruby のソースコードとは別にコメントには特別な命令を指定する事がで きます。
記述する内容を name で指定した Ruby のクラスのものに指定します。同じ .c ファイルに複数のクラス定義がある場合などのように、Init_xxx 関数の xxx の部分がクラス名と同一ではない場合に使用します。
記述する内容を name で指定した Ruby のメソッドのものに指定します。 RDoc が対応するメソッドを見つけられなかった場合に使用します。
指定した次の行から次の空行までをメソッド呼び出し列と解釈します。
また、RDoc は rb_define_method などの定義と C 言語の関数の実装が同じファ イルにある事を前提としています。そうでない場合は以下のような指定を行います。
rb_define_method(....); // in ファイル名
例:
/* * Document-class: MyClass * * Encapsulate the writing and reading of the configuration * file. ... */ /* * Document-method: read_value * * call-seq: * cfg.read_value(key) -> value * cfg.read_value(key} { |key| } -> value * * Return the value corresponding to +key+ from the configuration. * In the second form, if the key isn't found, invoke the * block and return its value. */
RDoc::C_Parser | C 言語で記述されたソースコードから組み込みクラス/モジュールのドキュメン トを解析するためのクラスです。 |
e2mmap | 例外クラスに特定のエラーメッセージ用フォーマットを関連づけるためのライブラリです。 |
find | ディレクトリ配下のファイルを探索するためのモジュールです。 |
ftools | ファイル操作のためのライブラリです。 |
getoptlong | getoptlong は、GNU の getopt_long() とまったく同じ方式でコマンド 行オプションの解析を行う Ruby のライブラリです。 |
irb/notifier | ライブラリ内部で使用します。 |
irb/output-method | irb が出力を扱うためのサブライブラリです。 |
irb/slex | Ruby のソースコードを字句解析するためのサブライブラリです。 irb/ruby-lex から使用されます。 |
rdoc/code_objects | Ruby のソースコード中にあるクラス、モジュール、メソッドなどの構成要素を 表現するためのサブライブラリです。 |
rdoc/diagram | モジュールやクラスの関係を描く図を作成するためのサブライブラリです。 |
rdoc/dot/dot | モジュールやクラスの関係を描く図を作成するためのサブライブラリです。 |
rdoc/options | rdoc コマンドのオプションを解析するためのサブライブラリです。 |
rdoc/parsers/parserfactory | rdoc で解析できるファイルの種類を追加するためのサブライブラリです。 |
rdoc/parsers/parse_c | C 言語で記述されたソースコードから組み込みクラス/モジュールのドキュメン トを解析するためのサブライブラリです。 |
rdoc/parsers/parse_f95 | Fortran95 のソースコードを解析するためのサブライブラリです。 |
rdoc/parsers/parse_rb | Ruby のソースコードを解析するためのサブライブラリです。 |
rdoc/parsers/parse_simple | ソースコード以外のファイルを解析するためのサブライブラリです。 |
rdoc/rdoc | rdoc コマンドのためのライブラリです。 |
rdoc/tokenstream | トークンを管理するためのサブライブラリです。 |
singleton | Singleton パターンを扱うためのライブラリです。 |
time | 組み込みの Time クラスを拡張します。 日時を表す文字列をパースして Time オブジェクトに変換したり、 逆に Time オブジェクトを RFC などで定められた文字列に 変換する機能を提供します。 |