🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #60148

Re: Pogaduchy o językach (było coś o dużej silni)

#60148
From: Marcin 'Qrczak' Kowalczyk
Date: Sat, 05 Nov 2005 22:32
26 lines
3165 bytes
Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl> writes:

> Pojawił się w dwóch miejscach const void *, bo w oryginalnym programie
> typ jest różny w zależności od decyzji podjętej przez CaseMatcher, ale
> zawsze w obu miejscach zgodny. To jest swoją drogą ciekawy przykład,
> kiedy statyczne typy przeszkadzają.

To nie takie proste. W jednym przypadku pod tym const void * ma być
const QExpr *, a w drugim list<const QExpr *>. Tego drugiego nie można
więc przekazywać przez wartość (jak założyłem o innych listach), bo
typ tej wartości nie jest znany statycznie. Skoro trzymamy listę za
wskaźnik na dynamicznie zaalokowany obiekt, to ktoś go kiedyś będzie
musiał zwolnić. Obiekt jest używany w każdej iteracji pętli, więc
nie można go zwolnić przy okazji użycia - nie wiadomo, które będzie
ostatnie.

Jedno z rozwiązań: case_matcher zwraca cztery funkcje, a nie trzy.
Czwarta zwalnia pamięć i jest wołana raz za pętlą.

Inne rozwiązanie: włożyć tego const QExpr * do jednoelementowej listy.
Wtedy typ będzie zawsze listą.

-- 
   __("<         Marcin Kowalczyk
   \__/       qrczak@knm.org.pl
    ^^     http://qrnik.knm.org.pl/~qrczak/
Technical Details
Message-ID: <878xw27mjw.fsf@qrnik.zagroda>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!wsisiz.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
References: <djfrn5$i55$1@nemesis.news.tpi.pl> <djq3rj$4fm$1@sunnews.cern.ch> <87y84fz1bn.fsf@qrnik.zagroda> <djqg9q$1sg$1@sunnews.cern.ch> <87ll0ezpyl.fsf@qrnik.zagroda> <djsle0$q36$1@sunnews.cern.ch> <877jbx7q2t.fsf@qrnik.zagroda> <dk4n41$aue$1@sunnews.cern.ch> <87vezdanl0.fsf@qrnik.zagroda> <dk9su1$6su$1@sunnews.cern.ch> <87k6fqeq35.fsf@qrnik.zagroda> <dkcps0$2vq$1@sunnews.cern.ch> <slrndmk3v4.p01.jajcus@serwis2.beta> <dkd731$2u6$1@sunnews.cern.ch> <87psphsc6n.fsf@qrnik.zagroda> <dkf5da$d8g$1@sunnews.cern.ch> <87mzkk8xc0.fsf@qrnik.zagroda> <dkfmp9$msh$1@sunnews.cern.ch> <87ek5wt6iw.fsf@qrnik.zagroda> <dkj057$2bj$1@sunnews.cern.ch> <87mzkihhww.fsf@qrnik.zagroda>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!wsisiz.edu.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
From: Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl>
Newsgroups: pl.comp.os.linux.programowanie
Subject: Re: Pogaduchy o językach (było coś o
 dużej silni)
Supersedes: <87k6fmsppn.fsf@qrnik.zagroda>
Date: Sat, 05 Nov 2005 23:32:51 +0100
Organization: Klub Nieszkodliwych Manjaków
Lines: 26
Message-ID: <878xw27mjw.fsf@qrnik.zagroda>
References: <djfrn5$i55$1@nemesis.news.tpi.pl> <djq3rj$4fm$1@sunnews.cern.ch> <87y84fz1bn.fsf@qrnik.zagroda> <djqg9q$1sg$1@sunnews.cern.ch> <87ll0ezpyl.fsf@qrnik.zagroda> <djsle0$q36$1@sunnews.cern.ch> <877jbx7q2t.fsf@qrnik.zagroda> <dk4n41$aue$1@sunnews.cern.ch> <87vezdanl0.fsf@qrnik.zagroda> <dk9su1$6su$1@sunnews.cern.ch> <87k6fqeq35.fsf@qrnik.zagroda> <dkcps0$2vq$1@sunnews.cern.ch> <slrndmk3v4.p01.jajcus@serwis2.beta> <dkd731$2u6$1@sunnews.cern.ch> <87psphsc6n.fsf@qrnik.zagroda> <dkf5da$d8g$1@sunnews.cern.ch> <87mzkk8xc0.fsf@qrnik.zagroda> <dkfmp9$msh$1@sunnews.cern.ch> <87ek5wt6iw.fsf@qrnik.zagroda> <dkj057$2bj$1@sunnews.cern.ch> <87mzkihhww.fsf@qrnik.zagroda>
NNTP-Posting-Host: paf87.warszawa.sdi.tpnet.pl
Mime-Version: 1.0
X-Trace: atlantis.news.tpi.pl 1131229980 23060 217.96.225.87 (5 Nov 2005 22:33:00 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Sat, 5 Nov 2005 22:33:00 +0000 (UTC)
X-Face: .B/ouEO}=VFkSJWE}s0@!:diHI.Z,<Ilt`:~@*]7rnn^K_y"XV8AXf^E)x*|3yVg:$FCq0Y )iGn@Z[SOA<+p}TkAv'Lzu$w{z2?F);0Xt>`m}AqK#Vjuscq(Vf1B}H[)v\9tBN}>AdP,QSRbhO]=v 3?;I+cN/Z0HKPm_Eg99/pFrU!WfpjgQ!z":>A~qt0^4):0-UuPB(6^>j!mN$)RIb)rRhXeK:+MLPW[ RVb7Kepvby-ww6_zci7Yy_@IrWW
User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux)
Cancel-Key: sha1:zlGZnQ7VSzbKUy1K/gJg0MTtQbg=
Cancel-Lock: sha1:rk+UAieheDGVUHS/P5mfndI9igA=
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit