Frage

Ich bin spöttisch mit PLT-Schema des ffi über und ich habe eine C-Funktion, die einen char ** (Array von Strings) zurück. Wenn ich meine Funktion als (_fun _pointer -> _pointer) erklären, wie konvertiere ich das Ergebnis in eine Liste von Zeichenketten in Schema?

Hier sind die entsprechenden C-Deklarationen:

typedef char **MYSQL_ROW;   /* return data as array of strings */
// ...
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
War es hilfreich?

Lösung

I denkt das, was Sie wollen, ist der cvector:

http: //docs.plt-scheme .org / Ausland / Derived_Utilities.html # (part._foreign ~ 3acvector)

Ein cvector von _string / utf-8 oder welchen auch immer kodiert, die Sie benötigen scheint reasanable.

Aber das ist von einem schnellen Überblick über die docs - Ich habe das selbst nicht ausprobiert. Bitte lassen Sie mich wissen, ob es funktioniert!

Andere Tipps

Ich weiß, es ist nicht genau das, was Sie suchen, aber es könnte ein wenig helfen. Ich habe einige Arbeit an einem Grund Gambit Schema FFI für MySQL getan. Ich weiß nicht, wie PLT Scheme und Gambit in ihrer FFI Implementierung unterscheiden (I mit „ziemlich viel“ wagen würde), aber vielleicht können Sie etwas aus ihm heraus:

http://bunny.jonnay.net/zengarden /trunk/lib/mysql/mysql-ffi.scm

Aha, dachte ich es aus mir selbst.

Ich habe das _cpointer Verfahren zu verwenden, auf der Seite beschrieben, die mike verknüpft:

(_fun _pointer -> (_cpointer/null 'mysql-row (make-ctype _pointer #f #f)))

Es scheint auch, dass jemand hat mich schon einen ffi Erstellen zu mysqlclient. Keine Sorgen machen; Mein Hauptziel ist das Verständnis der ffi api, und es geht nach vorne.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top