Skip to main content
プロトコル 1 は元の VEF インターフェースです。v0.0.1 で安定しており、0.0.5 以降は廃止されます。新しい拡張機能では、C++ での拡張機能の作成 および C++ 開発 ガイドにあるテンプレートベースの型ビルダーを使用して、プロトコル 3 API を使用する必要があります。 このページは、プロトコル 1 を使用して構築された既存の拡張機能を扱う際に参照するために存在します。

関数ポインタ型 API

プロトコル 1 のカスタム型は、vsql::make_type<> テンプレートの代わりに、明示的な関数ポインタを使用して登録されます。関数シグネチャは、プロトコル 3 の同等物とは異なり、Arg および Result オブジェクトではなく、生のポインタと長さを引数として受け取ります。

関数シグネチャ

登録

vsql::make_type<kMyTypeName>() (コンパイル時の文字列 NTTP を使用) が推奨される形式です。make_type(MYTYPE) (テンプレートパラメータなし) はプロトコル 1 の形式であり、0.0.5 以降はサポートが終了します。

生の ABI スタイル (関数)

プロトコル 1 の VDF 実装では、型付きラッパーを使用する代わりに、生の C 構造体を直接渡すことができます。このスタイルは 0.0.5 以降は廃止されます。すべての新しいコードでは、型付き引数/結果 API を使用してください。
登録は、型付きラッパーのアプローチと同じです。ビルダーはシグネチャを自動的に検出します。

結果定数

生の ABI は、result->type に設定された vef_return_value_type_t を介して結果の状態を伝達します。 プロトコル 3 では、out.set()out.set_null()out.warning()out.error() がこれを自動的に処理します。

プロトコル 1 における集計関数の登録

集計関数の場合、.clear<>() および .accumulate<>() は生の ABI 関数ポインタシグネチャを受け入れます。.prerun<>() および .postrun<>() は受け入れません。ビルダーは、プロトコル 1 の拡張機能であっても、型付きシグネチャ (void(PrerunArgs, PrerunResult) および void(PostrunArgs)) を必要とします。すべての新しいコードでは、型付き集計関数のアプローチ を使用してください。