view dstep/foundation/NSCalendar.d @ 16:19885b43130e

Huge update, the bridge actually works now
author Jacob Carlborg <doob@me.com>
date Sun, 03 Jan 2010 22:06:11 +0100
parents 89f3c3ef1fd2
children b9de51448c6b
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Aug 3, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.foundation.NSCalendar;

import dstep.corefoundation.CFCalendar;
import dstep.foundation.NSCoder;
import dstep.foundation.NSDate;
import dstep.foundation.NSLocale;
import dstep.foundation.NSObjCRuntime;
import dstep.foundation.NSObject;
import dstep.foundation.NSRange;
import dstep.foundation.NSString;
import dstep.foundation.NSTimeZone;
import dstep.foundation.NSZone;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;

alias NSUInteger NSCalendarUnit;

enum
{
	NSEraCalendarUnit = kCFCalendarUnitEra,
	NSYearCalendarUnit = kCFCalendarUnitYear,
	NSMonthCalendarUnit = kCFCalendarUnitMonth,
	NSDayCalendarUnit = kCFCalendarUnitDay,
	NSHourCalendarUnit = kCFCalendarUnitHour,
	NSMinuteCalendarUnit = kCFCalendarUnitMinute,
	NSSecondCalendarUnit = kCFCalendarUnitSecond,
	NSWeekCalendarUnit = kCFCalendarUnitWeek,
	NSWeekdayCalendarUnit = kCFCalendarUnitWeekday,
	NSWeekdayOrdinalCalendarUnit = kCFCalendarUnitWeekdayOrdinal
}

enum
{
	NSWrapCalendarComponents = kCFCalendarComponentsWrap
}

enum
{
	NSUndefinedDateComponent = 2147483647L
}

class NSDateComponents : NSObject, INSCopying, INSCoding
{
	mixin (ObjcWrap);
	
	this ()
	{
		super(typeof(this).alloc.init.objcObject);
	}
	
	typeof(this) init ()
	{
		return invokeObjcSelf!(typeof(this), "init");
	}

	NSInteger era ()
	{
		return invokeObjcSelf!(NSInteger, "era");
	}

	NSInteger year ()
	{
		return invokeObjcSelf!(NSInteger, "year");
	}

	NSInteger month ()
	{
		return invokeObjcSelf!(NSInteger, "month");
	}

	NSInteger day ()
	{
		return invokeObjcSelf!(NSInteger, "day");
	}

	NSInteger hour ()
	{
		return invokeObjcSelf!(NSInteger, "hour");
	}

	NSInteger minute ()
	{
		return invokeObjcSelf!(NSInteger, "minute");
	}

	NSInteger second ()
	{
		return invokeObjcSelf!(NSInteger, "second");
	}

	NSInteger week ()
	{
		return invokeObjcSelf!(NSInteger, "week");
	}

	NSInteger weekday ()
	{
		return invokeObjcSelf!(NSInteger, "weekday");
	}

	NSInteger weekdayOrdinal ()
	{
		return invokeObjcSelf!(NSInteger, "weekdayOrdinal");
	}

	void setEra (NSInteger v)
	{
		return invokeObjcSelf!(void, "setEra:", NSInteger)(v);
	}

	void setYear (NSInteger v)
	{
		return invokeObjcSelf!(void, "setYear:", NSInteger)(v);
	}

	void setMonth (NSInteger v)
	{
		return invokeObjcSelf!(void, "setMonth:", NSInteger)(v);
	}

	void setDay (NSInteger v)
	{
		return invokeObjcSelf!(void, "setDay:", NSInteger)(v);
	}

	void setHour (NSInteger v)
	{
		return invokeObjcSelf!(void, "setHour:", NSInteger)(v);
	}

	void setMinute (NSInteger v)
	{
		return invokeObjcSelf!(void, "setMinute:", NSInteger)(v);
	}

	void setSecond (NSInteger v)
	{
		return invokeObjcSelf!(void, "setSecond:", NSInteger)(v);
	}

	void setWeek (NSInteger v)
	{
		return invokeObjcSelf!(void, "setWeek:", NSInteger)(v);
	}

	void setWeekday (NSInteger v)
	{
		return invokeObjcSelf!(void, "setWeekday:", NSInteger)(v);
	}

	void setWeekdayOrdinal (NSInteger v)
	{
		return invokeObjcSelf!(void, "setWeekdayOrdinal:", NSInteger)(v);
	}

	Object copyWithZone (NSZone* zone)
	{
		return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone);
	}

	void encodeWithCoder (NSCoder aCoder)
	{
		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
	}

	Object initWithCoder (NSCoder aDecoder)
	{
		return invokeObjcSelf!(Object, "initWithCoder:", NSCoder)(aDecoder);
	}

	this (NSCoder aDecoder)
	{
		typeof(this).alloc.initWithCoder(aDecoder);
	}
}

class NSCalendar : NSObject, INSCopying, INSCoding
{
	mixin (ObjcWrap);
	
