SWIG TCL:将类构造函数名称从new_ *重命名为create_ *

时间:2012-04-04 06:31:35

标签: tcl swig

我们可以重命名构造函数,就像我们使用%rename指令重命名函数一样吗?

%rename(create_cell) Cell(string);

基本上,我希望最终使用create_cell而不是new_Cell

1 个答案:

答案 0 :(得分:0)

我怀疑你不能在那一点上(你试过它看看它是否有效吗?)但你可以做一些事情。 (当然,只做其中一个。)

  1. 编辑生成的代码(SWIG编写C ++ - 然后编译的Tcl绑定代码),以便字符串"new_Cell""create_cell"。我认为您应该能够在函数调用中找到要更改的位置,如Tcl_CreateCommand或Tcl_CreateObjCommand,但也可能在宏中,这取决于代码生成的完成方式。 (我从未真正看过。)
  2. 使用load将代码导入Tcl,然后使用rename命令。名字不是固定的。 load 可能位于package require调用的实现中;只是做你通常会做的事情,让代码首先使用错误的名称,然后执行此操作:

    rename new_Cell create_cell
    
  3. 添加包装器命令或过程;其中任何一个都可以:

    proc create_cell args {
        eval new_Cell $args
    }
    
    # With 8.5 or later
    proc create_cell args {
        new_Cell {*}$args
    }
    
    # With 8.6
    proc create_cell args {
        tailcall new_Cell {*}$args
    }
    
    # Or do this; not a procedure, an alias
    interp alias  {} create_cell  {} new_Cell