Page 1 sur 1
Une nouvelle constante pour le compilateur
Publié : dim. 19/juin/2011 16:38
par Thyphoon
Une idée en triant mon répertoire avec tout mes fichiers d'include qui sont partager entre plusieurs projet.
ça serait bien d'avoir une constante du style
avec comme valeur #true si il s'agit du fichier principal de la compilation ou #false si c'est un include.
ça permettrait de mettre du code de test ou des exemples sur nos fichiers d'include qui ne serait pas compilé lorsqu'on inclus le fichier a un autre programme principal.
Vous comprenez ce que que je veux dire ?
on pourrait rajouter dans l'IDE dans le menu compiler "compiler le fichier courant individuellement" histoire de compilier un fichier sans l'inclure au reste du projet ça pourrait être pratique ! non ?
Re: Une nouvelle constante pour le compilateur
Publié : lun. 20/juin/2011 18:39
par Le Soldat Inconnu
Du même avis

Ce serait fort pratique
Re: Une nouvelle constante pour le compilateur
Publié : lun. 20/juin/2011 19:40
par anissa
histoire de compiler un fichier sans l'inclure au reste du projet ça pourrait être pratique !non ?
Ce serait intéressant dans la mesure où ça sera effectivement plus rapide et qu'on puisse aussi corriger rapidement les erreurs de syntaxes.. Mais, que se passera t il si ce morceau de code utilise un lien (procedure ou fonction) qui se trouve sur l'autre bout de code qui ne sera pas compilé en même temps que ce premier code?
Je ne sais pas si c correct ce que je dis mais bon, corrigez moi si j'ai mal compris...
Re: Une nouvelle constante pour le compilateur
Publié : mar. 21/juin/2011 7:36
par Thyphoon
anissa a écrit :
Ce serait intéressant dans la mesure où ça sera effectivement plus rapide et qu'on puisse aussi corriger rapidement les erreurs de syntaxes.. Mais, que se passera t il si ce morceau de code utilise un lien (procedure ou fonction) qui se trouve sur l'autre bout de code qui ne sera pas compilé en même temps que ce premier code?
et bien si il y a un include dans le fichier en question alors il sera prit en compte.
je ré explique:pour tout mes projets j'ai un répertoire que j'appel shareinclude dans le quel j'ai des codes pour faire des trucs spécifique. Un pour le easing (mouvement), un pour un interpréteur de script, un pour des fonctions sur les sprites3D qui ne sont pas intégré a PB d'office etc... chaqu'un de ces codes est autonome. Si j'ai besoin d'un interpréteur de script dans un de mes projets alors je fais un include de ce fichier. D'ou l'idée de cette nouvelle constante. ça permet de laisser le code de démonstration a la fin du fichier et qu'il ne soit pas prit en compte lorsqu'il est inclus dans un projet, et si le fichier est tout seul alors il execute le code de démonstration/exemple
Qu'en penses tu ? est ce que je suis un peu plus claire ?
Re: Une nouvelle constante pour le compilateur
Publié : mar. 21/juin/2011 8:07
par G-Rom
Je ne vois pas l'intérêt, tu as deja des fct du style : Defined()
A toi de les utiliser, non?
Re: Une nouvelle constante pour le compilateur
Publié : mar. 21/juin/2011 8:49
par Thyphoon
G-Rom a écrit :Je ne vois pas l'intérêt, tu as deja des fct du style : Defined()
A toi de les utiliser, non?
Heu je vois pas du tout ce que ça vient faire ici ...
Bon je sais que je suis pas le meilleur pour expliquer les choses mais bon ...
J'aimerais juste une constante qui permet au moment ou je compile le code savoir si le fichier en question est le fichier principal du projet ou si c'est un fichier inclus dans un autre.
Exemple de fichier
Code : Tout sélectionner
; Autor: Thomas (ts-soft) Schulz
; PB-Version: 4.xx
; OS: windows/linux/macos
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
ImportC #PB_Compiler_Home + "purelibraries/linux/libraries/zlib.a"
CompilerCase #PB_OS_MacOS
ImportC "/usr/lib/libz.dylib"
CompilerCase #PB_OS_Windows
ImportC "zlib.lib"
CompilerEndSelect
compress2(*dest, *destLen, *source, sourceLen, level)
uncompress(*dest, *destLen, *source, sourceLen)
EndImport
Procedure zipPackMemory(*source, sourceLen = #PB_Default, level = #PB_Default)
Protected *dest, destLen
If level < #PB_Default Or level > 9 : level = #PB_Default : EndIf
If *source
If sourceLen = #PB_Default : sourceLen = MemorySize(*source) : EndIf
destLen = sourceLen + 13 + (Int(sourceLen / 100))
*dest = AllocateMemory(destLen)
If *dest
If Not compress2(*dest, @destLen, *source, sourceLen, level)
*dest = ReAllocateMemory(*dest, destLen)
ProcedureReturn *dest
EndIf
EndIf
EndIf
EndProcedure
Procedure zipUnpackMemory(*source, *dest)
Protected sourceLen = MemorySize(*source)
Protected destLen = MemorySize(*dest)
If Not uncompress(*dest, @destLen, *source, sourceLen)
ProcedureReturn destLen
EndIf
EndProcedure
;si ce code est exécuter seul alors je compile aussi l'exemple qui va avec
;et je ne compile pas ce code si ce fichier est inclus dans un projet
CompilerIf #PB_Compiler_MainSourceFile=#True
text.s="test de compression dans une phrase tres longue..."
size=StringByteLength(text,#PB_Ascii)+1
Debug "taille de depart:"+Str(size)
*Mem = AllocateMemory(size)
PokeS(*Mem,text)
*src=zipPackMemory(*Mem)
Debug "taille compressé:"+Str(MemorySize(*src))
FreeMemory(*Mem)
*new=AllocateMemory(size)
zipUnpackMemory(*src, *new)
Debug PeekS(*new,#PB_Ascii)
CompilerEndIf
Re: Une nouvelle constante pour le compilateur
Publié : mar. 21/juin/2011 10:06
par G-Rom
J'ai tres bien compris ta demande, ce que je voulais dire c'est que tu peut déclarer une constante dans ton fichier principal, et dans tes includes utiliser la fonction defined() pour compiler ou pas la partie exemple, je te ferais un exemple en rentrant, coder avec un mobile c'est pas facile.

Re: Une nouvelle constante pour le compilateur
Publié : mar. 21/juin/2011 10:21
par Thyphoon
G-Rom a écrit :J'ai tres bien compris ta demande, ce que je voulais dire c'est que tu peut déclarer une constante dans ton fichier principal, et dans tes includes utiliser la fonction defined() pour compiler ou pas la partie exemple, je te ferais un exemple en rentrant, coder avec un mobile c'est pas facile.

Je veux bien ! je suis currieux de voir comment tu veux faire !

Merci d'avance !

Re: Une nouvelle constante pour le compilateur
Publié : mar. 21/juin/2011 12:23
par G-Rom
dans tes includes , tu rajoute ceci :
Code : Tout sélectionner
CompilerIf Defined(MAIN_FILE,#PB_Constant)=0
Debug "Cette partie sera compilé"
CompilerEndIf
a la place de 'Debug "Cette partie sera compilé"' tu colles ton exemple.
et dans ton fichier principal , tu déclares #MAIN_FILE = 0, comme ca , ton main quand il sera compilé , il ne compilera pas les exemples dans les includes , d'ou l'inutilité de ta demande

Re: Une nouvelle constante pour le compilateur
Publié : mar. 21/juin/2011 12:32
par Thyphoon
Merci beaucoup ! Effectivement c'est pas mal du tout ! ça me plait !!

)
bon une constante qui serait géré directement dans PB ça serait le top, mais ta methode en attendant est bonne ! Merci

Re: Une nouvelle constante pour le compilateur
Publié : mer. 22/juin/2011 17:59
par Le Soldat Inconnu
Oui, excellente idée

Re: Une nouvelle constante pour le compilateur
Publié : mer. 22/juin/2011 23:21
par G-Rom
Thyphoon a écrit :Merci beaucoup ! Effectivement c'est pas mal du tout ! ça me plait !!

)
bon une constante qui serait géré directement dans PB ça serait le top, mais ta methode en attendant est bonne ! Merci

Comment veut tu que le compilateur détermine le fichier principal , en PB il n'y a pas de fonction d'entrer , comme main() en C.
Re: Une nouvelle constante pour le compilateur
Publié : jeu. 23/juin/2011 6:02
par Thyphoon
G-Rom a écrit :Thyphoon a écrit :Merci beaucoup ! Effectivement c'est pas mal du tout ! ça me plait !!

)
bon une constante qui serait géré directement dans PB ça serait le top, mais ta methode en attendant est bonne ! Merci

Comment veut tu que le compilateur détermine le fichier principal , en PB il n'y a pas de fonction d'entrer , comme main() en C.
ba tout simplement car dans un projet il est marqué => menu compiler=>compiler option=>main source file
mais il peut le déterminer facilement au moment de la compilation a savoir si cette partie du code vient d'un include ou pas !