	this ()
	{
		super(typeof(this).alloc.init.objcObject);
	}
	
	typeof(this) init ()
	{
		return invokeObjcSelf!(typeof(this), "init");
	}

	static Object currentCalendar ()
	{
		return invokeObjcSuperClass!(Object, "currentCalendar");
	}

	static Object autoupdatingCurrentCalendar ()
	{
		return invokeObjcSuperClass!(Object, "autoupdatingCurrentCalendar");
	}

	Object initWithCalendarIdentifier (NSString ident)
	{
		return invokeObjcSelf!(Object, "initWithCalendarIdentifier:", NSString)(ident);
	}

	this (NSString ident)
	{
		typeof(this).alloc.initWithCalendarIdentifier(ident);
	}

	NSString calendarIdentifier ()
	{
		return invokeObjcSelf!(NSString, "calendarIdentifier");
	}

	void setLocale (NSLocale locale)
	{
		return invokeObjcSelf!(void, "setLocale:", NSLocale)(locale);
	}

	NSLocale locale ()
	{
		return invokeObjcSelf!(NSLocale, "locale");
	}

	void setTimeZone (NSTimeZone tz)
	{
		return invokeObjcSelf!(void, "setTimeZone:", NSTimeZone)(tz);
	}

	NSTimeZone timeZone ()
	{
		return invokeObjcSelf!(NSTimeZone, "timeZone");
	}

	void setFirstWeekday (NSUInteger weekday)
	{
		return invokeObjcSelf!(void, "setFirstWeekday:", NSUInteger)(weekday);
	}

	NSUInteger firstWeekday ()
	{
		return invokeObjcSelf!(NSUInteger, "firstWeekday");
	}

	void setMinimumDaysInFirstWeek (NSUInteger mdw)
	{
		return invokeObjcSelf!(void, "setMinimumDaysInFirstWeek:", NSUInteger)(mdw);
	}

	NSUInteger minimumDaysInFirstWeek ()
	{
		return invokeObjcSelf!(NSUInteger, "minimumDaysInFirstWeek");
	}

	NSRange minimumRangeOfUnit (uint unit)
	{
		return invokeObjcSelf!(NSRange, "minimumRangeOfUnit:", uint)(unit);
	}

	NSRange maximumRangeOfUnit (uint unit)
	{
		return invokeObjcSelf!(NSRange, "maximumRangeOfUnit:", uint)(unit);
	}

	NSRange rangeOfUnit (uint smaller, uint larger, NSDate date)
	{
		return invokeObjcSelf!(NSRange, "rangeOfUnit:inUnit:forDate:", uint, uint, NSDate)(smaller, larger, date);
	}

	NSUInteger ordinalityOfUnit (uint smaller, uint larger, NSDate date)
	{
		return invokeObjcSelf!(NSUInteger, "ordinalityOfUnit:inUnit:forDate:", uint, uint, NSDate)(smaller, larger, date);
	}

	bool rangeOfUnit (uint unit, out NSDate datep, NSTimeInterval* tip, NSDate date)
	{
		id d = new objc_object;
		bool result =  invokeObjcSelf!(bool, "rangeOfUnit:startDate:interval:forDate:", uint, id*, NSTimeInterval*, NSDate)(unit, &d, tip, date);
		
		if (d)
			datep = new NSDate(d);
		
		return result;
	}

	NSDate dateFromComponents (NSDateComponents comps)
	{
		return invokeObjcSelf!(NSDate, "dateFromComponents:", NSDateComponents)(comps);
	}

	NSDateComponents components (NSUInteger unitFlags, NSDate date)
	{
		return invokeObjcSelf!(NSDateComponents, "components:fromDate:", NSUInteger, NSDate)(unitFlags, date);
	}

	NSDate dateByAddingComponents (NSDateComponents comps, NSDate date, NSUInteger opts)
	{
		return invokeObjcSelf!(NSDate, "dateByAddingComponents:toDate:options:", NSDateComponents, NSDate, NSUInteger)(comps, date, opts);
	}

	NSDateComponents components (NSUInteger unitFlags, NSDate startingDate, NSDate resultDate, NSUInteger opts)
	{
		return invokeObjcSelf!(NSDateComponents, "components:fromDate:toDate:options:", NSUInteger, NSDate, NSDate, NSUInteger)(unitFlags, startingDate, resultDate, opts);
	}

	Object copyWithZone (NSZone* zone)
	{
		return invokeObjcSelf!(Object, "copyWithZone:", NSZone*)(zone);
	}

	void encodeWithCoder (NSCoder aCoder)
	{
		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
	}

	Object initWithCoder (NSCoder aDecoder)
	{
		return invokeObjcSelf!(Object, "initWithCoder:", NSCoder)(aDecoder);
	}

	this (NSCoder aDecoder)
	{
		typeof(this).alloc.initWithCoder(aDecoder);
	}
}