view dstep/foundation/NSDateFormatter.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.NSDateFormatter;

import dstep.corefoundation.CFDateFormatter;
import dstep.foundation.NSArray;
import dstep.foundation.NSCalendar;
import dstep.foundation.NSDate;
import dstep.foundation.NSDictionary;
import dstep.foundation.NSError;
import dstep.foundation.NSFormatter;
import dstep.foundation.NSLocale;
import dstep.foundation.NSObjCRuntime;
import dstep.foundation.NSRange;
import dstep.foundation.NSString;
import dstep.foundation.NSTimeZone;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;

alias NSUInteger NSDateFormatterStyle;
alias NSUInteger NSDateFormatterBehavior;

enum
{
	NSDateFormatterNoStyle = kCFDateFormatterNoStyle,
	NSDateFormatterShortStyle = kCFDateFormatterShortStyle,
	NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,
	NSDateFormatterLongStyle = kCFDateFormatterLongStyle,
	NSDateFormatterFullStyle = kCFDateFormatterFullStyle
}

enum
{
	NSDateFormatterBehaviorDefault = 0,
	NSDateFormatterBehavior10_0 = 1000,
	NSDateFormatterBehavior10_4 = 1040
}

const TNSDateFormatterCompatibility = `

	Object initWithDateFormat (NSString format, bool flag)
	{
		return invokeObjcSelf!(Object, "initWithDateFormat:allowNaturalLanguage:", NSString, bool)(format, flag);
	}

	this (NSString format, bool flag)
	{
		typeof(this).alloc.initWithDateFormat(format, flag);
	}

	bool allowsNaturalLanguage ()
	{
		return invokeObjcSelf!(bool, "allowsNaturalLanguage");
	}
`;

class NSDateFormatter : NSFormatter
{
	mixin (ObjcWrap);
	
	this ()
	{
		super(typeof(this).alloc.init.objcObject);
	}
	
	typeof(this) init ()
	{
		return invokeObjcSelf!(typeof(this), "init");
	}

	bool getObjectValue (id* obj, NSString string, NSRange* rangep, NSError** error)
	{
		return invokeObjcSelf!(bool, "getObjectValue:forString:range:error:", id*, NSString, NSRange*, NSError**)(obj, string, rangep, error);
	}

	NSString stringFromDate (NSDate date)
	{
		return invokeObjcSelf!(NSString, "stringFromDate:", NSDate)(date);
	}

	NSDate dateFromString (NSString string)
	{
		return invokeObjcSelf!(NSDate, "dateFromString:", NSString)(string);
	}

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

	uint dateStyle ()
	{
		return invokeObjcSelf!(uint, "dateStyle");
	}

	void setDateStyle (uint style)
	{
		return invokeObjcSelf!(void, "setDateStyle:", uint)(style);
	}

	uint timeStyle ()
	{
		return invokeObjcSelf!(uint, "timeStyle");
	}

	void setTimeStyle (uint style)
	{
		return invokeObjcSelf!(void, "setTimeStyle:", uint)(style);
	}

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

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

	bool generatesCalendarDates ()
	{
		return invokeObjcSelf!(bool, "generatesCalendarDates");
	}

	void setGeneratesCalendarDates (bool b)
	{
		return invokeObjcSelf!(void, "setGeneratesCalendarDates:", bool)(b);
	}

	uint formatterBehavior ()
	{
		return invokeObjcSelf!(uint, "formatterBehavior");
	}

	void setFormatterBehavior (uint behavior)
	{
		return invokeObjcSelf!(void, "setFormatterBehavior:", uint)(behavior);
	}

	static uint defaultFormatterBehavior ()
	{
		return invokeObjcSuperClass!(uint, "defaultFormatterBehavior");
	}

	static void setDefaultFormatterBehavior (uint behavior)
	{
		return invokeObjcSuperClass!(void, "setDefaultFormatterBehavior:", uint)(behavior);
	}

	void setDateFormat (NSString string)
	{
		return invokeObjcSelf!(void, "setDateFormat:", NSString)(string);
	}

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

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

	NSCalendar calendar ()
	{
		return invokeObjcSelf!(NSCalendar, "calendar");
	}

	void setCalendar (NSCalendar calendar)
	{
		return invokeObjcSelf!(void, "setCalendar:", NSCalendar)(calendar);
	}

	bool isLenient ()
	{
		return invokeObjcSelf!(bool, "isLenient");
	}

	void setLenient (bool b)
	{
		return invokeObjcSelf!(void, "setLenient:", bool)(b);
	}

	NSDate twoDigitStartDate ()
	{
		return invokeObjcSelf!(NSDate, "twoDigitStartDate");
	}

	void setTwoDigitStartDate (NSDate date)
	{
		return invokeObjcSelf!(void, "setTwoDigitStartDate:", NSDate)(date);
	}

	NSDate defaultDate ()
	{
		return invokeObjcSelf!(NSDate, "defaultDate");
	}

	void setDefaultDate (NSDate date)
	{
		return invokeObjcSelf!(void, "setDefaultDate:", NSDate)(date);
	}

	NSArray eraSymbols ()
	{
		return invokeObjcSelf!(NSArray, "eraSymbols");
	}

