[Pythonjp-checkins] [python-doc-ja] push by songo****@gmail***** - Update 2.7.2: c-api/buffer on 2011-11-10 01:52 GMT

Back to archive index

pytho****@googl***** pytho****@googl*****
2011年 11月 10日 (木) 10:53:18 JST


Revision: b3852ab144de
Author:   Naoki INADA  <inada****@klab*****>
Date:     Wed Nov  9 17:52:41 2011
Log:      Update 2.7.2: c-api/buffer
http://code.google.com/p/python-doc-ja/source/detail?r=b3852ab144de

Modified:
  /c-api/buffer.rst

=======================================
--- /c-api/buffer.rst	Wed May 18 08:28:21 2011
+++ /c-api/buffer.rst	Wed Nov  9 17:52:41 2011
@@ -2,10 +2,11 @@

  .. _bufferobjects:

-バッファーオブジェクト
-----------------------
+buffer オブジェクトと memoryview オブジェクト
+----------------------------------------------

  .. sectionauthor:: Greg Stein <gstei****@lyra*****>
+.. sectionauthor:: Benjamin Peterson


  .. index::
@@ -235,25 +236,9 @@
     *view* バッファを開放します。
     バッファが利用されなくなったときに、そのメモリを開放できるようにこの関数 
を呼び出すべきです。

-.. todo::
-   以下の2つの関数は実装が存在しない。問い合わせ中。
-
-   .. c:function:: Py_ssize_t PyBuffer_SizeFromFormat(const char *)
-
-      :c:data:`~Py_buffer.itemsize` の値を :c:data:`~PyBuffer.format` から 
計算して返します。
-
-   .. c:function:: int PyObject_CopyToObject(PyObject *obj, void *buf,  
Py_ssize_t len, char fortran)
-
-      Copy *len* bytes of data pointed to by the contiguous chunk of memory
-      pointed to by *buf* into the buffer exported by obj.  The buffer  
must of
-      course be writable.  Return 0 on success and return -1 and raise an  
error
-      on failure.  If the object does not have a writable buffer, then an  
error
-      is raised.  If *fortran* is ``'F'``, then if the object is
-      multi-dimensional, then the data will be copied into the array in
-      Fortran-style (first dimension varies the fastest).  If *fortran* is
-      ``'C'``, then the data will be copied into the array in C-style (last
-      dimension varies the fastest).  If *fortran* is ``'A'``, then it  
does not
-      matter and the copy will be made in whatever way is more efficient.
+.. c:function:: Py_ssize_t PyBuffer_SizeFromFormat(const char *)
+
+   :c:data:`~Py_buffer.itemsize` の値を :c:data:`~PyBuffer.format` から計算 
して返します。


  .. c:function:: int PyBuffer_IsContiguous(Py_buffer *view, char fortran)
@@ -267,7 +252,7 @@
  .. c:function:: void PyBuffer_FillContiguousStrides(int ndim, Py_ssize_t  
*shape, Py_ssize_t *strides, Py_ssize_t itemsize, char fortran)

     *strides* 配列を、 *itemsize* の大きさの要素がバイト単位で連続した、
-   *shape* の形をした (*fortran* が ``'C'`` なら C-style, *fortran* が  
``'F'``
+   *shape* の形をした (*fortran* が ``'C'`` なら C-style, ``'F'``
     なら Fortran-style の) 多次元配列として埋める。


@@ -278,12 +263,59 @@
     成功したら 0 を、エラー時には (例外を発生させつつ) -1 を返す。


+.. MemoryView objects
+
+memoryview オブジェクト
+========================
+
+.. versionadded:: 2.7
+
+:class:`memoryview` オブジェクトは、新しい、他のオブジェクトと同じように扱 
える
+Python オブジェクトの形をした C言語レベルのバッファへのインタフェースです。
+
+.. cfunction:: PyObject *PyMemoryView_FromObject(PyObject *obj)
+
+   新しいバッファインタフェースを定義しているオブジェクトから memoryview
+   オブジェクトを作ります。
+
+
+.. cfunction:: PyObject *PyMemoryView_FromBuffer(Py_buffer *view)
+
+   buffer-info 構造体 *view* をラップする memoryview オブジェクトを作りま 
す。
+   作られた memoryview オブジェクトはバッファを所有することになるので、
+   *view* を開放してはいけません。このバッファは memoryview オブジェクトが 
削除されるときに
+   解放されます。
+
+
+.. cfunction:: PyObject *PyMemoryView_GetContiguous(PyObject *obj, int  
buffertype, char order)
+
+   buffer インタフェースを定義しているオブジェクトから ('C' か 'F'ortran  
の *order* で)
+   連続したメモリチャンクへの memoryview オブジェクトを作ります。
+   メモリが連続している場合、 memoryview オブジェクトは元のメモリを参照しま 
す。
+   それ以外の場合、メモリはコピーされて、 memoryview オブジェクトは新しい  
bytes
+   オブジェクトを参照します。
+
+
+.. cfunction:: int PyMemoryView_Check(PyObject *obj)
+
+   *obj* が memoryview オブジェクトの場合に真を返します。
+   現在のところ、 :class:`memoryview` のサブクラスの作成は許可されていませ 
ん。
+
+
+.. cfunction:: Py_buffer *PyMemoryView_GET_BUFFER(PyObject *obj)
+
+   与えられたオブジェクトにラップされた buffer-info 構造体へのポインタを返 
します。
+   オブジェクトは memoryview インスタンスで **なければなりません** 。
+   このマクロはオブジェクトの型をチェックしないので、呼び出し側で保証しなけ 
れば
+   クラッシュする可能性があります。
+
+
  旧スタイルバッファオブジェクト
  =================================

  .. index:: single: PyBufferProcs

-バッファインタフェースに関するより詳しい情報は、 "バッファオブジェクト構造 
体" 節 ( :ref:`buffer-structs` 節) の、
+古いバッファインタフェースに関するより詳しい情報は、 "バッファオブジェクト 
構造体" 節 ( :ref:`buffer-structs` 節) の、
  :c:type:`PyBufferProcs` の説明のところにあります。

  "バッファオブジェクト" はヘッダファイル :file:`bufferobject.h`  の中で定義 
されています (このファイルは




Pythonjp-checkins メーリングリストの案内
Back to archive index