<div class="gmail_quote">Il giorno 12 gennaio 2010 04.32, Daniele Varrazzo <span dir="ltr">&lt;<a href="mailto:piro@develer.com" target="_blank">piro@develer.com</a>&gt;</span> ha scritto:<div class="im"><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Oddio... un pelino masochistico! Non è meglio lasciar fare il refcount a<br>
qualcosa tipo pyrex? </blockquote></div><div>ma
LOL. Beh il mio intento è anche quello di studiarmi le API e credo che
usandole direttamente nel C sia il modo migliore, anche perchè ho in
mente un paio di moduli in cui dovrei usare delle librerie in C,
diciamo che le scuse per questa scelta non mancano :p certo che poi la
soluzione da te proposta è migliore quando è, ad esempio, per lavoro,
ma non è questo il mio caso -non ancora-.  <br>
</div><div class="im"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">La documentazione di PyModule_AddObject sembra suggerire che devi<br>

passargli il risultato della funzione Py_InitModule [1] o analoghe. Questo<br>
va fatto nella funzione di inizializzazione del modulo (initpymod nel tuo<br>
caso).<br></blockquote></div><div>Ah
ecco, io pensavo dovessi proprio usare PyModule_New, ho invece fatto
come dici tu, salvando il riferimento della Py_InitModule() e provando
con quello e funziona tutto alla perfezione :) <br>
</div><div class="im"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Io comunque non ho mai usato PyModule_AddObject: per un esempio puoi<br>
vedere questo semplice (2 funzioni e una costante stringa) modulo di<br>
estensione [2]: il codice della initXXX() usa:<br>
<br>
- Py_InitModule4 per creare il modulo<br>
- PyModule_GetDict per ottenere il dizionario del modulo<br>
- PyDict_SetItemString per aggiungere oggetti al dizionario del modulo.<br></blockquote></div><div>Uhm,
è bene tenerlo a mente :) nel mio caso comunque và benissimo
PyModule_AddObject, in quanto devo solo rendere disponibile come
variabile un dizionario con dei valori predefiniti per un utilizzo
rapido del modulo. <br>
</div><div class="im"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Lo scheletro di questo modulo l&#39;ho creato usando un tool mezzo abbandonato<br>
che si trova nella distribuzione sorgente di Python: Tools/modulator. Ha un<br>
po&#39; di bit rot ma ce l&#39;ha fatta a produrre uno scheletro che poi ho finito<br>
a mano.<br></blockquote></div><div>Darò
una occhiata anche a questo, ma se già dici che è mezzo abbandonato...
le alternative non mancano e poi, sinceramente, il modulo in questione
l&#39;ho scritto da zero e ho ottenuto subito qualcosa di funzionante per
alcuni test. <br>
</div><div class="im"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Comunque appena serve qualcosa un pelino più complessa ti sconsiglio di<br>
procedere a mano con l&#39;API C nuda e cruda e ti consiglio invece<br>
Pyrex/Cython.<br>
<br>
[1] <a href="http://docs.python.org/c-api/allocation.html#Py_InitModule" target="_blank">http://docs.python.org/c-api/allocation.html#Py_InitModule</a><br>
[2]<br>
<a href="http://code.google.com/p/py-setproctitle/source/browse/src/setproctitle.c" target="_blank">http://code.google.com/p/py-setproctitle/source/browse/src/setproctitle.c</a><font color="#888888"><br>

</font></blockquote></div></div>Già, credo proprio che darò un occhio a Pyrex, l&#39;avevo già fatto ma mai seriamente e soprattutto senza mai usarlo.<br><br>Grazie ancora per il tuo aiuto, sei stato molto prezioso :)<br>
<font color="#888888">-- <br>
Alessandro A.<br>
</font>