0
林具有在我痛饮接口文件接口连接的.C/.H对于小GUI库中的以下:痛饮的Lua构件代
%{
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");
显然,它崩溃的参数是零。有没有办法(使用Swig接口或在Lua中)用点来抑制所有呼叫,并只保留带有列的呼叫?像这样,它会更容易为用户,并会避免我添加1000万指针等检查...
Lua不使用分号来表示行的结尾。 – kikito 2012-04-26 00:19:32