[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: