2010-04-26 66 views
5

在nautilus-python綁定中,有一個文件「nautilus.defs」。它包含諸如Python/C「defs」文件 - 它是什麼?

(define-interface MenuProvider 
    (in-module "Nautilus") 
    (c-name "NautilusMenuProvider") 
    (gtype-id "NAUTILUS_TYPE_MENU_PROVIDER") 
) 

(define-method get_mime_type 
    (of-object "NautilusFileInfo") 
    (c-name "nautilus_file_info_get_mime_type") 
    (return-type "char*") 
) 

節現在我可以看到大多數的這些做(例如,是最後一個意味着我可以調用該方法「get_mime_type」上「的FileInfo」對象)。但是我想知道:這個文件是什麼,完全(即,我在網上搜索瞭解更多信息)?在Python/C綁定中找到常見的東西?什麼是格式,它在哪裏記錄?什麼程序實際上處理它?

(到目前爲止,我已經成功地蒐集它得到transformed into a C source file,它看起來有點像口齒不清給我。)

回答

3

回答你的「什麼程序實際處理它?」問題:

Makefile.insrc目錄中,將.defs文件轉換爲C的命令是PYGTK_CODEGEN。要找出PYGTK_CODEGEN是,看在頂層configure.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) 

這樣處理它被稱爲codegen.py一個Python腳本,,顯然有一些PyGTK鏈接程序。現在谷歌搜索PyGTK codegen給我this link作爲第一個命中,它說:

「PyGTK-Codegen是一個系統,用於自動生成用於連接GTK代碼與Python的包裝。

也給出了一些例子。

至於:「什麼是格式,它在哪裏記錄?」。正如其他人所說,代碼看起來很像簡單的Scheme。我在PyGTK網站上找不到關於codegen的任何文檔;這看起來像是開源的許多黑暗角落之一,沒有很好的文檔記錄。你最好的選擇可能是下載一個最近的壓縮包PyGTK,查看codegen.py文件的來源,看看文件本身是否包含足夠的文檔。

+0

Safyan的答案也很好,但我讚賞演繹分類:) – detly 2010-04-26 09:52:55

3

所有你需要創建一個Python綁定C代碼是使用Python/C API。但是,API可能有點重複和冗餘,因此可能會使用各種形式的自動化來創建它們。例如,您可能聽說過swig。您看到的類似於LISP(Scheme)的代碼只是PyGTK-Codegen的配置文件,它是用於創建與Python綁定的類似自動化程序。

相關問題