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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage