Автор Гілка: Python 2 to 3 C API  (Прочитано 2912 раз)

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Python 2 to 3 C API
« : 2012-03-13 19:22:50 »
Те, що є тепер:
http://docs.python.org/release/2.7/c-api/file.html
жахіття, яке пропонує команда розробників Python 3:
http://docs.python.org/release/3.0.1/c-api/file.html
Не зрозуміло з якого дива розробники ніби кросплатформової мови раптом перейшли на файлові дескриптори? Збільшення продуктивності це явно не дасть, а от написати обгортку для функції, яка використовує FILE* стане явно проблематично. Крім того не зрозуміло з якого дива можна додуматись прибрати такі важливі функції, як PyFile_Check та PyFile_CheckExact ? Без них же взагалі не можливо написати функцію, яка використовує файловий об'єкт (ну хіба працюватиме на удачу: або сегфолт, або корисна дія).
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній Re.

  • Загальний модератор
  • Літератор
  • *****
  • дописів: 1898
  • Карма: +1/-0
Re: Python 2 to 3 C API
« Відповідей #1 : 2012-03-13 21:24:13 »
PyFile_Check та PyFile_CheckExact ? Без них же взагалі не можливо написати функцію, яка використовує файловий об'єкт (ну хіба працюватиме на удачу: або сегфолт, або корисна дія).
Це вам справді тре?
Спробуйте:
   extern PyTypeObject PyIOBase_Type;
    if(PyObject_IsInstance(obj, (PyObject *)&PyIOBase_Type) )

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Python 2 to 3 C API
« Відповідей #2 : 2012-03-16 09:45:00 »
Воно може й працює, але ж тон не хороший.
PyFile_Check - інтуїтивно зрозуміло і коротко.
В даному випадку простіше зробити так само, як робить SWIG: забути про FILE* взагалі.
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.