ruby-c-extension

    6

    1答えて

    私はRuby 1.9のC拡張を書いていると私はルビーで次の操作を実行したい:、 notifier = Notifier.new notifier.on 'click' do puts "clicked!" end さて、これで問題はC法に、私は唯一のブロックを「受け取る」ということで、私が知る限り、それはパラメータではない:私はちょうどrb_yieldと呼ぶことができる。 Rub

    2

    1答えて

    私は、オブジェクトの配列を表すvoid*配列を含む行列型を持っています(すべてのC整数、すべての浮動小数点数、2倍数、さまざまな構造体、場合によってはすべてRuby VALUE s)。 VALUEの行列を作成しようとするまで、メモリの割り当てとガベージコレクションが正常に機能しているようです。 - それ以外の場合は、NULLはマーク機能のためにData_Wrap_Structに渡される、それは実際

    5

    2答えて

    私は、C拡張を含む宝石を書いています。通常、私は宝石を書くとき、TDDのプロセスに従います。失敗した仕様を書いて、そのコードが通過するまで作業します。 "ext/mygem /mygem.c "とgemspecの" extensions "に設定されている有効なextconf.rbを使用して、スペックを実行してもCの拡張モジュールをロードするにはどうしたらいいですか?私はCコードを変更するときに、

    16

    2答えて

    私は、クラスを生成するルビのC拡張を記述しようとしています。私はクラスにいくつかのデフォルトの引数を定義する方法を探しています。例えば、私はルビーで、このクラスdeclerationを持っている場合:は class MyClass def initialize(name, age=10) @name = name @age = age end end

    2

    2答えて

    私はRuby C Extensionを書いています。私はWindowsとOSXでコンパイルします。 私が解決できなかったことは、makefileと生成された残りのファイルが置かれる場所の制御です。 私のextconf.rbファイルには、OSに応じてmakefileを準備するための条件文があります。そのため、私は両方のファイルを使用します。 私はOSXの下でコンパイルすると、すべてが分離された状態に

    8

    1答えて

    関数Data_wrap_structを使用してRuby拡張とImを記述しています。 Rubyのマークアンドスイープガベージコレクションプロセスに参加するには、自分の構造を解放するルーチンと、自分の構造から他の構造への参照をマークするルーチンを定義する必要があります。私は古典的なfree関数をメモリを解放するために渡しますが、マーク関数の使用方法はわかりません。 私の構造体は、私は私がどのようにマー

    2

    1答えて

    Ruby Cエクステンションのクラスcostructorで奇妙な動作が見られました。 は、例を参照してください:我々は、Cの拡張とFooから継承するクラスBarあるクラスFooを持っている: extconf.rbは # extconf.rb require 'mkmf' create_makefile('foo/foo') foo.cの // foo.c #include "ruby.h

    3

    2答えて

    RubyでインラインCを使用して再帰的な関数を書き直そうとしています。私は次のコードを使用してインラインCでこれを模倣しようとしています def each_entity(*types) # Do something and recurse. end :それはRubyで次のようになります。すなわち機能は、引数の未定義の数を受け入れる VALUE each_entity_c(

    1

    2答えて

    Ruby Cエクステンションとして単純なウィンドウライブラリを実装しています。 Windowsにはネイティブのイベントループに入るhandle_events!メソッドがあります。 問題は、ウィンドウごとに1つのイベントループとメソッドブロックが必要なことです。私はメソッドがすぐに戻り、ループを別のスレッドで実行させたいと思います。これを達成する最良の方法は何でしょうか? rb_thread_cal

    0

    1答えて

    私は長い間Pythonを使用してきましたが、Rubyを使い始めたばかりですが、2つのモジュールの違いを見ています特にC-APIを通して見たときには、本当に混乱します。私はインポートし、そう require "pymodule" PyModule.Py_Initialize() PyModule.PyRun_SimpleString("print 'hellooo'") 私はPythonのモ