通常C API指針被轉換到要麼arrays
或out
參數在瓦拉綁定:如何綁定延遲的參數?
// C
void get_user_name (char *buffer, int buffer_length);
void get_user_count (int *count_ptr);
// Vala
public static void get_user_name (uint8[] buffer);
public static void get_user_count (out int count);
我現在已經遇到其中指針被用作延遲out
參數的情況。
// C
void bind_buffer (void *buffer, int buffer_length, int *length);
int fetch (void);
每次fetch()
被調用時,數據被傳輸到buffer
和length
。
在Vala中綁定這樣的API的最佳方式是什麼?
// Vala
public static void bind_buffer (uint8[] buffer, int *length);
public static int fetch();
我不認爲我可以在這裏使用out int length
?
此外,我必須確保綁定數據在整個綁定期間仍然可用。我怎樣才能做到這一點?
我刪除了我的問題的CCode屬性,因爲它們在這裏不相關(如您所寫)。 –
API中還有更多瘋狂的東西(比如void *,其他指針取決於類型參數):\ –
您可能想要爲這些泛型使用泛型,或者可能爲每種類型創建一個版本,其默認值爲類型參數。 – nemequ