Ruby の拡張機能を C で書くときに、正しい命名規則に従うことに興味があります。具体的には_p
、関数名に述語を追加したり、変数の前にm
for module やc
for class などを付けたりすることを参照しています。
たとえば、C で次のような述語メソッドを定義する場合は_p
、メソッドを定義する関数のサフィックスとして を使用する必要があります。
class MyClass
def awesome?
true
end
end
C:
static VALUE my_extension_my_class_awesome_p(VALUE self) {
return Qtrue;
}
void Init_my_extension(void) {
VALUE cMyClass = rb_define_class("MyClass", rb_cObject);
rb_define_method(cMyClass,
"awesome?",
my_extension_my_class_awesome_p,
0);
}
Ruby のコア ソース コードを調べてみると、 _p
(predicate) と_m
のサフィックスがあり、意味を推測できません。他にもたくさんの慣習があると思います。
アンダースコアを使用する場合やキャメルケースを使用する場合など、追加の命名規則があります。かなりの量の C コードを含む拡張機能を作成する場合、従うべきガイドラインがなければ混乱を招きやすいでしょう。
どこかに決定的なリストはありますか?Ruby C 拡張機能のトピックをグーグル検索しても、有用な結果が得られることはありません。純粋な Ruby 構文と、正しく名前が付けられた同等の C 関数を示す簡単な例はありますか?