darling-corefoundation/NSDateComponents.m
Andrew Hyatt 1c6ea502b7 Revert "Fix all warnings in CoreFoundation"
This reverts commit 3cf877c00d.

The issue with this commit is that it adds stubs for some methods
which are actually implemeneted in categories in Foundation. The good
parts of this commit will be later committed once those are removed.
2019-04-30 16:59:58 -04:00

327 lines
8.3 KiB
Objective-C

//
// NSDateComponents.m
// CoreFoundation
//
// Copyright (c) 2014 Apportable. All rights reserved.
//
#import "NSCalendarInternal.h"
#import <Foundation/NSKeyValueObserving.h>
#import "ForFoundationOnly.h"
typedef struct {
NSUInteger unitFlags;
NSInteger era;
NSInteger year;
NSInteger month;
NSInteger dayOfMonth;
NSInteger hourOfDay;
NSInteger minute;
NSInteger second;
NSInteger nanosecond;
NSInteger weekOfYear;
NSInteger weekOfMonth;
NSInteger yearWeekOfYear;
NSInteger weekday;
NSInteger quarter;
NSInteger weekdayOrdinal;
NSCalendar *calendar;
NSTimeZone *timeZone;
} NSDateComponentParts;
@implementation NSDateComponents
+ (id)allocWithZone:(NSZone *)zone
{
return (id)___CFAllocateObject2(self, sizeof(NSDateComponentParts));
}
- (id)copyWithZone:(NSZone *)zone
{
NSDateComponents *copy = [[[self class] allocWithZone:zone] init];
copy.day = self.day;
copy.month = self.month;
copy.year = self.year;
copy.hour = self.hour;
copy.minute = self.minute;
copy.second = self.second;
copy.nanosecond = self.nanosecond;
copy.weekday = self.weekday;
copy.week = self.week;
copy.era = self.era;
copy.quarter = self.quarter;
copy.weekOfYear = self.weekOfYear;
copy.yearForWeekOfYear = self.yearForWeekOfYear;
copy.weekdayOrdinal = self.weekdayOrdinal;
copy.calendar = self.calendar;
copy.timeZone = self.timeZone;
return copy;
}
- (id)init
{
self = [super init];
if (self)
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->era = INT_MAX;
parts->year = INT_MAX;
parts->month = INT_MAX;
parts->dayOfMonth = INT_MAX;
parts->hourOfDay = INT_MAX;
parts->minute = INT_MAX;
parts->second = INT_MAX;
parts->nanosecond = INT_MAX;
parts->weekOfYear = INT_MAX;
parts->weekOfMonth = INT_MAX;
parts->yearWeekOfYear = INT_MAX;
parts->weekday = INT_MAX;
parts->quarter = INT_MAX;
parts->weekdayOrdinal = INT_MAX;
}
return self;
}
- (NSInteger)day
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->dayOfMonth;
}
- (void)setDay:(NSInteger)day
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitDay;
parts->dayOfMonth = day;
}
- (NSInteger)month
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->month;
}
- (void)setMonth:(NSInteger)month
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitMonth;
parts->month = month;
}
- (NSInteger)year
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->year;
}
- (void)setYear:(NSInteger)year
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitYear;
parts->year = year;
}
- (NSInteger)hour
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->hourOfDay;
}
- (void)setHour:(NSInteger)hour
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitHour;
parts->hourOfDay = hour;
}
- (NSInteger)minute
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->minute;
}
- (void)setMinute:(NSInteger)minute
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitMinute;
parts->minute = minute;
}
- (NSInteger)second
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->second;
}
- (void)setSecond:(NSInteger)second
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitSecond;
parts->second = second;
}
- (NSInteger)nanosecond
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->nanosecond;
}
- (void)setNanosecond:(NSInteger)nanosecond
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitNanosecond;
parts->nanosecond = nanosecond;
}
- (NSInteger)weekday
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->weekday;
}
- (void)setWeekday:(NSInteger)weekday
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitWeekday;
parts->weekday = weekday;
}
- (NSInteger)week
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->weekOfMonth;
}
- (void)setWeek:(NSInteger)week
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitWeekOfMonth;
parts->weekOfMonth = week;
}
- (NSInteger)era
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->era;
}
- (void)setEra:(NSInteger)era
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitEra;
parts->era = era;
}
- (NSInteger)quarter
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->quarter;
}
- (void)setQuarter:(NSInteger)quarter
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitQuarter;
parts->quarter = quarter;
}
- (NSInteger)weekOfMonth
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->weekOfMonth;
}
- (void)setWeekOfMonth:(NSInteger)weekOfMonth
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitWeekOfMonth;
parts->weekOfMonth = weekOfMonth;
}
- (NSInteger)weekOfYear
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->weekOfYear;
}
- (void)setWeekOfYear:(NSInteger)weekOfYear
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitWeekOfYear;
parts->weekOfYear = weekOfYear;
}
- (NSInteger)yearForWeekOfYear
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->yearWeekOfYear;
}
- (void)setYearForWeekOfYear:(NSInteger)yearWeekOfYear
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitYearForWeekOfYear;
parts->yearWeekOfYear = yearWeekOfYear;
}
- (NSInteger)weekdayOrdinal
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->weekdayOrdinal;
}
- (void)setWeekdayOrdinal:(NSInteger)weekdayOrdinal
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
parts->unitFlags |= NSCalendarUnitWeekdayOrdinal;
parts->weekdayOrdinal = weekdayOrdinal;
}
- (NSCalendar *)calendar
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->calendar;
}
- (void)setCalendar:(NSCalendar *)calendar
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
if (parts->calendar != calendar)
{
[parts->calendar release];
parts->calendar = [calendar retain];
}
}
- (NSTimeZone *)timeZone
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
return parts->timeZone;
}
- (void)setTimeZone:(NSTimeZone *)timeZone
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
if (parts->timeZone != timeZone)
{
[parts->timeZone release];
parts->timeZone = [timeZone retain];
}
}
-(NSDate *)date
{
NSDateComponentParts *parts = (NSDateComponentParts *)object_getIndexedIvars(self);
if (parts->calendar != nil)
{
return [parts->calendar dateFromComponents:self];
}
return nil;
}
@end