🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Mechanizm stubs

#304
From: Wojciech Kocjan
Date: Tue, 10 Jan 2006 11:17
43 lines
2919 bytes
On Tue, 10 Jan 2006 09:52:59 +0100, Googie <no@spam.org> wrote:

> W wątku o libgg Wojciech K. wspomniał o stubs'ach. Przy okazji pisania  
> rozszerzeń spotykałem się z tym zagadnieniem i próbowałem je zrozumieć,  
> ale dokumentacja na ten temat jest dla mnie niezrozumiała.

Fakt, też długo nie rozumiałem.

> Wiem, że pozwala on (mechanizm) na używanie danego rozszerzenia w  
> postaci binarnej, z różnymi wersjami Tcl zainstalowanymi u różnych osób  
> (nie koniecznie takimi samymi jak wersja, z którą zostało to  
> rozszerzenie skompilowane), czyli "Tcl version-independent". Wiem też że  
> w dalszej analizie można dzięki temu pisać rozszerzenia, które można  
> potem skompilować i używać na różnych Linuksach bez potrzeby  
> rekompilowania, na różnych BSD, itd (statyczne linkowanie z innymi  
> bibliotekami, których używa rozszerzenie).

Założenie jest takie, że Tcl_InitStubs pobiera z Tcl_Interp wskaźnik do  
struktury, która wskazuje na wszystkie funkcje Tcl. Podobnie z Tk. Nie  
musisz łączyć z konkretnym libtcl*.so. To dobre, bo np zlinkowanie  
-ltcl8.3 nie zadziała z 8.4, a stubs pozwala zlinkować z każdą wersją.

Jeśli chodzi o wykorzystanie to -DUSE_TCL_STUBS, w *_Init i *_SafeInit  
robisz Tcl_InitStubs (przykład w tclgg) i potem już niczym się to nie  
różni. Jedyny minus - nie możesz linkować wewnętrznych funkcji Tcl, ale to  
zrozumiałe, że tego się nie powinno robić (jedynie BLT to robi i dlatego  
jest linczowane często :-) ...

> Czyli ostatecznie - jest sens, żeby takie rozszerzenie wsadzać do  
> starkit'a i w takiej postaci rozprowadzać.
>
> Nie rozumiem tylko na jakiej zasadzie to działa i dlaczego implementacja  
> stubs wygląda (IMO) tak dziwacznie? Aha - i czy te deklaracje w nagłówku  
> to wszystko co trzeba zrobić, żeby w pełni zaimplementować stubs?

Dlaczego dziwacznie?

> Będę wdzięczny za wyjaśnienia :)

Jak nadal nie rozumiesz to znasz moje gg i tclgg :-)

-- 
WK
Technical Details
Message-ID: <op.s25tm2gxvty0o5@awk009-01.lab1.mpsc.mot.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.silweb.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
References: <dpvs5g$lji$1@srv.cyf-kr.edu.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.silweb.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
From: "Wojciech Kocjan" <hceijcow.backward@najcok.backward.org>
Newsgroups: pl.comp.lang.tcl
Subject: Re: Mechanizm stubs
Date: Tue, 10 Jan 2006 12:17:16 +0100
Organization: tp.internet - http://www.tpi.pl/
Lines: 43
Message-ID: <op.s25tm2gxvty0o5@awk009-01.lab1.mpsc.mot.com>
References: <dpvs5g$lji$1@srv.cyf-kr.edu.pl>
NNTP-Posting-Host: dq2.dataquest.pl
Mime-Version: 1.0
X-Trace: nemesis.news.tpi.pl 1136891910 21542 195.116.54.236 (10 Jan 2006 11:18:30 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Tue, 10 Jan 2006 11:18:30 +0000 (UTC)
User-Agent: Opera M2/8.50 (Win32, build 7700)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit