Le principe est que les procédures liées à votre objet soient accessibles uniquement via l'objet (MonObjet\Free() par exemple) et non directement (Free() tout court) tout en gardant le nom générique.
Un petit code vaut mieux qu'un long discour:
Code : Tout sélectionner
; ici on ne touche à rien
Interface Pouet_Object
SetX(x)
Free()
EndInterface
; ici non plus
Structure Pouet_Functions
SetX.l
Free.l
EndStructure
; ici non plus
Structure Pouet_Structure
*Functions.Pouet_Functions
x.l
EndStructure
; ici on change en mettant un nom qui n'est pas générique
Procedure Pouet_SetX(*this.Pouet_Structure, x)
*this\x = x
EndProcedure
; chaque procédure (même interne) on ne fais pas générique
Procedure Pouet_Free(*this.Pouet_Structure)
FreeMemory(*this)
EndProcedure
; et ici on change le nom de la procédure en fonction
Global Pouet_Global_Functions.Pouet_Functions
Pouet_Global_Functions\SetX = @Pouet_SetX()
Pouet_Global_Functions\Free = @Pouet_Free()
Par contre on pourra toujours atteindre Pouet_Free() d'où l'intérêt de choisir le nom de la lib ou quelque chose de pas générique.