On 28.06.2011, at 21:57, Thomas Engelmeier wrote:

> 
> On 28.06.2011, at 21:37, Charles Srstka wrote:
> 
>> On Jun 28, 2011, at 12:00 PM, Jens Alfke wrote:
>> 
>>> Another way (that I often use) is to define a C struct that matches the 
>>> fields and layout of the header, then cast the bytes to a pointer to that 
>>> struct and read the fields. It makes your code look a lot cleaner, but you 
>>> have to be careful to (a) make sure the compiler packs the struct fields 
>>> properly, and (b) you byte-swap all integer/float fields appropriately.
>> 
>> It’s my understanding that reading/writing a struct directly to/from a file 
>> is considered poor practice, because of the two things you mentioned: endian 
>> issues, and the fact that you don’t know how the compiler will align the 
>> fields — and even if you test that, you don’t know that it’s not going to 
>> change in some future version of clang or gcc, or that Apple’s not going to 
>> switch to a new architecture or something in which the compilers will emit 
>> different output.
> 
> - the endian issue you'll have to deal with anyway
> - regarding struct alignment: 
> the 80ies file format had tons of of serialized struct data which usually 
> better end up in a struct. 
> Well, streamed reading has bad performance, so you'd not want to use it in 
> image (or movie) manipulation code. 

P.S.: unless the structs have variable length data in the middle, i.e. can not 
be read in one read anyway.
IIRC the PS structures are not organized that way, though. 

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to