タプルオブジェクト (tuple object)

PyTupleObject

この PyObject のサブタイプは Python のタプルオブジェクトを表現します。

PyTypeObject PyTuple_Type

この PyTypeObject のインスタンスは Python のタプル型を表現します; Python レイヤにおける tuple と同じオブジェクトです。

int PyTuple_Check(PyObject *p)

p がタプルオブジェクトか、タプル型のサブタイプのインスタンスである場合に真を返します。

int PyTuple_CheckExact(PyObject *p)

p がタプルオブジェクトで、かつタプル型のサブタイプのインスタンスでない場合に真を返します。

PyObject* PyTuple_New(Py_ssize_t len)
Return value: New reference.

Return a new tuple object of size len, or NULL on failure.

PyObject* PyTuple_Pack(Py_ssize_t n, ...)
Return value: New reference.

Return a new tuple object of size n, or NULL on failure. The tuple values are initialized to the subsequent n C arguments pointing to Python objects. PyTuple_Pack(2, a, b) is equivalent to Py_BuildValue("(OO)", a, b).

Py_ssize_t PyTuple_Size(PyObject *p)

タプルオブジェクトへのポインタを引数にとり、そのタプルのサイズを返します。

Py_ssize_t PyTuple_GET_SIZE(PyObject *p)

Return the size of the tuple p, which must be non-NULL and point to a tuple; no error checking is performed.

PyObject* PyTuple_GetItem(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference.

Return the object at position pos in the tuple pointed to by p. If pos is out of bounds, return NULL and set an IndexError exception.

PyObject* PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference.

PyTuple_GetItem() に似ていますが、引数に対するエラーチェックを行いません。

PyObject* PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
Return value: New reference.

Return the slice of the tuple pointed to by p between low and high, or NULL on failure. This is the equivalent of the Python expression p[low:high]. Indexing from the end of the list is not supported.

int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)

Insert a reference to object o at position pos of the tuple pointed to by p. Return 0 on success. If pos is out of bounds, return -1 and set an IndexError exception.

注釈

This function "steals" a reference to o and discards a reference to an item already in the tuple at the affected position.

void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)

PyTuple_SetItem() に似ていますが、エラーチェックを行わず、新たなタプルに値を入れるとき 以外には使ってはなりません

注釈

This macro "steals" a reference to o, and, unlike PyTuple_SetItem(), does not discard a reference to any item that is being replaced; any reference in the tuple at position pos will be leaked.

int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)

Can be used to resize a tuple. newsize will be the new length of the tuple. Because tuples are supposed to be immutable, this should only be used if there is only one reference to the object. Do not use this if the tuple may already be known to some other part of the code. The tuple will always grow or shrink at the end. Think of this as destroying the old tuple and creating a new one, only more efficiently. Returns 0 on success. Client code should never assume that the resulting value of *p will be the same as before calling this function. If the object referenced by *p is replaced, the original *p is destroyed. On failure, returns -1 and sets *p to NULL, and raises MemoryError or SystemError.

int PyTuple_ClearFreeList()

free list をクリアします。解放された要素数を返します。

Struct Sequence オブジェクト

struct sequence オブジェクトは namedtuple() オブジェクトと等価なC オブジェクトです。 つまり、その要素に属性を通してアクセスすることができるシーケンスです。 struct sequence を生成するには、まず特定のstruct sequence 型を生成しなければなりません。

PyTypeObject* PyStructSequence_NewType(PyStructSequence_Desc *desc)
Return value: New reference.

後述の desc 中のデータから新しい struct sequence 型を生成します。返される型のインスタンスは PyStructSequence_New() で生成できます。

void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)

struct sequence 型である typedesc をもとにその場で初期化します。

int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)

PyStructSequence_InitType と同じですが、成功した場合には 0 を、失敗した場合には -1 を返します。

バージョン 3.4 で追加.

PyStructSequence_Desc

生成するstruct sequence 型のメタデータを保持します。

フィールド

C の型

意味

name

const char *

生成するstruct sequence 型の名前

doc

const char *

pointer to docstring for the type or NULL to omit

fields

PyStructSequence_Field *

pointer to NULL-terminated array with field names of the new type

n_in_sequence

int

Python 側で可視となるフィールドの数 (もしタプルとして使用する場合)

PyStructSequence_Field

struct sequenceのフィールドについて記述します。struct sequence はタプルをモデルにしているため、全てのフィールドは PyObject* として型付けされます。 PyStructSequence_Descfields 配列の添え字によって struct sequenceのどのフィールドについて記載しているかが決まります。

フィールド

C の型

意味

name

const char *

name for the field or NULL to end the list of named fields, set to PyStructSequence_UnnamedField to leave unnamed

doc

const char *

field docstring or NULL to omit

char* PyStructSequence_UnnamedField

フィールド名を名前がないままするための特殊な値。

PyObject* PyStructSequence_New(PyTypeObject *type)
Return value: New reference.

type のインスタンスを生成します。 typePyStructSequence_NewType() によって事前に生成していなければなりません。

PyObject* PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference.

p の指すstruct sequence内の、位置 pos にあるオブジェクトを返します。境界チェックを行いません。

PyObject* PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference.

PyStructSequence_GetItem() と同等のマクロです。

void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)

struct sequence ppos の位置にあるフィールドに値 o を設定します。PyTuple_SET_ITEM() のように、生成したてのインスタンスに対してのみ使用すべきです。

注釈

この関数は o への参照を "盗み取り" ます。

void PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)

PyStructSequence_SetItem() と同等のマクロ。

注釈

この関数は o への参照を "盗み取り" ます。