Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | JohnF <john@please.see.sig.for.email.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: packed structs |
| Date | 2012-09-24 11:04 +0000 |
| Organization | PANIX Public Access Internet and UNIX, NYC |
| Message-ID | <k3peo6$quh$1@reader1.panix.com> (permalink) |
| References | (3 earlier) <k3ne96$bja$1@dont-email.me> <k3o5mb$1ib$1@reader1.panix.com> <0.6562e3f0e92d8c6a2354.20120924015911BST.871uhs2q3k.fsf@bsb.me.uk> <k3oi08$14i$1@reader1.panix.com> <k3p8jm$vl5$1@dont-email.me> |
BartC <bc@freeuk.com> wrote:
> "JohnF" <john@please.see.sig.for.email.com> wrote
>> Ben Bacarisse <ben.usenet@bsb.me.uk> wrote:
>
>>> The main departure from pack/unpack is the lack of support for
>>> alternative byte orderings. As a result, I'm not sure it's all that
>>> close to either familiar "model".
>
>> It was primarily smemf()'s general idea I wanted to get across
>> by posting that comment block. Obviously, any shortcomings
>> in the specific functional details can be corrected and coded.
>> Of course, when I originally posted those comments, I wasn't
>> yet aware of python/perl pack and unpack. In that case, I could
>> have gotten across the general idea just by mentioning those.
>
> Actually this seems a much better idea to me now, than it did at first ...
> if you forget about the purpose of using it in place of C's packed structs.
>
> It's just an alternative, possibly simpler way of writing to a binary stream
> than trying to use -printf() functions, or sequences of function calls. And
> presumably to read from them too.
>
> But you didn't explain clearly how it would be used. In the GIF example,
> presumably you'd have an *unpacked* struct representing the header
> information, which allows the program to access fields, now properly
> aligned, using the conventional forms of 'p.a' or 'p->a'.
Well, you'd use it however you liked. But for my gif situation,
I'd envisioned >>doing away with structs entirely<<, packed or not.
The smemf >>format string totally replaces<< the need for any struct.
And, of course, I prototyped that for myself, i.e., wrote some
pseudocode using the as-yet-uncompleted smemf, just to make sure
that idea seems to work.
You can see exhaustively complete comments about the gif block
formats at forkosh.com/gifsave89.html by clicking the Listing link
along the left-hand side under "Related Pages", and scrolling down
to line#493 for the GIFIMAGEDESCRIP struct. My "pseudocode" for that
is just one smemf statement that totally replaces the struct,
nbitsinbuffer = /* whitespace in smemf format string is ignored */
smemf(buffer, " 2C %x " /* Image Descriptor identifier is hex 2C */
" %2ld" /* 2-byte little-endian word for X-pos */
" %2ld" /* 2-byte little-endian word for Top */
" %2ld" /* 2-byte little-endian word for Width */
" %2ld" /* 2-byte little-endian word for Height */
/* following is the "Packed" Byte consisting of five bit fields */
" %3b " /* 3-bits #colorbits */
" 0 %2b " /* 2-bits "reserved bits" */
" 0 %1b " /* 1-bit local colortable sort flag */
" 0 %1b " /* 1-bit interlace flag */
" %1b ", /* 1-bit local colortable flag */
col0,row0, ncols,nrows, ncolorbits, (colortable==NULL?0:1) );
And smemf() returns the size, in #bits, of the buffer it constructs.
That would usually be a multiple of 8, in which case you can just
fwrite(buffer,etc), or do whatever you want with it.
> smem() (and it's -scanf() counterpart) would simply be used to write to the
> proper packed form, or to read from it.
> So they are not a plug-in replacement for '#pragma pack()'.
--
John Forkosh ( mailto: j@f.com where j=john and f=forkosh )
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar
packed structs JohnF <john@please.see.sig.for.email.com> - 2012-09-22 01:54 +0000
Re: packed structs Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-09-21 23:22 -0400
Re: packed structs JohnF <john@please.see.sig.for.email.com> - 2012-09-22 06:37 +0000
Re: packed structs "BartC" <bc@freeuk.com> - 2012-09-22 13:47 +0100
Re: packed structs Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-09-22 14:00 +0100
Re: packed structs JohnF <john@please.see.sig.for.email.com> - 2012-09-22 15:42 +0000
Re: packed structs Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-09-22 09:13 -0400
Re: packed structs Johann Klammer <klammerj@NOSPAM.a1.net> - 2012-09-23 03:10 +0200
Re: packed structs JohnF <john@please.see.sig.for.email.com> - 2012-09-23 02:10 +0000
Re: packed structs Stephen Sprunk <stephen@sprunk.org> - 2012-09-23 11:44 -0500
Re: packed structs JohnF <john@please.see.sig.for.email.com> - 2012-09-23 23:23 +0000
Re: packed structs Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-09-24 01:59 +0100
Re: packed structs JohnF <john@please.see.sig.for.email.com> - 2012-09-24 02:54 +0000
Re: packed structs Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-09-24 04:38 +0100
Re: packed structs JohnF <john@please.see.sig.for.email.com> - 2012-09-24 04:07 +0000
Re: packed structs Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-09-24 12:16 +0100
Re: packed structs JohnF <john@please.see.sig.for.email.com> - 2012-09-24 11:45 +0000
Re: packed structs "BartC" <bc@freeuk.com> - 2012-09-24 10:18 +0100
Re: packed structs JohnF <john@please.see.sig.for.email.com> - 2012-09-24 11:04 +0000
Re: packed structs Stephen Sprunk <stephen@sprunk.org> - 2012-09-30 14:21 -0500
Re: packed structs JohnF <john@please.see.sig.for.email.com> - 2012-10-01 07:34 +0000
Re: packed structs Stephen Sprunk <stephen@sprunk.org> - 2012-09-30 13:52 -0500
Re: packed structs Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-09-22 01:31 -0700
Re: packed structs JohnF <john@please.see.sig.for.email.com> - 2012-09-22 08:53 +0000
Re: packed structs Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-09-22 14:17 +0000
Re: packed structs JohnF <john@please.see.sig.for.email.com> - 2012-09-22 15:33 +0000
Re: packed structs Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-09-22 20:43 +0000
Re: packed structs "BartC" <bc@freeuk.com> - 2012-09-22 22:52 +0100
Re: packed structs Keith Thompson <kst-u@mib.org> - 2012-09-22 13:47 -0700
Re: packed structs JohnF <john@forkosh.com.com> - 2012-09-23 00:19 +0000
Re: packed structs Ian Collins <ian-news@hotmail.com> - 2012-09-23 13:32 +1200
Re: packed structs JohnF <john@please.see.sig.for.email.com> - 2012-09-23 02:16 +0000
Re: packed structs Ian Collins <ian-news@hotmail.com> - 2012-09-23 10:33 +1200
Re: packed structs Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-09-23 01:38 -0700
Re: packed structs The Great Firewall of China Blue <chine.bleu@yahoo.com> - 2012-09-21 21:29 -0700
csiph-web