Hello!

В tcl-расширении потребовалось определить тип данных в 
переменной, что реализуется проверкой возвращаемого значения 
функции Tcl_ConvertToType(interp, objPtr, typePtr)
Даже если текущее представление строковое, но допустимо, 
например, булевое представление, нужно именно последнее
(в худшем случае заберем строковое или bytearray значение).
Вот только typePtr, например, &tclBooleanType, определены 
в tclObj.c

Например, так

Tcl_ObjType tclBooleanType = {
    "booleanString",                    /* name */
    NULL,                               /* freeIntRepProc */
    NULL,                               /* dupIntRepProc */
    NULL,                               /* updateStringProc */
    SetBooleanFromAny                   /* setFromAnyProc */
};

В свою очередь, функция SetBooleanFromAny объявлена в
этом же tclObj.c

Вопрос: каким образом в расширении выполнить конвертацию
типа данных переменной, не таская с собой все исходники Tcl?

Best regards, Alexey Pechnikov.
http://pechnikov.tel/

Ответить