Tailbite /THRD /UCOD

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Tailbite /THRD /UCOD

Message 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' ? )
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Re: Tailbite /THRD /UCOD

Message 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).
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message 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.
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message 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.
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message 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
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message 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.
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Merci beaucoup. :D
A+
Répondre