On Oct 23, 2008, at 3:06 AM, Ken Ferry wrote:

On Wed, Oct 22, 2008 at 9:09 PM, Graff <[EMAIL PROTECTED]> wrote:


NSPoint and CGPoint are structs that are essentially the same. You can
convert between them with a simple cast:

NSPoint point = *(NSPoint *)&myCGPoint;

http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaDrawingGuide/QuartzOpenGL/chapter_10_section_2.html

You can also use the function NSPointFromCGPoint() which does the exact
same thing for you:

NSPoint point = NSPointFromCGPoint(myCGPoint);

(Declared in NSGeometry.h)


The function is actually implemented a bit better than the cast above, in
that the function does not violate strict aliasing[1].

-Ken

[1]:
http://www.cellperformance.com/mike_acton/2006/06/understanding_strict_aliasing.html

Very interesting, I hadn't considered that issue. Thanks for pointing it out.

When I looked up that function on the internet I saw that it was defined as a simple cast. Now that I look at the actual header file on my system I see that Apple is now performing the cast by way of a union (referred to as type-punning in the article you linked). It's an elegant solution and very instructional.

- Graff
_______________________________________________

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 [EMAIL PROTECTED]

Reply via email to