🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.tcl
Article #270

Re: libgg a tcl

#270
From: Googie
Date: Wed, 11 Jan 2006 07:47
48 lines
2599 bytes
Derek Kuliński / takeda wrote:
> Właśnie, mógłbyś napisać coś więcej o tym Swig'u?

Tworzy gotowy kod C do skompilowania i zlinkowania z "wrappowaną" 
biblioteką. Potem można to załadować w Tcl i używać funkcji 
zwrappowanych. Jest to proste, ale niestety nieefektywne, bo np:

struct jakas_struktura
{
     int a;
     char* b;
     double c;
}

Stworzy w interpreterze Tcl komendę 'jakas_struktura' i metody dla tej 
struktury: get_a, set_a, get_b, set_b, get_c, set_c (nie pamietam 
dokladnie nazw getterow i setterow, ale z grubsza o to chodzi) i jeśli 
jakaś metoda korzysta z tej struktury, powiedzmy:

komenda <argument tej struktury>

to trzeba w Tclu pisać:

jakas_struktura s
s set_a 325
s set_b "hsfh"
s set_c 345.4567
komenda s

Wiec nie jest to zbyt wygodne. Zaletą jest fakt, że swig generuje od 
razu sprawdzanie typów (czyli jeśli komenda otrzyma coś innego niż 
jakas_struktura, to wyrzuci błąd).

Inną zaletą swig'a jest to, że obsługuje też IncrTcl - generuje od razu 
klasy Itcl dla klas C++.

Kiedyś chciałem zrobić bindy Qt dla Tcl'a przy pomocy swiga, ale 
niestety Qt jest zbyt zaawansowaną biblioteką, trzeba by skrupulatnie 
pisać interfejsy (próbowałem po prostu przelecieć wszystkie nagłówki 
swig'iem, jak leci - były błędy :) ). Natomiast udało mi się bez 
problemów zrobić bindy do libaa, libcaca, oraz libSDL (w tym SDL_mixer, 
SDL_ttf i jakieś tam inne jeszcze), tyle że uznałem że takie interfejsy 
są bez sensu - wytłumaczyłem to powyżej - za dużo kodu Tcl trzeba pisać. 
Tcl to nie C/C++, Tcl ma być szybki i wygodny :)

-- 
Pozdrawiam!
Googie
Technical Details
Message-ID: <dq2cm7$l26$1@srv.cyf-kr.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.cyf-kr.edu.pl!not-for-mail
References: <15ap42hnax7z6$.dlg@takeda.tk.invalid> <dpvmut$j2m$1@srv.cyf-kr.edu.pl> <y6jrt3zhm1uk.dlg@takeda.tk.invalid>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.cyf-kr.edu.pl!not-for-mail
From: Googie <no@spam.org>
Newsgroups: pl.comp.lang.tcl
Subject: Re: libgg a tcl
Date: Wed, 11 Jan 2006 08:47:18 +0100
Organization: Academic Computer Center CYFRONET AGH
Lines: 48
Message-ID: <dq2cm7$l26$1@srv.cyf-kr.edu.pl>
References: <15ap42hnax7z6$.dlg@takeda.tk.invalid> <dpvmut$j2m$1@srv.cyf-kr.edu.pl> <y6jrt3zhm1uk.dlg@takeda.tk.invalid>
NNTP-Posting-Host: ip-7-197.ists.pl
Mime-Version: 1.0
X-Trace: srv.cyf-kr.edu.pl 1136965127 21574 193.25.7.197 (11 Jan 2006 07:38:47 GMT)
X-Complaints-To: news@cyf-kr.edu.pl
NNTP-Posting-Date: Wed, 11 Jan 2006 07:38:47 +0000 (UTC)
User-Agent: Mozilla Thunderbird 1.0.6 (Windows/20050716)
X-Accept-Language: en-us, en
In-Reply-To: <y6jrt3zhm1uk.dlg@takeda.tk.invalid>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit