17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

}<br />

else<br />

resultat = b;<br />

Bonnes pratiques et optimisation du code<br />

CHAPITRE 13<br />

// construction d'un objet de type int renvoyé à Python<br />

return Py_BuildValue("i", resultat);<br />

L’objet pointé par args correspond aux paramètres arbitraires passés à la fonction au<br />

moment de son appel et contient un tableau de valeurs. Pour récupérer ces valeurs<br />

côté C, il est nécessaire d’employer la fonction PyArg_ParseTuple qui alimente des<br />

variables en fonction de args et d’un format de lecture. Chaque référence de variable<br />

cible est fournie en paramètre supplémentaire au moment de l’appel.<br />

Le formatage est défini par une chaîne de caractères dont chaque élément décrit le<br />

type de transformation à opérer, d’un type Python à un type C. Les éléments peuvent<br />

prendre les valeurs décrites dans le tableau suivant (liste non exhaustive).<br />

Tableau 13–1 Formatage des paramètres<br />

Format Type Python<br />

en entrée<br />

Type C en sortie Commentaires<br />

s string ou unicode const char* La chaîne C est terminée par NULL.<br />

s# string ou unicode const char*, int La chaîne C n’est pas terminée par NULL. Le<br />

deuxième élément contient la longueur de la<br />

chaîne.<br />

z string ou unicode<br />

ou None<br />

z# string ou unicode<br />

ou None<br />

const char* Comme s mais si None est passé renvoie un<br />

pointeur sur NULL<br />

const char* Comme s# mais si None est passé renvoie un<br />

pointeur sur NULL<br />

u unicode const char* Comme s mais exclusivement pour les objets<br />

unicode.<br />

u# unicode const char*, int Comme s# mais exclusivement pour les objets<br />

unicode.<br />

b integer char L’entier Python est converti en tiny int.<br />

B integer unsigned char L’entier Python est converti en tiny int, sans<br />

vérification de dépassement. La valeur passe en<br />

négatif dans ce cas.<br />

h integer shortint RAS<br />

H integer unsigned short int Comme h mais sans contrôle de dépassement.<br />

i integer int RAS<br />

I integer unsignedint RAS<br />

l integer longint RAS<br />

471

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!