Jump to content
Korean Random
Pavel3333

PyCode_New() и globals

Recommended Posts

Первый вопрос касается создания код-объекта 

PyCodeObject *PyCode_New(int argcount, int nlocals, int stacksize, int flags, PyObject *code, PyObject *consts, PyObject *names, PyObject *varnames, PyObject *freevars, PyObject *cellvars, PyObject *filename, PyObject *name, int firstlineno, PyObject *lnotab)

В документации нет ни единого упоминания о том, какие аргументы скармливать этой функции. Вернее, что это вообще за аргументы. Начиная со stacksize.

Зачем мне это нужно? Чтобы создать функцию через 
 

PyObject* PyFunction_New(PyObject *code, PyObject *globals)

Кстати, отсюда же второй вопрос - откуда взять globals.

 

Зачем мне нужна функция на уровне Си?
Я хочу подписаться на событие на уровне Си. Есть функция:
 

static PyObject* inject_handle_key_event(PyObject *self, PyObject *args) {
	//do something
	Py_RETURN_NONE;
};

Если попытаться на уровне Си подписаться на событие (InputHandler.g_instance.onKeyDown.__iadd__(inject_handle_key_event), только на Си), происходит вылет. Значит, нужно скармливать ей не PyCFunction, а PyFunctionObject. Из чего и возникают вопросы выше.

 

@Mixaill, прошу помощи!

PS: разобрался, спасибо за советы.

Edited by Pavel3333

Share this post


Link to post

Short link
Share on other sites

Для тех, кто с таким столкнется и зайдет на эту страницу: надо копать в Py_InitModule4. Конкретнее - PyCFunction_NewEx, недокументированной функции.

Edited by Pavel3333
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...