Objetos de variables de contexto
********************************

Nota:

  Distinto en la versión 3.7.1: En Python 3.7.1, las firmas de todas
  las variables de contexto C APIs fueron **cambiadas** para usar
  punteros "PyObject" en lugar de "PyContext", "PyContextVar", y
  "PyContextToken", por ejemplo:

     // in 3.7.0:
     PyContext *PyContext_New(void);

     // in 3.7.1+:
     PyObject *PyContext_New(void);

  Ver bpo-34762 para más detalles.

Nuevo en la versión 3.7.

Esta sección detalla la API pública de C para el módulo "contextvars".

PyContext

   La estructura C utilizada para representar un objeto
   "contextvars.Context".

PyContextVar

   La estructura C utilizada para representar un objeto
   "contextvars.ContextVar".

PyContextToken

   La estructura C solía representar un objeto "contextvars.Token".

PyTypeObject PyContext_Type

   El objeto de tipo que representa el tipo *context*.

PyTypeObject PyContextVar_Type

   El objeto tipo que representa el tipo *variable de contexto*.

PyTypeObject PyContextToken_Type

   El tipo objeto que representa el tipo *token de variable de
   contexto*.

Macros de verificación de tipo:

int PyContext_CheckExact(PyObject *o)

   Retorna verdadero si *o* es de tipo "PyContext_Type". *o* no debe
   ser "NULL". Esta función siempre tiene éxito.

int PyContextVar_CheckExact(PyObject *o)

   Retorna verdadero si *o* es de tipo "PyContextVar_Type". *o* no
   debe ser "NULL". Esta función siempre tiene éxito.

int PyContextToken_CheckExact(PyObject *o)

   Retorna verdadero si *o* es de tipo "PyContextToken_Type". *o* no
   debe ser "NULL". Esta función siempre tiene éxito.

Funciones de gestión de objetos de contexto:

PyObject *PyContext_New(void)
    *Return value: New reference.*

   Crea un nuevo objeto de contexto vacío. Retorna "NULL" si se ha
   producido un error.

PyObject *PyContext_Copy(PyObject *ctx)
    *Return value: New reference.*

   Crea una copia superficial del objeto de contexto *ctx* pasado.
   Retorna "NULL" si se ha producido un error.

PyObject *PyContext_CopyCurrent(void)
    *Return value: New reference.*

   Crea una copia superficial del contexto actual del hilo. Retorna
   "NULL" si se ha producido un error.

int PyContext_Enter(PyObject *ctx)

   Establece *ctx* como el contexto actual para el hilo actual.
   Retorna "0" en caso de éxito y "-1" en caso de error.

int PyContext_Exit(PyObject *ctx)

   Desactiva el contexto *ctx* y restaura el contexto anterior como el
   contexto actual para el hilo actual. Retorna "0" en caso de éxito y
   "-1" en caso de error.

int PyContext_ClearFreeList()

   Borra la lista libre de variables de contexto. Retorna el número
   total de artículos liberados. Esta función siempre tiene éxito.

Funciones variables de contexto:

PyObject *PyContextVar_New(const char *name, PyObject *def)
    *Return value: New reference.*

   Create a new "ContextVar" object.  The *name* parameter is used for
   introspection and debug purposes.  The *def* parameter specifies a
   default value for the context variable, or "NULL" for no default.
   If an error has occurred, this function returns "NULL".

int PyContextVar_Get(PyObject *var, PyObject *default_value, PyObject **value)

   Obtiene el valor de una variable de contexto. Retorna "-1" si se
   produjo un error durante la búsqueda y "0" si no se produjo ningún
   error, se haya encontrado o no un valor.

   Si se encontró la variable de contexto, *value* será un puntero a
   ella. Si la variable de contexto *not* se encontró, *value*
   apuntará a:

   * *default_value*, si no es "NULL";

   * el valor predeterminado de *var*, si no es "NULL";

   * "NULL"

   Except for "NULL", the function returns a new reference.

PyObject *PyContextVar_Set(PyObject *var, PyObject *value)
    *Return value: New reference.*

   Set the value of *var* to *value* in the current context.  Returns
   a new token object for this change, or "NULL" if an error has
   occurred.

int PyContextVar_Reset(PyObject *var, PyObject *token)

   Restablece el estado de la variable de contexto *var* a la que
   estaba antes "PyContextVar_Set()" que retornó el *token* fue
   llamado. Esta función retorna "0" en caso de éxito y "-1" en caso
   de error.