	void setEraSymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setEraSymbols:", NSArray)(array);
	}

	NSArray monthSymbols ()
	{
		return invokeObjcSelf!(NSArray, "monthSymbols");
	}

	void setMonthSymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setMonthSymbols:", NSArray)(array);
	}

	NSArray shortMonthSymbols ()
	{
		return invokeObjcSelf!(NSArray, "shortMonthSymbols");
	}

	void setShortMonthSymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setShortMonthSymbols:", NSArray)(array);
	}

	NSArray weekdaySymbols ()
	{
		return invokeObjcSelf!(NSArray, "weekdaySymbols");
	}

	void setWeekdaySymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setWeekdaySymbols:", NSArray)(array);
	}

	NSArray shortWeekdaySymbols ()
	{
		return invokeObjcSelf!(NSArray, "shortWeekdaySymbols");
	}

	void setShortWeekdaySymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setShortWeekdaySymbols:", NSArray)(array);
	}

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

	void setAMSymbol (NSString string)
	{
		return invokeObjcSelf!(void, "setAMSymbol:", NSString)(string);
	}

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

	void setPMSymbol (NSString string)
	{
		return invokeObjcSelf!(void, "setPMSymbol:", NSString)(string);
	}

	NSArray longEraSymbols ()
	{
		return invokeObjcSelf!(NSArray, "longEraSymbols");
	}

	void setLongEraSymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setLongEraSymbols:", NSArray)(array);
	}

	NSArray veryShortMonthSymbols ()
	{
		return invokeObjcSelf!(NSArray, "veryShortMonthSymbols");
	}

	void setVeryShortMonthSymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setVeryShortMonthSymbols:", NSArray)(array);
	}

	NSArray standaloneMonthSymbols ()
	{
		return invokeObjcSelf!(NSArray, "standaloneMonthSymbols");
	}

	void setStandaloneMonthSymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setStandaloneMonthSymbols:", NSArray)(array);
	}

	NSArray shortStandaloneMonthSymbols ()
	{
		return invokeObjcSelf!(NSArray, "shortStandaloneMonthSymbols");
	}

	void setShortStandaloneMonthSymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setShortStandaloneMonthSymbols:", NSArray)(array);
	}

	NSArray veryShortStandaloneMonthSymbols ()
	{
		return invokeObjcSelf!(NSArray, "veryShortStandaloneMonthSymbols");
	}

	void setVeryShortStandaloneMonthSymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setVeryShortStandaloneMonthSymbols:", NSArray)(array);
	}

	NSArray veryShortWeekdaySymbols ()
	{
		return invokeObjcSelf!(NSArray, "veryShortWeekdaySymbols");
	}

	void setVeryShortWeekdaySymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setVeryShortWeekdaySymbols:", NSArray)(array);
	}

	NSArray standaloneWeekdaySymbols ()
	{
		return invokeObjcSelf!(NSArray, "standaloneWeekdaySymbols");
	}

	void setStandaloneWeekdaySymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setStandaloneWeekdaySymbols:", NSArray)(array);
	}

	NSArray shortStandaloneWeekdaySymbols ()
	{
		return invokeObjcSelf!(NSArray, "shortStandaloneWeekdaySymbols");
	}

	void setShortStandaloneWeekdaySymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setShortStandaloneWeekdaySymbols:", NSArray)(array);
	}

	NSArray veryShortStandaloneWeekdaySymbols ()
	{
		return invokeObjcSelf!(NSArray, "veryShortStandaloneWeekdaySymbols");
	}

	void setVeryShortStandaloneWeekdaySymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setVeryShortStandaloneWeekdaySymbols:", NSArray)(array);
	}

	NSArray quarterSymbols ()
	{
		return invokeObjcSelf!(NSArray, "quarterSymbols");
	}

	void setQuarterSymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setQuarterSymbols:", NSArray)(array);
	}

	NSArray shortQuarterSymbols ()
	{
		return invokeObjcSelf!(NSArray, "shortQuarterSymbols");
	}

	void setShortQuarterSymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setShortQuarterSymbols:", NSArray)(array);
	}

	NSArray standaloneQuarterSymbols ()
	{
		return invokeObjcSelf!(NSArray, "standaloneQuarterSymbols");
	}

	void setStandaloneQuarterSymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setStandaloneQuarterSymbols:", NSArray)(array);
	}

	NSArray shortStandaloneQuarterSymbols ()
	{
		return invokeObjcSelf!(NSArray, "shortStandaloneQuarterSymbols");
	}

	void setShortStandaloneQuarterSymbols (NSArray array)
	{
		return invokeObjcSelf!(void, "setShortStandaloneQuarterSymbols:", NSArray)(array);
	}

	NSDate gregorianStartDate ()
	{
		return invokeObjcSelf!(NSDate, "gregorianStartDate");
	}

	void setGregorianStartDate (NSDate date)
	{
		return invokeObjcSelf!(void, "setGregorianStartDate:", NSDate)(date);
	}
	
	// TNSDateFormatterCompatibility
	Object initWithDateFormat (NSString format, bool flag)
	{
		return invokeObjcSelf!(Object, "initWithDateFormat:allowNaturalLanguage:", NSString, bool)(format, flag);
	}
	
	this (NSString format, bool flag)
	{
		typeof(this).alloc.initWithDateFormat(format, flag);
	}
	
	bool allowsNaturalLanguage ()
	{
		return invokeObjcSelf!(bool, "allowsNaturalLanguage");
	}
}