]> granicus.if.org Git - python/commitdiff
Add documentation for the PyCell* APIs.
authorFred Drake <fdrake@acm.org>
Mon, 26 Nov 2001 21:29:17 +0000 (21:29 +0000)
committerFred Drake <fdrake@acm.org>
Mon, 26 Nov 2001 21:29:17 +0000 (21:29 +0000)
Doc/api/concrete.tex
Doc/api/refcounts.dat

index 64653a9f56f83d901a99c1ebfaf8158df14897d3..5afe6b89bb437267c152e3cb6f73b7c93c50770e 100644 (file)
@@ -2340,3 +2340,53 @@ information on using these objects.
   Returns the description \ctype{void *} that the \ctype{PyCObject}
   \var{self} was created with.
 \end{cfuncdesc}
+
+
+\subsection{Cell Objects \label{cell-objects}}
+
+``Cell'' objects are used to implement variables referenced by
+multiple scopes.  For each such variable, a cell object is created to
+store the value; the local variables of each stack frame that
+references the value contains a reference to the cells from outer
+scopes which also use that variable.  When the value is accessed, the
+value contained in the cell is used instead of the cell object
+itself.  This de-referencing of the cell object requires support from
+the generated byte-code; these are not automatically de-referenced
+when accessed.  Cell objects are not likely to be useful elsewhere.
+
+\begin{cvardesc}{PyTypeObject}{PyCell_Type}
+  The type object corresponding to cell objects
+\end{cvardesc}
+
+\begin{cfuncdesc}{int}{PyCell_Check}{ob}
+  Return true if \var{ob} is a cell object; \var{ob} must not be
+  \NULL.
+\end{cfuncdesc}
+
+\begin{cfuncdesc}{PyObject*}{PyCell_New}{PyObject *ob}
+  Create and return a new cell object containing the value \var{ob}.
+  The parameter may be \NULL.
+\end{cfuncdesc}
+
+\begin{cfuncdesc}{PyObject*}{PyCell_Get}{PyObject *cell}
+  Return the contents of the cell \var{cell}.
+\end{cfuncdesc}
+
+\begin{cfuncdesc}{PyObject*}{PyCell_GET}{PyObject *cell}
+  Return the contents of the cell \var{cell}, but without checking
+  that \var{cell} is non-\NULL{} and a call object.
+\end{cfuncdesc}
+
+\begin{cfuncdesc}{int}{PyCell_Set}{PyObject *cell, PyObject *value}
+  Set the contents of the cell object \var{cell} to \var{value}.  This
+  releases the reference to any current content of the cell.
+  \var{value} may be \NULL.  \var{cell} must be non-\NULL; if it is
+  not a cell object, \code{-1} will be returned.  On success, \code{0}
+  will be returned.
+\end{cfuncdesc}
+
+\begin{cfuncdesc}{void}{PyCell_SET}{PyObject *cell, PyObject *value}
+  Sets the value of the cell object \var{cell} to \var{value}.  No
+  reference counts are adjusted, and no checks are made for safety;
+  \var{cell} must be non-\NULL{} and must be a cell object.
+\end{cfuncdesc}
index 1dbbeebb4073644eb99c4a8b9e2519abe2d53a7a..d10e909cf29ae48693d9a54c4929927a5b7ccdbe 100644 (file)
@@ -67,6 +67,23 @@ PyCObject_FromVoidPtrAndDesc:void(*)(void*,void*):destr::
 PyCObject_GetDesc:void*:::
 PyCObject_GetDesc:PyObject*:self:0:
 
+PyCell_New:PyObject*::+1:
+PyCell_New:PyObject*:ob:0:
+
+PyCell_GET:PyObject*::0:
+PyCell_GET:PyObject*:ob:0:
+
+PyCell_Get:PyObject*::+1:
+PyCell_Get:PyObject*:cell:0:
+
+PyCell_SET:void:::
+PyCell_SET:PyObject*:cell:0:
+PyCell_SET:PyObject*:value:0:
+
+PyCell_Set:int:::
+PyCell_Set:PyObject*:cell:0:
+PyCell_Set:PyObject*:value:0:
+
 PyCallIter_New:PyObject*::+1:
 PyCallIter_New:PyObject*:callable::
 PyCallIter_New:PyObject*:sentinel::