私のSwigインターフェースファイルには、小さなGUIライブラリの.c / .hとインターフェースする次のものがあります。
%{
void Widget_name_set( Widget *widget, char *name )
{
if( !name ) return;
WidgetSetName( widget, name );
}
char *Widget_name_get( Widget *widget )
{
return WidgetGetName( widget );
}
%}
struct Widget
{
%extend
{
char name[ 32 ];
Widget( void )
{
return WidgetNew();
}
~Widget()
{
if( $self ) WidgetDelete( $self );
}
void SetName( char *name )
{
Widget_name_set( $self, name );
}
char *GetName()
{
return Widget_name_get( $self );
}
}
};
次に、インターフェイス ファイルを使用して Lua ラッパーを生成します。Lua で次のように呼び出すと、結果はほぼ期待どおりになります。
w = Widget();
w:SetName("test");
全て大丈夫。しかし、私がこれを行うと:
w = Widget();
w.SetName( nil, "test" );
パラメータがnilであるため、明らかにクラッシュします。(Swig インターフェイスまたは Lua のいずれかを使用して) ドットですべての呼び出しを抑制し、列を持つものだけを保持する方法はありますか? このようにすると、ユーザーにとってより簡単になり、ポインタなどの1000万回のチェックを追加する必要がなくなります...