Как обернуть указатель void* в объект TCL

Я пытаюсь сохранить указатель void* (или любой другой указатель) в объект tcl, чтобы я мог получить его позже. Я видел, как SWIG преобразовывал его в строку с некоторой кодировкой, а затем декодировал ее. Но чтобы сделать его более эффективным, я хочу напрямую вводить указатель в объект tcl и из него. Что-то вроде Tcl_GetPointerFromObj(). Есть ли способ это сделать? Нужно ли копаться в структуре Tcl_Obj и делать какую-то грязную работу?


c tcl
person Terry Shi    schedule 06.10.2010    source источник


Ответы (3)


Я предлагаю прочитать эту страницу в Wiki Tcler, которая посвящена теме.

person Donal Fellows    schedule 06.10.2010

Вы можете использовать Tcl_RegisterObjType, чтобы создать новый тип объекта Tcl, который содержит пустой указатель. Это позволяет вам расширить Tcl, чтобы Tcl_ObjType можно было использовать для хранения (в вашем случае) void* и иметь возможность писать Tcl_GetPointerfromObj.

person Jackson    schedule 07.10.2010

Вы можете использовать Tcl API: Tcl_GetWideIntFromObj(), хотя я думаю, что хранение указателей в Tcl — это первый шаг к безумию....

person Trey Jackson    schedule 06.10.2010
comment
Использование большого int кажется слишком опасным, я не буду рисковать... Я хочу иметь гибкость и скорость, так что это единственный способ. - person Terry Shi; 08.10.2010