Re: Конвертация внутреннего представления переменных в Tcl
On 2009.10.08 at 22:38:55 +0400, Alexey Pechnikov wrote:
> > (благо, и поле typePtr в Tcl_Obj, и поле name в Tcl_ObjType -
> > документировано)
>
> Ситуация как раз в том, что апстрим sqlite делает именно проверку по
> obj->typePtr->name
> В итоге оказывается, что один и тот же тиклевский код из скрипта
> и в tclsh шелле дает _разный_ результат:
>
> ========================
> $ tclsh8.5 /tmp/test
> 1.0 ERROR integer!=text
> 1.1 OK
> 1.2 ERROR 1!=
> 1.3 OK
> 1.4 OK
>
А вот тут НЕ НАДО делать проверку. Благо требуемый тип известен.
Надо не проверять, а пытаться преобразовать данные к требуемому типу.
И ругаться только если не получилось.
Соответствено, Tcl_GetWideIntFromObj.
При этом таблица преобразований должна быть не тикловая внутренняя,
поскольку никто не обещал, что завтра внутреннее представление
integer не поменяют на несовместимое с нужным тебе, а своя собственная,
использующая для преобразования Tcl_Get*FromObj. Поскольку у них тип
результата документирован.
Reply to: