Chet est un traducteur .h-to-.pas alimenté par libclang pour Delphi.
Contrairement à certains autres traducteurs d'en-tête, Chet utilise le compilateur Clang pour analyser les fichiers d'en-tête, entraînant des traductions plus précises qui nécessitent moins de réglages manuels.
Certaines fonctionnalités notables sont:
#define les déclarations dans les constantes dans la mesure du possible..pas pour un répertoire entier de fichiers .h . Cela réduit les problèmes dus aux dépendances entre les fichiers d'en-tête..chet pour réutiliser. #ifdef ). C'est à la fois bon et mauvais. C'est bien car il améliore la précision de la conversion. Mais cela peut être mauvais car il utilise le système sur lequel CET fonctionne pour déterminer certains chemins conditionnels. Par exemple, parce que CET s'exécute sur Windows, il analyse le code dans les sections #ifdef _WIN32 mais sautera n'importe quel code dans les sections pour d'autres plates-formes. Étant donné que Chet utilise un compilateur réel, vous devrez avoir un environnement (minimal) C de développement installé, ainsi que LLVM avec Clang. Clang doit être en mesure de trouver les en-têtes système pour l'environnement de développement. Ceux-ci seront généralement disponibles si vous avez une version de Visual Studio avec Visual C ++ installé. L'édition gratuite (communautaire) de Visual Studio suffit.
Vous pouvez d'abord exécuter CET pour vérifier les erreurs liées aux dépendances manquantes. Si vous obtenez des erreurs de dépendance lors de l'exécution du traducteur, vous pouvez télécharger les dépendances ici:
Vous pouvez utiliser l'application Windows CET 64 bits pré-compilée dans le répertoire Bin .
Si vous souhaitez compiler Chet vous-même, vous avez également besoin de libclang pour Delphi et de vous assurer que le Delphi IDE peut le trouver (le projet CHET le trouvera automatiquement si le répertoire Neslib.Clang est au même niveau que le répertoire Chet ).
Merci pour ces contributions:
Chet est assez simple. Dans de nombreux cas, il vous suffit de fournir un répertoire avec des fichiers d'en-tête, le nom du fichier .pas de sortie et sélectionner "Exécuter le traducteur d'en-tête (F9)".
Pour plus de contrôle sur le processus de conversion, vous pouvez spécifier diverses options, décrites ci-dessous.

