我必須作出以下功能Abc_NtkCreateNodeAnd
紅寶石C擴展:紅寶石C擴展爲一個函數
Abc_Obj_t * Abc_NtkCreateNodeAnd(Abc_Ntk_t * pNtk, Vec_Ptr_t * vFanins)
{
Abc_Obj_t * pNode;
int i;
pNode = Abc_NtkCreateNode(pNtk);
return pNode;
}
這裏是紅寶石C擴展的一個例子。現在
*Original C function*
Abc_Ntk_t * Io_ReadBlif(char * pFileName, int fCheck)
{
Io_ReadBlif_t * p;
Abc_Ntk_t * pNtk;
p = Io_ReadBlifFile(pFileName);
return pNtk;
}
*Ruby C extension*
static VALUE IO_read_blif(VALUE self, VALUE file_name)
{
int index;
char *file_name_str = StringValueCStr(file_name);
Abc_Ntk_t *network = Io_ReadBlif(file_name_str, IO_FILE_BLIF, 1);
}
我的主要問題是你如何從C到ruby.I傳遞指針已經嘗試寫擴展這樣的:
static VALUE Abc_NtkCreateNode_And(VALUE self, VALUE netw ,VALUE vfan_ins)
{
Abc_Ntk_t *netw_str = StringValueCStr(netw);
Vec_Ptr_t *vfan_ins_str = StringValueCStr(vfan_ins);
Abc_Obj_t *network = Abc_NtkCreateNodeAnd(netw_str,vfan_ins_str, IO_FILE_BLIF, 1);
return make_Network(network);
}
但代碼Abc_Ntk_t *netw_str = StringValueCStr(netw);
是錯誤的,我的意見。那麼適當的代碼應該是什麼?