Créer une PureLibrary

Introduction

PureBasic permet de créer facilement des bibliothèques personnalisées pour étendre le jeu de commandes de base de PureBasic avec plus de commandes personnelles. La bibliothèque générée sera située dans le dossier PureBasic/PureLibraries/UserLibraries/, assurez-vous donc d'avoir les droits d'accès appropriés lorsque vous essayez d'en générer une.

Pour l'instant, la création de purelibrary n'est disponible qu'en ligne de commande, en utilisant le compilateur backend C avec l'option '--purelibrary'. Il est également possible d'utiliser le formidable outil de création de bibliothèque de l'IDE par 'Pf Shadoko' trouvé sur ici qui propose également quelques fonctionnalités supplémentaires.

Comme une PureLibary ajoute une nouvelle commande au jeu de commandes standard, le nouveau nom de commande doit être différent des commandes internes. Une PureLibrary doit toujours être compilée avec le compilateur PureBasic sur lequel elle sera utilisée. Si une PureLibrary n'est pas fournie avec son code source associé, elle risque fort de se casser dans une future version de PureBasic.

Une PureLibrary peut également être créée à l'aide de C/C++ ou d'ASM, veuillez consulter le dossier PureLibrary/SDK/.

Fonctions d'exportation

Aucun code ne doit être écrit en dehors des procédures, à l'exception de la déclaration d'objet.

Pour exporter une fonction lors de la création d'une PureLibrary, elle doit être déclarée comme ProcedureDLL. Si des paramètres facultatifs sont nécessaires, une autre fonction portant le même nom mais avec un numéro incrémenté peut être utilisée. Un commentaire "Aide Rapide (QuickHelp)" peut également être ajouté pour que l'aide rapide soit affichée dans l'IDE lors de l'utilisation de la commande.

Exemple:
  ;  QuickHelp  MyMax(Min [, Max [, Options, Mode]]) - Une fonction min/max standard
  ProcedureDLL MyMax3(a, b, c, d)
    ; Votre code ici
    ProcedureReturn a
  EndProcedure

  ProcedureDLL MyMax2(a, b)
    ProcedureReturn MyMax3(a, b, 0, 0)
  EndProcedure

  ProcedureDLL MyMax(a)
    ProcedureReturn MyMax2(a, 0)
  EndProcedure
  

Fonctions automatiques

Il existe deux fonctions spéciales pour l'initialisation automatique et la libération de la bibliothèque : InitPureLibrary() et FreePureLibrary(). Contrairement aux autres fonctions de la bibliothèque, celles-ci ne sont pas déclarées avec ProcedureDLL mais avec Procedure. Ces deux fonctions sont automatiquement appelées au lancement du programme et lorsque le programme est terminé.

Exemple :
  Procedure InitPureLibrary()
  ; Votre routine d'initialisation ici
  EndProcedure

  Procedure FreePureLibrary()
  ; Votre routine de libération des ressources ici
  EndProcedure

Désactivation d'une PureLibrary

Lors du codage de la PureLibrary, il peut être utile d'ignorer la bibliothèque actuelle avec DisablePureLibrary afin que le nom de la fonction puisse être réutilisé.

Exemple :
  DisablePureLibrary MaLibSuperCool

  ; Toutes les fonctions trouvées dans "MaLibSuperCool" seront ignorées, afin que 
  ; leur nom puisse être réutilisé avec ProcedureDLL

Suppression d'une PureLibrary

Pour supprimer une PureLibrary personnalisée, supprimez simplement le fichier correspondant dans le dossier PureBasic/PureLibraries/UserLibraries/.