qgis/QGIS — pull request #1084 by dakcarto (2014-01-16 22:21:16+00:00)
Title: Add OS native interface lib, with objective-c++ interface to Mac Cocoa ibraries

This library is intended to offer abstraction to the host OS's underlying public interfaces. This is useful for OSes that provide interfaces in languages other than C/C++, or for grouping calls to OS-specific code so that it only needs to be updated in one place in the source tree and handles any deprecation gracefully. It is advisable to leverage existing functions provided by Qt, rather than rely upon OS-specific code, unless such code extends the application to provide a better OS-specific user experience or solve a problem. This lib provides such a solution.

**Example first use case**

As of Mac OS X 10.9 (Mavericks) many system public API calls to Carbon libraries (based upon C) have been deprecated in favor of modern Cocoa libraries (written in Objective-C), which can no longer be directly called from C++. Coalescing and mixing these new calls in a library, using Objective-C++ allows not only access to the Apple system Objective-C libraries [and frameworks](https://developer.apple.com/library/mac/navigation/#section=Frameworks), but also those from third-parties, like the auto-updating [Sparkle.framework](http://sparkle.andymatuschak.org/).

See also: http://el-tramo.be/blog/mixing-cocoa-and-qt/

Once available, probably all Mac OS X specific code can be moved out of the QGIS source tree and to the new library, and switched to generic interface calls.

Includes initial unit test for Mac native lib.