Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Ian Collins <ian-news@hotmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: What is the right way to do this simple thing |
| Date | 2012-03-11 14:15 +1300 |
| Message-ID | <9s2cmhFf52U1@mid.individual.net> (permalink) |
| References | <4f5ba2ed.1944110152@text.giganews.com> <d4eb653e-30b3-4393-92fc-17b7732575ec@fk28g2000vbb.googlegroups.com> <4f5bde4b.1959309002@text.giganews.com> <9s28jrFf51U2@mid.individual.net> <4f5bf4f9.1965115079@text.giganews.com> |
On 03/11/12 01:44 PM, Richard Harter wrote:
> On Sun, 11 Mar 2012 13:06:18 +1300, Ian Collins<ian-news@hotmail.com>
> wrote:
>
>> On 03/11/12 12:31 PM, Richard Harter wrote:
>>> On Sat, 10 Mar 2012 14:12:17 -0800 (PST), ImpalerCore
>>> <jadill33@gmail.com> wrote:
>>>
>>>> On Mar 10, 2:26 pm, cri@tiac.net (Richard Harter) wrote:
>>>>> Suppose that I have some data that is pointer free. =A0It isn't
>>>>> necessarily serialized in some format such as JSON but I would like to
>>>>> be able to copy it from one from one machine to another compatible
>>>>> machine and use it without trouble. Also I don't want to pass around
>>>>> a collection of items and I want everything to be properly aligned.
>>>
>>> [snip remainder of statement, and comments on an approach]
>>>
>>> I thought of doing an align_max kind of thing but it seems to me that
>>> there are problems with that. One is that align_max is not a C89
>>> thing and that is one of the constraints. A second is that it gets a
>>> bit cumbersome.
>>>
>>> I thought of using a bit of anti-social casting. Start out with
>>>
>>> struct load_package {
>>> data_type type;
>>> size_t total_len;
>>> size_t data_len;
>>> int offset;
>>> T data;
>>> };
>>>
>>> Then the package struct is the same as the load_package struct except
>>> for the final char[] hack. Compute the offset of the data, stuff it
>>> in the struct, and blithely set
>>>
>>> pkg = (struct package *)&load_pkg;
>>>
>>> I think that works, modulo typoes, but it's a bit of a crock because
>>> you need a separate struct for every data type.
>>
>> Why don't you just use the usual union in a struct technique?
>
> You might spell out what you think "the usual" is; I looked at
> several variations and it looked like there were subtle problems with
> all of them. Perhaps I missed something.
struct load_package {
message_type type; /* The type has access info */
size_t total_len; /* Total length of the package */
size_t data_len; /* Length of the data */
union {
payload_type1;
payload_type2;
} payload;
};
--
Ian Collins
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-10 19:26 +0000
Re: What is the right way to do this simple thing Don Y <this@isnotme.com> - 2012-03-10 12:57 -0700
Re: What is the right way to do this simple thing ImpalerCore <jadill33@gmail.com> - 2012-03-10 14:12 -0800
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-10 23:31 +0000
Re: What is the right way to do this simple thing Ian Collins <ian-news@hotmail.com> - 2012-03-11 13:06 +1300
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-11 00:44 +0000
Re: What is the right way to do this simple thing Ian Collins <ian-news@hotmail.com> - 2012-03-11 14:15 +1300
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-11 04:46 +0000
Re: What is the right way to do this simple thing Ian Collins <ian-news@hotmail.com> - 2012-03-11 21:27 +1300
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-11 17:23 +0000
Re: What is the right way to do this simple thing Ian Collins <ian-news@hotmail.com> - 2012-03-12 10:01 +1300
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-13 21:18 +0000
Re: What is the right way to do this simple thing Ian Collins <ian-news@hotmail.com> - 2012-03-14 10:23 +1300
Re: What is the right way to do this simple thing Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-03-11 11:59 +0000
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-11 16:51 +0000
Re: What is the right way to do this simple thing Gene <gene.ressler@gmail.com> - 2012-03-13 07:32 -0700
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-13 21:46 +0000
Re: What is the right way to do this simple thing ImpalerCore <jadill33@gmail.com> - 2012-03-12 07:28 -0700
Re: What is the right way to do this simple thing ImpalerCore <jadill33@gmail.com> - 2012-03-12 08:13 -0700
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-13 21:51 +0000
Re: What is the right way to do this simple thing Tim Rentsch <txr@alumni.caltech.edu> - 2012-03-10 14:21 -0800
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-11 01:40 +0000
Re: What is the right way to do this simple thing Tim Rentsch <txr@alumni.caltech.edu> - 2012-03-11 14:11 -0700
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-13 21:56 +0000
Re: What is the right way to do this simple thing Tim Rentsch <txr@alumni.caltech.edu> - 2012-03-14 14:55 -0700
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-15 21:55 +0000
Re: What is the right way to do this simple thing Tim Rentsch <txr@alumni.caltech.edu> - 2012-03-19 13:33 -0700
Re: What is the right way to do this simple thing Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-03-10 15:21 -0800
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-11 00:47 +0000
Re: What is the right way to do this simple thing Philip Lantz <prl@canterey.us> - 2012-03-11 01:07 -0800
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-11 16:14 +0000
Re: What is the right way to do this simple thing Markus Wichmann <nullplan@gmx.net> - 2012-03-11 13:47 +0100
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-11 16:24 +0000
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-11 21:01 +0000
Re: What is the right way to do this simple thing Anders Wegge Keller <wegge@wegge.dk> - 2012-03-12 00:05 +0100
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-13 21:57 +0000
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-11 23:06 +0000
Re: What is the right way to do this simple thing Geoff <geoff@invalid.invalid> - 2012-03-11 17:34 -0700
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-13 22:00 +0000
Re: What is the right way to do this simple thing Geoff <geoff@invalid.invalid> - 2012-03-13 18:12 -0700
Re: What is the right way to do this simple thing cri@tiac.net (Richard Harter) - 2012-03-14 03:38 +0000
Re: What is the right way to do this simple thing Geoff <geoff@invalid.invalid> - 2012-03-14 00:49 -0700
csiph-web