Python/C"defs"文件 - 它是什么?

det*_*tly 5 c python

在nautilus-python绑定中,有一个文件" nautilus.defs ".它包含类似的节

(define-interface MenuProvider
  (in-module "Nautilus")
  (c-name "NautilusMenuProvider")
  (gtype-id "NAUTILUS_TYPE_MENU_PROVIDER")
)
Run Code Online (Sandbox Code Playgroud)

要么

(define-method get_mime_type
  (of-object "NautilusFileInfo")
  (c-name "nautilus_file_info_get_mime_type")
  (return-type "char*")
)
Run Code Online (Sandbox Code Playgroud)

现在我可以看到其中大部分内容(例如,最后一个意味着我可以在"FileInfo"对象上调用方法"get_mime_type").但我想知道:这个文件是什么,确切地说(即我在网上搜索什么来查找更多信息)?在Python/C绑定中找到它是常见的吗?什么是格式,它在哪里记录?什么程序实际处理它?

(到目前为止,我已经设法收集到它被转换为C源文件,它看起来有点像lisp给我.)

Mar*_*son 3

回答你的“什么程序实际处理它?” 问题:

Makefile.in在目录中,将文件转换为 C 的src命令是. 要了解具体内容,请查看顶级文件,其中包含以下行:.defsPYGTK_CODEGENPYGTK_CODEGENconfigure.in

AC_MSG_CHECKING(for pygtk codegen)
PYGTK_CODEGEN="$PYTHON `$PKG_CONFIG --variable=codegendir pygtk-2.0`/codegen.py"
AC_SUBST(PYGTK_CODEGEN)
AC_MSG_RESULT($PYGTK_CODEGEN)
Run Code Online (Sandbox Code Playgroud)

因此,处理它的程序是一个名为 codegen.py 的 Python 脚本,它显然与PyGTK. 现在,谷歌搜索PyGTK codegen给了我这个链接作为第一个点击,其中写着:

“PyGTK-Codegen 是一个自动生成包装器的系统,用于将 GTK 代码与 Python 连接起来。”

并还给出了一些例子。

至于:“格式是什么,它记录在哪里?”。正如其他人所说,代码看起来很像简单的方案。codegen我在 PyGTK 网站上根本找不到任何文档;这看起来像是开源的许多黑暗角落之一,没有得到很好的记录。您最好的选择可能是下载最新的 tarball PyGTK,查看codegen.py文件的源代码并查看文件本身是否包含足够的文档。