ライブラリの VAPI を作成しようとしていmongoc
ます。
いくつかの関数が関連付けられた構造体からいくつかのコンパクトなクラスを作成しました。たとえば、Client
次のようになります。
[Compact]
[CCode (cname = "mongoc_client_t", free_function = "mongoc_client_destroy", has_type_id = false)]
public class Client {
[CCode (cname = "mongoc_client_new")]
public Client (string uri);
}
関連する関数の束もバインドする必要があります。次のように、それらをインスタンスメソッドとしてバインドしようとしました:
[CCode (cname = "mongoc_client_get_database")]
public Database get_database (Client client, string dbname);
//Database is another compact class
結果は次のようになります。
[CCode (cheader_filename = "mongoc.h")]
namespace Mongo {
[Compact]
[CCode (cname = "mongoc_client_t", free_function = "mongoc_client_destroy", has_type_id = false)]
public class Client {
[CCode (cname = "mongoc_client_new")]
public Client (string uri);
[CCode (cname = "mongoc_client_get_database")]
public Database get_database (Client client, string dbname);
}
}
client
最初のパラメーターを呼び出し元のインスタンスとして取得したかったのです。これの代わりに:
var client = new Client ("uri");
var db = client.get_database (client, "test");
//client is redundant
私はこれを取得しようとしています:
var client = new Client ("uri");
var db = client.get_database ("test");
//The Client instance is passed implicitly
this
、静的メソッド、およびその他の調整を使用してみinstance_pos
ましたが、そのように機能させる方法が見つかりませんでした。
Valaのパラメータとしてインスタンスを暗黙的に渡すことは可能ですか? その場合、インスタンスが冗長性なしで暗黙的に渡されるように VAPI をバインドするにはどうすればよいですか?