Chetは、DelphiのLibclangを搭載した.h-to-.pas翻訳者です。
他のいくつかのヘッダー翻訳者とは異なり、ChetはClangコンパイラを使用してヘッダーファイルを解析するため、より正確な翻訳がより少ない手動調整を必要とします。
いくつかの注目すべき機能は次のとおりです。
#define宣言を定数に翻訳しようとします。.hファイルのディレクトリ全体の単一の.pasファイルを生成します。これにより、ヘッダーファイル間の依存関係により問題が減ります。.chetプロジェクトファイルに保存できます。 #ifdefディレクティブによってガイドされます)。これは良い面も悪いことも悪いことです。コンバージョンの精度が向上するため、良いことです。しかし、Chetが走るシステムを使用していくつかの条件付きパスを決定するため、それは悪いことです。たとえば、ChetはWindowsで実行されるため、 #ifdef _WIN32セクションでコードを解析しますが、他のプラットフォームのセクションのコードをスキップします。 Chetは実際のコンパイラを使用しているため、(最小限の)C開発環境をインストールし、LLVMがClangを使用する必要があります。 Clangは、開発環境のシステムヘッダーを見つけることができる必要があります。これらは通常、Visual C ++がインストールされているVisual Studioのバージョンがある場合に利用できます。 Visual Studioの無料(コミュニティ)エディションで十分です。
最初にChetを実行して、依存関係の欠落に関連するエラーを確認できます。翻訳者を実行するときに依存関係エラーが発生した場合は、こちらから依存関係をダウンロードできます。
Binディレクトリで、事前にコンパイルされた64ビットWindows Chetアプリケーションを使用できます。
Chetを自分でコンパイルしたい場合は、DelphiにLibclangが必要であり、Delphi Ideがそれを見つけることができることを確認します( Neslib.ClangディレクトリがChetディレクトリと同じレベルにある場合、Chetプロジェクトは自動的に見つかります)。
これらの貢献をありがとう:
チェットは非常に簡単です。多くの場合、ヘッダーファイル、出力.pasファイルの名前を備えたディレクトリを提供するだけで、「ヘッダー翻訳者(F9)の実行」を選択する必要があります。
コンバージョンプロセスをさらに制御するには、以下で説明するさまざまなオプションを指定できます。

設定した構成オプションは、 .chet構成ファイルに保存できます(これは単純なINIファイルです)。これにより、後で設定をロードして変換を再実行できます(たとえば、ヘッダーファイルの新しいバージョンがリリースされたとき)。 Fileメニューを使用して、これらの構成オプションをロードおよび保存できます。
新しいセッションのいくつかの設定を事前に構成するのを助けるために、 File | New Project... (Ctrl+N) 。プロジェクトの名前を入力すると、Chetは入力した名前に基づいていくつかの設定を事前に構成します(ただし、後でそれらの設定を常に変更できます)。
Runメニューは、単一のオプションRun Header Translatorと同じように、 F9でアクティブにすることもできます。
プロジェクトページには、最も重要な構成オプションが含まれています。
.hファイルを使用してディレクトリを指定します。ディレクトリは、 .chetプロジェクトファイルを含むディレクトリに関連している場合があります。 [ ...ボタンをクリックして、ディレクトリを参照します。元のCソースコードでディレクトリを使用しないことをお勧めします。代わりに、変換目的でヘッダーファイルを別のディレクトリにコピーします。これにより、変換したくないヘッダーファイルを簡単に削除したり、変換目的でヘッダーファイルに編集したりできます。.pasファイルの名前を指定します。 Iシングルコンバインドパスカルファイルは、すべての解析されたヘッダーファイルに対して生成されます。名前は、 .chetプロジェクトファイルを含むディレクトリに関連している場合があります。 [ ...ボタンをクリックして、[保存]ダイアログを開きます。Windows.Winapiなど)の宣言に依存する場合、これらのユニットをここにリストできます。生成されたPascalファイルの使用句に追加されます。このページでは、ターゲットをターゲットにしたいプラットフォームと、それらをどのように構成するかを指定します。
LIB_MYLIBである可能性があるため、次の宣言が生成されます: const LIB_MYLIB = 'mylib.dll' 。次は、ターゲットにするすべてのプラットフォームのチェックボックス(32ビットウィンドウ、64ビットウィンドウ、32ビットMacOS、64ビットLinux、iOS、Android)です。確認するプラットフォームごとに、次のオプションを入力する必要があります。
_文字が付いています)。ここでは、Clang Parsingプロセスをカスタマイズできます。
-D<define> )を追加し、検索パス( -I<path> >)を含めることです。これらを簡単に追加できるようにするための個別のボタンがあります。利用可能なコマンドライン引数に関する情報については、Clangドキュメントを参照してください。これは、生成された出力をカスタマイズする場所です。
cdeclとstdcallを選択できます。ほとんどすべての場合、デフォルトのcdecl呼び出し規則を使用する必要があります。 STDCall Calling Conventionに編集されている32ビットWindows DLLにのみstdcall使用してください。これらは通常、WindowsシステムDLLのみです。ほとんどのサードパーティは、cdeclを使用しています。charタイプは曖昧で、テキスト文字列の8ビット整数または文字として使用できます。型付けされたバージョンはsigned charおよびunsigned char署名されていますが、それぞれShortintとByteに変換されます。ただし、署名されたものが指定されていない場合、次のオプションがあります。charクロスプラットフォームUTF8Charに変換します。char 8ビットの署名されたShortintに変換します。char 8ビットの符号付きByteに変換します。beginやprocedureなど)。ここで、これらの識別子を変換する方法を指定します。publicなど)を使用することが許可されていますが、DelphiのSyntax Highlighterはそれらを異なる方法で扱います。したがって、通常、これらも予約された言葉としても扱いたいと思います。type MyEnum = Integer;のように)。列挙の各オプションの定数を作成します。これは、一部のライブラリに適用できる場合があります。#defineの、以下の備考を参照)。ここでは、これらを処理する方法を指定します。TODOコメントを書き、元の宣言のコメントアウトバージョンを書きます。 View | Tool Windows | To-Do List 。ドキシゲンスタイルのドキュメントコメントのみがClangによって解析されていることに注意してください。これらは、これらの形式の規則のいずれかに従うコメントです。
/// 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は、可能であれば、 #define宣言を定数に変換しようとします。これは、次の場合にのみ機能します。
#define ABS(x) (x < 0) ? -x : x翻訳できません。#define FOO 3<<BAR const FOO = 3 shl BARに変換されます。ここでは、無視するシンボルのリストを指定できます。これらの記号は翻訳されません。
最も一般的な用途は、変換エラー、または必要のない機能を生成する#define無視することです。一部のタイプを無視することもできますが、予想されるタイプが欠落しているため、後で編集エラーが発生する場合があります。
シンボルはケースに敏感であることに注意してください。
最終ページには、「Header Translatorを実行する」1つのボタンがあります( F9でアクティブにすることもできます)。翻訳プロセスの進捗状況と、ヘッダーファイルを解析する際に発生したエラーが表示されます。
これらのエラーを使用して、ヘッダーファイルを修正したり、ヘッダーファイルが不足しているか、コマンドライン引数を追加してその解析プロセスを構成したりすることができます(たとえば、検索パスを含めるなど)。
Chetは、簡素化されたBSDライセンスに基づいてライセンスされています。詳細については、license.txtを参照してください。