私はswigが初めてで、pythonでいくつかのC++ファイルを使用するためにswigラッパーを作成しようとしています。次の C++ クラスがあります。
以下は、変換しようとしているコードのスニペットです。
/*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);
}
//....
}
今日、swig ドキュメントの助けを借りて、typedefs(uint8_t *) へのポインターを受け入れる example.i ファイルを書き込もうとしましたが、うまくいきませんでした。
以下は、私が試したが動作しない packet_buffer.i ファイルです。
%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"
- typedef へのポインターを受け取るメンバー関数の swig コードを作成するにはどうすればよいですか?
- コード全体で使用できる共通の %apply を記述できますか?それとも、INPUT、OUTPUT パラメーターごとに詳細を記述する必要がありますか?