Page 1 sur 1

Tailbite /THRD /UCOD

Publié : mar. 05/févr./2008 22:33
par Droopy
Tailbite peut générer des lib threadsafe et/ou unicode.

Une librairie classique, peut-elle sans modification devenir threadsafe et/ou unicode juste en spécifiant à TB de la compiler avec les bonnes options.

Si il n'y a aucune modif de code à faire, dois-je fournir les 4 versions de la librairie ?
- La version normale
- La version ThreadSafe
- La version Unicode
- La version ThreadSafe et Unicode

JaPBe ne semble pas gérer l'autocomplétion des lib ThreadSafe ( peut-être car elles sont placées dans 'PureBasic\SubSystems\UserLibThreadSafe\PureLibraries' ? )

Re: Tailbite /THRD /UCOD

Publié : mer. 06/févr./2008 9:12
par gnozal
Droopy a écrit :Une librairie classique, peut-elle sans modification devenir threadsafe et/ou unicode juste en spécifiant à TB de la compiler avec les bonnes options.
Voir le SDK de PB ...
Tu dois avoir une variante de la procedure pour chaque cas : Bip(), Bip_THREAD(), Bip_UNICODE(), ... pas possible avec Tailbite.
...
* Thread: Informs the compiler than this function has a THREAD specific version. If the function needs to be
tuned to be threadsafe, and the performance/size impact will be important, it's advised to use this flag
and create a function which will be used only when the executable will be thread safe (ie: compiled with the
/THREAD flag). The command should be named PB_CommandName_THREAD()

* Unicode: Informs the compiler than this function has an UNICODE specific version. If the function returns
a string or has some string parameter, it's strongly recommanded to use this flag and add the unicode version
so the command can be used in unicode program as well (else it will work in ascii only).
The command should be named PB_CommandName_UNICODE(). Note: if your command also has the 'Thread' flag, you
need to do another command name PB_CommandName_THREAD_UNICODE() which will be used if the program is compiled
with the /THREAD and /UNICODE flag.
...
Droopy a écrit :Si il n'y a aucune modif de code à faire, dois-je fournir les 4 versions de la librairie ?
Aucune modification, c'est étonnant ...
Soit les 4 versions, soit une version comme décrit ci-dessus.
Droopy a écrit :JaPBe ne semble pas gérer l'autocomplétion des lib ThreadSafe ( peut-être car elles sont placées dans 'PureBasic\SubSystems\UserLibThreadSafe\PureLibraries' ? )
jaPBe demande au compilateur la liste des fonctions (commande FUNCTIONLIST).

Publié : mer. 06/févr./2008 11:48
par Droopy
Merci Gnozal, je me permet de t'indiquer ce que j'ai compris à la lecture de ta réponse.

Pour une fonction Test() il faut aussi créer les fonctions test_THREAD() test_UNICODE() et test_THREAD_UNICODE().

Dans TB il faudrait créer plusieurs fichiers et les compiler avec l'option associée.

Merci de me corriger si je me trompe.

Publié : mer. 06/févr./2008 12:08
par gnozal
Droopy a écrit :Pour une fonction Test() il faut aussi créer les fonctions test_THREAD() test_UNICODE() et test_THREAD_UNICODE().
Oui, c'est çà. Mais il faut programmer en ASM ou en C : Tailbite ne sait pas faire.
Droopy a écrit :Dans TB il faudrait créer plusieurs fichiers et les compiler avec l'option associée.
Oui.

Publié : mer. 06/févr./2008 12:33
par Droopy
C'est bizare qu'il faille programmer en ASM ou C
Car il y a l'option /THRD /UCOD dans TB.

Mais bon si tu le dis
Merci encore

Publié : mer. 06/févr./2008 13:26
par gnozal
Droopy a écrit :C'est bizare qu'il faille programmer en ASM ou C
Car il y a l'option /THRD /UCOD dans TB.
Oui, je sais, c'est moi qui les aie ajoutées en 2006 ... mais Tailbite ne sait pas créer une librairie 'composite' qui contient les 4 types de fonctions Test()/Test_THREAD()/Test_UNICODE()/Test_THREAD_UNICODE() dans le même fichier.
Avec Tailbite, une libraire créée avec /UCOD ne fonctionnera qu'en mode unicode. Il en faudra une autre créée avec /THRD pour fonctionner en mode threadsafe, etc ...
En résumé :
- programmation façon SDK : 1 lib pour les 4 modes.
- programmation façon Tailbite : 4 libs pour les 4 modes, une par mode.

Publié : mer. 06/févr./2008 21:19
par Droopy
Merci beaucoup. :D
A+