Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GCC 4.0 GetKeys() and BigEndianLong for Intel



On Jun 15, 2005, at 10:29 AM, Ken Baer wrote:

I've got some code that calls GetKeys( KeyMap theKeys ) to get the modifier keys state.  Then I use a mask to test which of them are down.  I get a compile error:

error: no match for 'operator&' in 'theKeys[1] & 2l'

First, I know that I need to find constants for the key masks, what are those masks?
But now that KeyMap is an array of BigEndianLong rather than UInt32, the compiler can't find an operator & that works with it.  What is the best way to deal with this in our new Universal Binaries world?

It's unfortunate that KeyMap was defined this way...it should've just been transparent to you, but we couldn't change it because it's been this way in the headers for a while.

Anyway, when building for little-endian systems (#if __LITTLE_ENDIAN__), you should read the BigEndianLong value, use OSSwapBigToHostInt32 or the swapping function of your choice to put its field into a regular int, and then use it the way you otherwise would.

Also, I have a SHORT that I want to set the most significant bit on.  Currently the code is 

result |= 0x8000;

What's the rule of thumb to make it cross chip happy?

Leave it as is.  As long as result is native-endian, it'll do the right thing.

-Eric

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/xcode-users/email@hidden

This email sent to email@hidden

References: 
 >GCC 4.0 GetKeys() and BigEndianLong for Intel (From: Ken Baer <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.