🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.lang.c
Article #15530

Re: alignements struct/tableaux

#15530
From: Pierre Habouzit
Date: Sun, 18 Sep 2005 09:40
78 lines
4510 bytes
Harpo wrote:

> Pierre Habouzit wrote:
> 
> Merci pour l'explication, je crois avoir compris jusqu'ici.
> 
>> mais du coup, vu que je ne peux garantir que scratch coincide avec la
>> deuxi�me case du tablea __bufs, je me suis r�sign� � avoir comme type
>> pour mes messages :
>> 
>> struct message {
>>     [ ... pleins de choses dont pas mal de 'headers' ...];
> 
> Je ne comprends plus � partir d'ici.
> 
>>     struct {
>>         const blob_t *original;
>>         blob_t *scratch;
>>     };
> 
> Pourquoi garder la structure au dessus, et -peut-�tre suis-je mal
> r�veill�- comment y acc�der sans la nommer ?

bah tu peux y acc�der par hdr->scratch.

>>     blob_t *__bufs[2];
>> 
>>     [ ... encore pleins de choses ...];
>> };
>> 
>> ce qui me force � maintenir l'invariant __bufs[0] == original et
>> __bufs[1]==scratch � la main, mais vu que ces pointeurs changent peu,
>> c'est pas trop g�nant pour moi, et autant je ne voulais pas perdre la
>> taille d'un pointeur en plus dans mes headers vu que j'en ai beaucoup
>> et que j'avais d�j� des champs de bits, mais perdre 16 octets dans la
>> structure de message n'est pas trop g�nant. (enfin 16 ou plutot
>> sizof(blob_t*)*2)
> 
> Ou 8 suivant la taille du pointeur.
> Mais je n'en vois pas l'inter�t.
> 
> Pourquoi cela au-dessous ne suffirait-il pas ? :
> 
> struct message {
>     [ ... pleins de choses dont pas mal de 'headers' ...];
>     blob_t *__bufs[2];
>     [ ... encore pleins de choses ...];
> };

parce que lorsque je code et que j'utilise ma structure de message, je ne
veux pas passer par __bufs et �crire des msg->__bufs[0] ou msg->__bufs[1]
et me souvenir lorsque je code que __bufs[0] est mon buffer originel, et
bufs[1] celui o� je fait mes modifs.

Dans mon module C je veux utiliser msg->original et msg->scratch qui eux
sont clairs, et en plus comme original a un const en plus, il m'�vite la
b�tise d'aller le modifier si je ne suis plus tr�s r�veill�.


> De plus, je ne vois pas l'int�r�t d'�loigner le bit modified du tableau
> de pointeurs en le mettant dans un (ou des) header, puisque le fait que
> le buffer soit modifi� semble d�pendre du message et non de ces
> headers.
> Mais je n'ai peut-�tre pas tout compris.
sur ce point en effet. mon message est un message ressemblant � un mail (en
fait c'est pas trop ca, mais ca se comporte pareil). Je fais une lib pour
manipuler ces messages, et des fois je vais changer *quelques* headers. Or
je ne veux pas dupliquer toutes les infos, et si je change un header, je
vais positionner son bit "modified", allouer la valeur du header dans le
blob scratch, et le segment auquel il fera r�f�rence sera non plus dans le
buffer originel, mais dans le buffer scratch.

mais pour autant, je ne modifie pas les autres headers qui eux r�f�rencent
toujours le buffer originel.
-- 
�O�  Pierre Habouzit
��O                                                madcoder@debian.org
OOO                                                http://www.madism.org
Technical Details
Message-ID: <432d35cb$0$9448$626a14ce@news.free.fr>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!border1.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!nx01.iad01.newshosting.com!newshosting.com!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.icl.net!proxad.net!infeed-1.proxad.net!news12-e.free.fr!not-for-mail
References: <432c52d5$0$9425$626a14ce@news.free.fr> <mn.8cb87d59c7031bee.15512@YOURBRAnoos.fr> <432c688a$0$14382$626a14ce@news.free.fr> <432c6c63$0$17061$8fcfb975@news.wanadoo.fr> <432c77ed$0$12670$626a14ce@news.free.fr> <432d0eca$0$5402$8fcfb975@news.wanadoo.fr>

Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,2ab126dba8e5e645
X-Google-Attributes: gidf9822,public
X-Google-Language: FRENCH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!border1.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!nx01.iad01.newshosting.com!newshosting.com!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.icl.net!proxad.net!infeed-1.proxad.net!news12-e.free.fr!not-for-mail
Message-ID: <432d35cb$0$9448$626a14ce@news.free.fr>
From: Pierre Habouzit <madcoder@debian.org>
Subject: Re: alignements struct/tableaux
Newsgroups: fr.comp.lang.c
Date: Sun, 18 Sep 2005 11:40:18 +0200
References: <432c52d5$0$9425$626a14ce@news.free.fr> <mn.8cb87d59c7031bee.15512@YOURBRAnoos.fr> <432c688a$0$14382$626a14ce@news.free.fr> <432c6c63$0$17061$8fcfb975@news.wanadoo.fr> <432c77ed$0$12670$626a14ce@news.free.fr> <432d0eca$0$5402$8fcfb975@news.wanadoo.fr>
User-Agent: KNode/0.9.2
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: 8Bit
X-Face: $(^e[V4D-[`f2EmMGz@fgWK!e.B~2g.{08lKPU(nc1J~z\4B>*JEVq:E]7G-\6$Ycr4<;Z!|VY6Grt]+RsS$IMV)f>2)M="tY:ZPcU;&%it2D81X^kNya0=L]"vZmLP+UmKhgq+u*\.dJ8G!N&=EvlD
Lines: 78
Organization: Guest of ProXad - France
NNTP-Posting-Date: 18 Sep 2005 11:39:23 MEST
NNTP-Posting-Host: 82.225.205.10
X-Trace: 1127036363 news12-e.free.fr 9448 82.225.205.10:36606
X-Complaints-To: abuse@proxad.net