[Pythonjp-checkins] [python-doc-ja] 2 new revisions pushed by cocoa****@gmail***** on 2011-06-11 13:59 GMT

Back to archive index

pytho****@googl***** pytho****@googl*****
2011年 6月 11日 (土) 22:59:42 JST


2 new revisions:

Revision: 1a17b8fe9dba
Author:   cocoatomo <cocoa****@gmail*****>
Date:     Sat Jun 11 06:58:26 2011
Log:      extending/extending.rst translation completed
http://code.google.com/p/python-doc-ja/source/detail?r=1a17b8fe9dba

Revision: 9ed27d6ea4a6
Author:   cocoatomo <cocoa****@gmail*****>
Date:     Sat Jun 11 06:58:57 2011
Log:      merged
http://code.google.com/p/python-doc-ja/source/detail?r=9ed27d6ea4a6

==============================================================================
Revision: 1a17b8fe9dba
Author:   cocoatomo <cocoa****@gmail*****>
Date:     Sat Jun 11 06:58:26 2011
Log:      extending/extending.rst translation completed
http://code.google.com/p/python-doc-ja/source/detail?r=1a17b8fe9dba

Modified:
  /extending/extending.rst

=======================================
--- /extending/extending.rst	Tue May  3 06:18:14 2011
+++ /extending/extending.rst	Sat Jun 11 06:58:26 2011
@@ -16,6 +16,11 @@

  拡張モジュールのコンパイル方法は、モジュールの用途やシステムの設定方法に依 
存します; 詳細は後の章で説明します。

+もし C ライブラリ関数やシステムコールを呼び出すような使い方を考えているな 
ら、
+C のコードをいちいち書く前に :mod:`ctypes` モジュールの使用を検討してくださ 
い。
+:mod:`ctypes` モジュールを使うと C のコードを扱う Python のコードが書けるよ 
うになるだけでなく、
+拡張モジュールを書きコンパイルして CPython に縛られてしまうよりも Python の 
実装間での互換性を高めることができます。
+

  .. _extending-simpleexample:

@@ -37,9 +42,12 @@

     #include <Python.h>

-これで、Python API を取り込みます (必要なら、モジュールの用途に関する説明 
や、著作権表示を追加します)。 Python
-は、システムによっては標準ヘッダの定義に影響するようなプリプロセッサ定義を 
行っているので、 :file:`Python.h` は
-いずれの標準ヘッダよりも前にインクルードせねばなりません。
+これで、Python API を取り込みます (必要なら、モジュールの用途に関する説明 
や、著作権表示を追加します)。
+
+.. note::
+
+   Python は、システムによっては標準ヘッダの定義に影響するようなプリプロセ 
ッサ定義を行っているので、 :file:`Python.h` を
+   いずれの標準ヘッダよりも前にインクルード *せねばなりません* 。

  :file:`Python.h` で定義されているユーザから可視のシンボルは、全て接頭辞  
``Py`` または ``PY`` が付いています。ただし、
  標準ヘッダファイル内の定義は除きます。簡単のためと、Python 内で広範に使うこ 
とになるという理由から、 ``"Python.h"``
@@ -174,8 +182,25 @@
  もし :c:data:`SpamError` がぶら下がりポインタになってしまうと、 C コードが 
例外を送出しようとしたときにコアダンプや意図しない副作用を
  引き起こすことがあります。

-この例にある、関数の戻り値型に PyMODINIT_FUNC の使う方法については後で議論 
します。
-
+この例にある、関数の戻り値型に ``PyMODINIT_FUNC`` を使う方法については後で 
議論します。
+
+:cfunc:`PyErr_SetString` を次のように呼び出すと、拡張モジュールで例 
外 :exc:`spam.error` を送出することができます::
+
+   static PyObject *
+   spam_system(PyObject *self, PyObject *args)
+   {
+       const char *command;
+       int sts;
+
+       if (!PyArg_ParseTuple(args, "s", &command))
+           return NULL;
+       sts = system(command);
+       if (sts < 0) {
+           PyErr_SetString(SpamError, "System command failed");
+           return NULL;
+       }
+       return PyLong_FromLong(sts);
+   }

  .. _backtoexample:

@@ -1032,16 +1057,23 @@
     static int
     import_spam(void)
     {
-       PyObject *module = PyImport_ImportModule("spam");
-
-       if (module != NULL) {
-           PyObject *c_api_object =  
PyObject_GetAttrString(module, "_C_API");
-           if (c_api_object == NULL)
-               return -1;
-           if (PyCObject_Check(c_api_object))
-               PySpam_API = (void **)PyCObject_AsVoidPtr(c_api_object);
-           Py_DECREF(c_api_object);
-       }
+       PyObject *c_api_object;
+       PyObject *module;
+
+       module = PyImport_ImportModule("spam");
+       if (module == NULL)
+           return -1;
+
+       c_api_object = PyObject_GetAttrString(module, "_C_API");
+       if (c_api_object == NULL) {
+           Py_DECREF(module);
+           return -1;
+       }
+       if (PyCObject_Check(c_api_object))
+           PySpam_API = (void **)PyCObject_AsVoidPtr(c_api_object);
+
+       Py_DECREF(c_api_object);
+       Py_DECREF(module);
         return 0;
     }


==============================================================================
Revision: 9ed27d6ea4a6
Author:   cocoatomo <cocoa****@gmail*****>
Date:     Sat Jun 11 06:58:57 2011
Log:      merged
http://code.google.com/p/python-doc-ja/source/detail?r=9ed27d6ea4a6




Pythonjp-checkins メーリングリストの案内
Back to archive index