file.tm

file.tm

是一个 WSTP 模板文件.

更多信息

  • WSTP 模板文件包含把外部 C 函数链接到 Wolfram 语言函数的模板.
  • 每个模板包含如下项:
  • :Begin:开始一个特定函数的模板
    :Function:在外部程序中的函数名称
    :Pattern:调用函数的定义模式
    :Arguments:函数的自变量
    :ArgumentTypes:函数的自变量类型
    :ReturnType:从函数中返回的值的类型
    :End:结束模板
    :Evaluate:当函数被安装时,计算 Wolfram 语言的输入
    ::text按注释处理
  • 任意 C 代码可以在 .tm 文件的模板间穿插.
  • 可使用以下自变量和返回类型规范:
  • Integer16short
    Integer32int
    Integer64mlint64
    Real32float
    Real64double
    Real128mlextended_double
    Integer16Listshort*, int (length)
    Integer32Listint*, int (length)
    Integer64Listmlint64*, int (length)
    Real32Listfloat*, int (length)
    Real64Listdouble*, int (length)
    Real128Listmlextended_double*, int (length)
    Stringchar*
    ByteStringunsigned char* and int (length)
    UCS2Stringunsigned short*
    UTF8Stringunsigned char*, int (bytes), int (characters)
    UTF16Stringunsigned short*, int (length), int (characters)
    UTF32Stringunsigned int*, and int (length)
    Symbolchar*
    ByteSymbolunsigned char*, int (length)
    UCS2Symbolunsigned short*, int (length)
    UTF8Symbolunsigned char*, int (bytes), int (characters)
    UTF16Symbolunsigned short*, int (length), int (characters)
    UTF32Symbolunsigned int*, int (length)
    ThisLinkWSLINK
    $CurrentLinkWSLINK
    Manualvoid
  • 为了在返回类型中使用 UCS2String, UCS2Symbol, UTF8String, UTF8Symbol, UTF16String, UTF16Symbol, UTF32String, 和 UTF32Symbol,程序员必须分配一个 WSUnicodeContainer 对象返回,以代替 Unicode 字符串.
  • WSUnicodeContainer 对象是一个封装,包含 Unicode 字符串和它的长度的复制,以便于在模板文件中函数间传递 Unicode 字符串.
  • 当返回类型是列出的 Unicode 字符串或符号类型,wsprep 只会产生带有 WSUnicodeContainer 的函数签名作为返回类型. 当其中一个参数是 Unicode 字符串或符号类型,wsprep 不会产生将 WSUnicodeContainer 对象作为一个参数传递给函数的代码.
  • WSTP 模板文件使用 wsprep 被转换成 C 代码. 可能的话,也会自动被 wscc 处理.

范例

基本范例  (1)

名为 f 的函数模板文件输入:接受2个整数作为自变量,返回一个整数:

:Begin:
:Function:        f
:Pattern:        f[x_Integer, y_Integer]
:Arguments:        {x, y}
:ArgumentTypes:    {Integer, Integer}
:ReturnType:    Integer
:End: