Reference Counting
******************

Les macros dans cette section permettent de gérer le compteur de
références des objets Python.

void Py_INCREF(PyObject *o)

   Increment the reference count for object *o*.  The object must not
   be "NULL"; if you aren't sure that it isn't "NULL", use
   "Py_XINCREF()".

void Py_XINCREF(PyObject *o)

   Incrémente le compteur de références de l'objet *o*. La macro n'a
   pas d'effet si l'objet est "NULL".

void Py_DECREF(PyObject *o)

   Decrement the reference count for object *o*.  The object must not
   be "NULL"; if you aren't sure that it isn't "NULL", use
   "Py_XDECREF()".  If the reference count reaches zero, the object's
   type's deallocation function (which must not be "NULL") is invoked.

   Avertissement:

     La fonction de dés-allocation peut invoquer du code Python
     arbitraire (par exemple quand une instance d'une classe avec une
     méthode "__del__()" est supprimée). Le code exécuté a accès à
     toutes les variables Python globales mais les exceptions lors de
     l'exécution de ce code ne sont pas propagées. Tous les objets qui
     peuvent être atteints à partir d'une variable globale doivent
     être dans un état cohérent avant d'appeler "Py_DECREF()". Par
     exemple le code pour supprimer un élément d'une liste doit copier
     une référence à l'objet dans une variable temporaire, mettre à
     jour la liste, et enfin appeler "Py_DECREF()" avec la variable
     temporaire.

void Py_XDECREF(PyObject *o)

   Décrémente le compteur de références de l'objet *o*. L'objet peut
   être "NULL", dans ce cas la macro n'a pas d'effet. Dans le cas
   contraire le comportement est identique à "Py_DECREF()" et les
   mêmes avertissements sont de rigueur.

void Py_CLEAR(PyObject *o)

   Décrémente le compteur de références de l'objet *o*. L'objet peut
   être "NULL", dans ce cas la macro n'a pas d'effet. Dans le cas
   contraire le comportement est identique à "Py_DECREF()", puis
   l'argument est mis à "NULL". L'avertissement au sujet de l'objet
   passé en argument à "Py_DECREF()" ne s'applique pas car la macro
   utilise une variable temporaire et met l'objet à "NULL" avant de
   décrémenter le compteur de références.

   Il est recommandé d'utiliser cette macro lorsqu'on décrémente le
   compteur de référence d'un objet qui peut être parcouru par le
   ramasse-miette.

The following functions are for runtime dynamic embedding of Python:
"Py_IncRef(PyObject *o)", "Py_DecRef(PyObject *o)". They are simply
exported function versions of "Py_XINCREF()" and "Py_XDECREF()",
respectively.

Les fonctions ou macros suivantes doivent être uniquement utilisées au
sein de l'interpréteur et ne font pas partie de l'API publique :
"_Py_Dealloc()", "_Py_ForgetReference()", "_Py_NewReference()", ainsi
que la variable globale "_Py_RefTotal".
