ml.ruby-lang.org
Sign In
Sign Up
Manage this list
Sign In
Sign Up
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
ruby-list
Thread
Start a new thread
Download
Threads by
month
----- 2026 -----
August
July
June
May
April
March
February
January
----- 2025 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2024 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2023 -----
December
November
October
September
August
July
June
May
April
March
February
January
----- 2022 -----
December
November
ruby-list@ml.ruby-lang.org
August 2026
1 participants
1 discussions
[ruby-list:51039] MemoryViewのMULTI_DIMENSIONALの意味
by kitaitimakoto@gmail.com
20 Aug '26
20 Aug '26
今日は、初めまして。 北市真と言います。 最近、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
) そろそろフラグのことを真面目に実装しようと思ったところで、このフラグの扱いに困ったのでした。 どなたか分かったら教えてもらえると嬉しいです。 宜しくお願いします。 オーディオデータを扱ってみると、この機能はちゃんと速いので嬉しいですね。
1
0
0
0
Results per page:
10
25
50
100
200