Я пытаюсь сохранить указатель void* (или любой другой указатель) в объект tcl, чтобы я мог получить его позже. Я видел, как SWIG преобразовывал его в строку с некоторой кодировкой, а затем декодировал ее. Но чтобы сделать его более эффективным, я хочу напрямую вводить указатель в объект tcl и из него. Что-то вроде Tcl_GetPointerFromObj(). Есть ли способ это сделать? Нужно ли копаться в структуре Tcl_Obj и делать какую-то грязную работу?
Как обернуть указатель void* в объект TCL
Ответы (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
Использование большого int кажется слишком опасным, я не буду рисковать... Я хочу иметь гибкость и скорость, так что это единственный способ.
- person Terry Shi; 08.10.2010