Как я могу научить Tcl автоматически печатать мой объект с помощью предоставленного мной процесса? - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть объект, который Tcl показывает в консоли как его идентификатор объекта. Как я могу расширить Tcl так, чтобы всякий раз, когда объекты моего типа печатались, автоматически вызывался специальный процесс, который я предоставляю для печати их содержимого вместо того, чтобы просто указывать идентификатор объекта?

Еще несколько подробностей: я эмулирую список списков в Tcl, который составлен из cons-ячеек, в каждой из которых есть машина и CDR. Список 1 "два" 3 будет создан с помощью:

(cons 1 (cons "two" (cons 3 nil)))

, что создает 3 против клетки. Верхняя консорная ячейка, в которой есть 1 в своем автомобиле, имеет указатель на вторую консольную ячейку, в которой есть «два» в ее автомобиле и т. Д.

С этим представлением я хочу, чтобы вышеприведенный список образцов распечатался как:

(1 "two" 3)

1 Ответ

2 голосов
/ 02 декабря 2010

Полагаю, вы работаете на уровне C.По сути, вы регистрируете функцию для этого в вашей структуре Tcl_ObjType, в поле updateStringProc.Ваша функция должна будет произвести строковый рендеринг вашего общего значения (хранится в ckalloc ed строке в bytes поле Tcl_Obj);как это сделать, решать только вам.

...