metaforce/metaforce-gui/MacOSSystemVersion.mm

173 lines
5.0 KiB
Plaintext

#include "MacOSSystemVersion.hpp"
#include <CoreFoundation/CoreFoundation.h>
#include <Foundation/Foundation.h>
#if !__has_feature(objc_arc)
#error ARC Required
#endif
void GetMacOSSystemVersion(int& major, int& minor, int& patch)
{
major = 0;
minor = 0;
patch = 0;
id pInfo = [NSProcessInfo processInfo];
if ([pInfo respondsToSelector:@selector(operatingSystemVersion)])
{
NSOperatingSystemVersion version = [pInfo operatingSystemVersion];
major = version.majorVersion;
minor = version.minorVersion;
patch = version.patchVersion;
}
else
{
major = 10;
if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_9_2)
{
minor = 9;
patch = 2;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_9_1)
{
minor = 9;
patch = 1;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_9)
{
minor = 9;
patch = 0;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_8_4)
{
minor = 8;
patch = 4;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_8_3)
{
minor = 8;
patch = 3;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_8_2)
{
minor = 8;
patch = 2;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_8_1)
{
minor = 8;
patch = 1;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_8)
{
minor = 8;
patch = 0;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_7_5)
{
minor = 7;
patch = 5;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_7_4)
{
minor = 7;
patch = 4;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_7_3)
{
minor = 7;
patch = 3;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_7_2)
{
minor = 7;
patch = 2;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_7_1)
{
minor = 7;
patch = 1;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_7)
{
minor = 7;
patch = 0;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_6_8)
{
minor = 6;
patch = 8;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_6_7)
{
minor = 6;
patch = 7;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_6_6)
{
minor = 6;
patch = 6;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_6_5)
{
minor = 6;
patch = 5;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_6_4)
{
minor = 6;
patch = 4;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_6_3)
{
minor = 6;
patch = 3;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_6_2)
{
minor = 6;
patch = 2;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_6_1)
{
minor = 6;
patch = 1;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_6)
{
minor = 6;
patch = 0;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_5)
{
minor = 5;
patch = 0;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_4)
{
minor = 4;
patch = 0;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_3)
{
minor = 3;
patch = 0;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_2)
{
minor = 2;
patch = 0;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_1)
{
minor = 1;
patch = 0;
}
else if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber10_0)
{
minor = 0;
patch = 0;
}
}
}