NSCalendar: add new calendar identifier constants

Add new calendar identifier constants to NSCalendar, to add
compatibility for newer OSX applications. Some identifiers do not hold
parity with the older equivalents and have been left unimplemented, with
the gregorian calendar as a fallback.
This commit is contained in:
Daniel Ferreira 2017-06-15 17:38:15 +00:00 committed by Ivan Vučica
parent a9df1b104a
commit 5ab00e2c49
3 changed files with 50 additions and 0 deletions

View file

@ -42,6 +42,26 @@
extern "C" {
#endif
#if OS_API_VERSION(MAC_OS_X_VERSION_10_6, GS_API_LATEST)
GS_EXPORT NSString *const NSCalendarIdentifierGregorian;
GS_EXPORT NSString *const NSCalendarIdentifierBuddhist;
GS_EXPORT NSString *const NSCalendarIdentifierChinese;
GS_EXPORT NSString *const NSCalendarIdentifierCoptic;
GS_EXPORT NSString *const NSCalendarIdentifierEthiopicAmeteMihret;
GS_EXPORT NSString *const NSCalendarIdentifierEthiopicAmeteAlem;
GS_EXPORT NSString *const NSCalendarIdentifierHebrew;
GS_EXPORT NSString *const NSCalendarIdentifierISO8601;
GS_EXPORT NSString *const NSCalendarIdentifierIndian;
GS_EXPORT NSString *const NSCalendarIdentifierIslamic;
GS_EXPORT NSString *const NSCalendarIdentifierIslamicCivil;
GS_EXPORT NSString *const NSCalendarIdentifierJapanese;
GS_EXPORT NSString *const NSCalendarIdentifierPersian;
GS_EXPORT NSString *const NSCalendarIdentifierRepublicOfChina;
#endif
#if OS_API_VERSION(MAC_OS_X_VERSION_10_10, GS_API_LATEST)
GS_EXPORT NSString *const NSCalendarIdentifierIslamicTabular;
GS_EXPORT NSString *const NSCalendarIdentifierIslamicUmmAlQura;
#endif
typedef NSUInteger NSCalendarUnit;
enum
{

View file

@ -283,6 +283,16 @@ static NSRecursiveLock *classLock = nil;
my->identifier = NSIndianCalendar;
else if ([string isEqualToString: NSISO8601Calendar])
my->identifier = NSISO8601Calendar;
else if ([string isEqualToString: NSCalendarIdentifierCoptic])
my->identifier = NSGregorianCalendar; // TODO: unimplemented
else if ([string isEqualToString: NSCalendarIdentifierEthiopicAmeteMihret])
my->identifier = NSGregorianCalendar; // TODO: unimplemented
else if ([string isEqualToString: NSCalendarIdentifierEthiopicAmeteAlem])
my->identifier = NSGregorianCalendar; // TODO: unimplemented
else if ([string isEqualToString: NSCalendarIdentifierIslamicTabular])
my->identifier = NSGregorianCalendar; // TODO: unimplemented
else if ([string isEqualToString: NSCalendarIdentifierIslamicUmmAlQura])
my->identifier = NSGregorianCalendar; // TODO: unimplemented
else
{
RELEASE(self);

View file

@ -84,6 +84,26 @@ NSString * const NSPersianCalendar = @"persian";
NSString * const NSIndianCalendar = @"indian";
NSString * const NSISO8601Calendar = @"";
//
// NSLocale New Calendar ID Keys
//
NSString * const NSCalendarIdentifierGregorian = @"gregorian";
NSString * const NSCalendarIdentifierBuddhist = @"buddhist";
NSString * const NSCalendarIdentifierChinese = @"chinese";
NSString * const NSCalendarIdentifierCoptic = @"coptic";
NSString * const NSCalendarIdentifierEthiopicAmeteMihret = @"ethiopic-amete-mihret";
NSString * const NSCalendarIdentifierEthiopicAmeteAlem = @"ethiopic-amete-alem";
NSString * const NSCalendarIdentifierHebrew = @"hebrew";
NSString * const NSCalendarIdentifierISO8601 = @"";
NSString * const NSCalendarIdentifierIndian = @"indian";
NSString * const NSCalendarIdentifierIslamic = @"islamic";
NSString * const NSCalendarIdentifierIslamicCivil = @"islamic-civil";
NSString * const NSCalendarIdentifierJapanese = @"japanese";
NSString * const NSCalendarIdentifierPersian = @"persian";
NSString * const NSCalendarIdentifierRepublicOfChina = @"roc";
NSString * const NSCalendarIdentifierIslamicTabular = @"islamic-tabular";
NSString * const NSCalendarIdentifierIslamicUmmAlQura = @"islamic-umm-al-qura";
#if defined(HAVE_UNICODE_ULOC_H)
# include <unicode/uloc.h>
#endif