On 2007.03.04 at 21:37:55 +0300, Pechnikov Alexey wrote: > В сообщении от Воскресенье 04 марта 2007 21:25 Victor Wagner написал(a): > > Подозреваю, что правильным способом решения проблемы будет потратить > > неделю на дизайн и реализацию красивых и удобных биндингов Tcl к > > нижележащей C-шной библиотеке. (Правда, до этого придется потратить > > время на понимание того, а как вообще это следует делать). > > Можно пояснить, что следует делать? Есть исходники для mapserver-cgi, нужно > сделать tcl-mapscript - следует ли копать сишный код на предмет написания > функций для вызова из tcl или нужно писать тиклевский код для вызова > немодифицированных сишных функций? В принципе, сишный код вобрал в себя > множество проектов, таких, как shapelib и другие, да еще вызывает функции из > GDAL, proj (ну уж не говорю про gd) - что делать со всем этим хозяйством? > Оставлять вызовы в сишном коде или реализовывать на уровне tcl? То есть тикль > сам умеет с графикой управляться, вероятно, можно не таскать привязки к > libtiff, libpng, gd и прочие, но я не знаю, как это должно выглядеть на > практике. Начать надо с того, что представить себе, как бы должен был выглядеть идеальный проблемно-ориентированный язык для работы с картами. Естественно, опираясь при этом на синтаксис Tcl (рекомендую посматривать в сторону Tk и встроенных команд вроде file), и возможности вышеперечисленных библиотек.
Т.е. какие должны быть псевдообъекты (наподобие file handles в Tcl и Tk-шных widget-ов), какие команды и субкоманды. Далее, посмотреть, к каким из вышеперечисленных библиотек уже есть приличные Tcl-биндинги. Я точно знаю, например, что существует tclgd. И что расширение Img умеет работать с tiff, png etc. Далее следует решить какую функциональность мы можем написать на Tcl, а какую лучше реализовывать на C. Крайне рекомендую оформлять написанные на C команды Tcl, в стиле, характерном для встроенных команд Tcl, а не делать их прямым мэппингом C-шных процедур. API Tcl предназначенный для написания на C команд достаточно простой и удобный. Им стоит пользоваться. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

