今日は、初めまして。 北市真と言います。 最近、MemoryView機能に関心があります。 rb_memory_view_get関数にはフラグを渡すことができて、 その一つにRUBY_MEMORY_VIEW_MULTI_DIMENSIONALという物があります。 これの意味が分からないのですが、何か知っている方はいらっしゃいますか? 一次元配列しかエクスポートできないクラスで、 RUBY_MEMORY_VIEW_MULTI_DIMENSIONALを指定された場合は get_funcからfalseを返すべきなのか、 shapeさえ設定すればtrueを返していいのかが分かりません。 Pythonのバッファプロトコルを参考にデザインされているということで、 以下のドキュメントも読みました: https://docs.python.org/ja/3.14/c-api/buffer.html PyBUF_NDというフラグが対応するフラグだと思います。 これ自体もはっきり意味が書かれていなくてドキュメント内のテーブルなどからの推測ですが shapeを求めるフラグに見えます。 Pythonの方はND=N-Dimensionalということで、N=1でもいいのかなという気はしますが、 MULTI_DIMENSIONALと言われると2以上じゃないといけない気がしてしまいます。 memory_view.hやmemory_view.cを読んでも分かりませんでした。 ここ二、三年、オーディオデータを拡張ライブラリー間で受け渡しするコードを書いていて、 MemoryViewを使うようになりました。 そのためにMemoryView(実際はFiddle::MemoryView)の薄いラッパーも書いているのですが、 ( https://gitlab.com/KitaitiMakoto/ndav ) そろそろフラグのことを真面目に実装しようと思ったところで、このフラグの扱いに困ったのでした。 どなたか分かったら教えてもらえると嬉しいです。 宜しくお願いします。 オーディオデータを扱ってみると、この機能はちゃんと速いので嬉しいですね。