Erstellen eines Swig-Wrappers für C ++ (Zeiger) auf Python
Ich bin sehr neu in Swig und ich versuche, einen Swig-Wrapper zu erstellen, um einige C ++ - Dateien in Python zu verwenden. Ich habe die folgende C ++ - Klasse.
Das Folgende ist ein Ausschnitt aus dem Code, den ich zu konvertieren versuche:
<code>/*packet_buffer.h*/ class CPacketBuffer { public: // construct based on given buffer, data is not copied CPacketBuffer(uint8_t* data, uint32_t length) { mpBuffer = data; mLength = length; mHead = 0; mTail = length; } uint8_t* GetBuffer() { return (mpBuffer + mHead); } void Add(const uint8_t* data, uint32_t length) { if ((mTail + length) > mLength) { length = (mLength - mTail); } //.... } </code>
Ich habe versucht, eine example.i-Datei zu schreiben, die heute den ganzen Tag mit Hilfe der swig-Dokumentation Zeiger auf typedefs (uint8_t *) akzeptiert, aber ich war erfolglos.
Das Folgende ist eine Datei packet_buffer.i, die ich ausprobiert habe und die nicht funktioniert.
<code>%module packet_buffer %include typemaps.i %apply unsigned char* {uint8_t*}; %apply unit8_t *INPUT {uint8_t *data}; %{ #define SWIG_FILE_WITH_INIT #include "../include/packet_buffer.h" %} %include "../include/packet_buffer.h" </code>Wie schreibe ich einen Swig-Code für Member-Funktionen, die Zeiger auf typedefs verwenden?Kann ich ein gemeinsames% apply schreiben, das im gesamten Code verwendet werden kann, oder muss ich für jeden INPUT- und OUTPUT-Parameter Angaben machen?