Toutes les options de configuration que vous définissez peuvent être enregistrées dans un fichier de configuration .chet (qui est un simple fichier ini). Cela vous permet de charger les paramètres plus tard pour relancer la conversion (par exemple, lorsque de nouvelles versions des fichiers d'en-tête ont été publiées). Vous pouvez charger et enregistrer ces options de configuration à l'aide du menu File .
Pour aider à pré-configurer certains paramètres pour une nouvelle session, sélectionnez File | New Project... (Ctrl+N) . Vous entrez le nom du projet et Chet pré-configurera certains paramètres en fonction du nom que vous entrez (bien que vous puissiez toujours modifier ces paramètres plus tard).
Le menu Run comme le Run Header Translator unique d'option, que vous pouvez également activer avec F9 .
La page du projet contient les options de configuration les plus importantes:
.h Source ici. Le répertoire peut être relatif au répertoire contenant le fichier du projet .chet . Cliquez sur le bouton ... pour parcourir un répertoire. Il est recommandé de ne pas utiliser le répertoire avec le code source C d'origine. Au lieu de cela, copiez les fichiers d'en-tête dans un répertoire distinct uniquement à des fins de conversion. Cela facilite la suppression des fichiers d'en-tête que vous ne souhaitez pas convertir ou pour effectuer des modifications en fichiers d'en-tête à des fins de conversion..pas qui sera généré. I Le fichier Pascal combiné unique sera généré pour tous les fichiers d'en-tête analysés. Le nom peut être relatif au répertoire contenant le fichier du projet .chet . Cliquez sur le bouton ... pour ouvrir une boîte de dialogue Enregistrer.Windows.Winapi ), vous pouvez alors répertorier ces unités ici. Le sera ajouté à la clause d'utilisation du fichier Pascal généré.Sur cette page, vous spécifiez les plates-formes que vous souhaitez cibler et comment vous souhaitez les configurer.
LIB_MYLIB , de sorte que la déclaration suivante sera générée: const LIB_MYLIB = 'mylib.dll' .Viennent ensuite les cases à cocher pour toutes les plates-formes que vous souhaitez cibler (Windows 32 bits, Windows 64 bits, MacOS 32 bits, Linux 64 bits, iOS et Android). Pour chaque plate-forme que vous vérifiez, vous devez saisir les options suivantes:
_ ).Ici, vous pouvez personnaliser le processus d'analyse de clang.
-D<define> ) et d'inclure des chemins de recherche ( -I<path> ). Il existe des boutons séparés pour faciliter les ajouter. Reportez-vous à la documentation CLANG pour plus d'informations sur les arguments de ligne de commande disponibles.C'est là que vous personnalisez la sortie générée.
cdecl et stdcall . Dans presque tous les cas, vous devez utiliser la convention d'appel cdecl par défaut. Utilisez stdcall uniquement pour les DLL Windows 32 bits que vous connaissez sont compilées avec la convention d'appel STDCALL. Ce ne sont généralement que les DLL du système Windows. La plupart des DLL tiers utilisent CDECL.char C est ambigu, il peut être utilisé comme un entier 8 bits ou un caractère dans une chaîne de texte. Les versions dactylographiées signed char et unsigned char sont toujours converties respectivement en Shortint et Byte . Mais lorsqu'aucune signature n'est spécifiée, vous avez les options suivantes:char en une plate-forme multiplateforme UTF8Char .char en un court-circuit Shortint 8 bits.char en un Byte non signé 8 bits.begin et procedure ). Ici, vous spécifiez comment vous souhaitez convertir ces identifiants:public ) comme des identifiants à Delphi, mais il a l'air étrange et le surligneur de la syntaxe de Delphi les traite différemment. Vous voulez donc généralement les traiter comme des mots réservés.type MyEnum = Integer; ) et créez des constantes pour chaque option dans l'énumération. Cela peut être plus applicable à certaines bibliothèques.#define 's, voir les remarques ci-dessous). Ici, vous spécifiez comment les gérer:TODO au code source de Delphi, ainsi qu'une version commentée de la déclaration d'origine. N'oubliez pas que vous pouvez afficher une liste de tous les TODO dans l'IDE Delphi en sélectionnant View | Tool Windows | To-Do List .Notez que seuls les commentaires de documentation de style Doxygen sont analysés par Clang. Ce sont des commentaires qui suivent l'une de ces conventions de format:
/// Comment (with 3 slashes)/** Comment (with two stars) *//*! Comment (with exclamation point) *////< Comment (applies to preceding declaration)/**< Comment (applies to preceding declaration) *//*!< Comment (applies to preceding declaration) */ Chet essaie de convertir les déclarations #define en constantes si possible. Cela ne fonctionne que si:
#define ABS(x) (x < 0) ? -x : x ne peut pas être traduit.#define FOO 3<<BAR sera converti en const FOO = 3 shl BAR .Ici, vous pouvez spécifier une liste de symboles à ignorer. Ces symboles ne seront pas traduits.
L'utilisation la plus courante consiste à ignorer #define qui génèrent des erreurs de conversion ou des fonctions dont vous n'avez pas besoin. Vous pouvez également choisir d'ignorer certains types, mais cela peut entraîner des erreurs de compilation plus tard car les types attendus sont manquants.
Notez que les symboles sont sensibles à la casse.
La page finale a juste un seul bouton "Exécuter le traducteur d'en-tête" (que vous pouvez également activer avec F9 ). Il montre la progression du processus de traduction, ainsi que toutes les erreurs qui se sont produites lors de l'analyse des fichiers d'en-tête.
Vous pouvez utiliser ces erreurs pour corriger les fichiers d'en-tête, ajouter des fichiers d'en-tête manquants ou configurer ce processus d'analyse en ajoutant des arguments de ligne de commande (par exemple, en ajoutant des chemins de recherche incluent).
CET est autorisé sous la licence BSD simplifiée. Voir Licence.txt pour plus de détails.