//Auto-generated by kalyptus. DO NOT EDIT.
namespace Qyoto {
    using System;
    [SmokeClass("QDate")]
    public class QDate : Object, IDisposable {
        protected SmokeInvocation interceptor = null;
        private IntPtr smokeObject;
        protected QDate(Type dummy) {}
        protected void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(QDate), this);
        }
        private static SmokeInvocation staticInterceptor = null;
        static QDate() {
            staticInterceptor = new SmokeInvocation(typeof(QDate), null);
        }
        public enum MonthNameType {
            DateFormat = 0,
            StandaloneFormat = 1,
        }
        public QDate() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QDate", "QDate()", typeof(void));
        }
        public QDate(int y, int m, int d) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QDate$$$", "QDate(int, int, int)", typeof(void), typeof(int), y, typeof(int), m, typeof(int), d);
        }
        public bool IsNull() {
            return (bool) interceptor.Invoke("isNull", "isNull() const", typeof(bool));
        }
        public bool IsValid() {
            return (bool) interceptor.Invoke("isValid", "isValid() const", typeof(bool));
        }
        public int Year() {
            return (int) interceptor.Invoke("year", "year() const", typeof(int));
        }
        public int Month() {
            return (int) interceptor.Invoke("month", "month() const", typeof(int));
        }
        public int Day() {
            return (int) interceptor.Invoke("day", "day() const", typeof(int));
        }
        public int DayOfWeek() {
            return (int) interceptor.Invoke("dayOfWeek", "dayOfWeek() const", typeof(int));
        }
        public int DayOfYear() {
            return (int) interceptor.Invoke("dayOfYear", "dayOfYear() const", typeof(int));
        }
        public int DaysInMonth() {
            return (int) interceptor.Invoke("daysInMonth", "daysInMonth() const", typeof(int));
        }
        public int DaysInYear() {
            return (int) interceptor.Invoke("daysInYear", "daysInYear() const", typeof(int));
        }
        public int WeekNumber(ref int yearNum) {
            StackItem[] stack = new StackItem[2];
            stack[1].s_int = yearNum;
            interceptor.Invoke("weekNumber$", "weekNumber(int*) const", stack);
            yearNum = stack[1].s_int;
            return stack[0].s_int;
        }
        public int WeekNumber() {
            return (int) interceptor.Invoke("weekNumber", "weekNumber() const", typeof(int));
        }
        public string ToString(Qt.DateFormat f) {
            return (string) interceptor.Invoke("toString$", "toString(Qt::DateFormat) const", typeof(string), typeof(Qt.DateFormat), f);
        }
        public new string ToString() {
            return (string) interceptor.Invoke("toString", "toString() const", typeof(string));
        }
        public string ToString(string format) {
            return (string) interceptor.Invoke("toString$", "toString(const QString&) const", typeof(string), typeof(string), format);
        }
        public bool SetYMD(int y, int m, int d) {
            return (bool) interceptor.Invoke("setYMD$$$", "setYMD(int, int, int)", typeof(bool), typeof(int), y, typeof(int), m, typeof(int), d);
        }
        public bool SetDate(int year, int month, int day) {
            return (bool) interceptor.Invoke("setDate$$$", "setDate(int, int, int)", typeof(bool), typeof(int), year, typeof(int), month, typeof(int), day);
        }
        public void GetDate(ref int year, ref int month, ref int day) {
            StackItem[] stack = new StackItem[4];
            stack[1].s_int = year;
            stack[2].s_int = month;
            stack[3].s_int = day;
            interceptor.Invoke("getDate$$$", "getDate(int*, int*, int*)", stack);
            year = stack[1].s_int;
            month = stack[2].s_int;
            day = stack[3].s_int;
            return;
        }
        public QDate AddDays(int days) {
            return (QDate) interceptor.Invoke("addDays$", "addDays(int) const", typeof(QDate), typeof(int), days);
        }
        public QDate AddMonths(int months) {
            return (QDate) interceptor.Invoke("addMonths$", "addMonths(int) const", typeof(QDate), typeof(int), months);
        }
        public QDate AddYears(int years) {
            return (QDate) interceptor.Invoke("addYears$", "addYears(int) const", typeof(QDate), typeof(int), years);
        }
        public int DaysTo(QDate arg1) {
            return (int) interceptor.Invoke("daysTo#", "daysTo(const QDate&) const", typeof(int), typeof(QDate), arg1);
        }
        public override bool Equals(object o) {
            if (!(o is QDate)) { return false; }
            return this == (QDate) o;
        }
        public override int GetHashCode() {
            return interceptor.GetHashCode();
        }
        public int ToJulianDay() {
            return (int) interceptor.Invoke("toJulianDay", "toJulianDay() const", typeof(int));
        }
        ~QDate() {
            interceptor.Invoke("~QDate", "~QDate()", typeof(void));
        }
        public void Dispose() {
            interceptor.Invoke("~QDate", "~QDate()", typeof(void));
        }
        public static bool operator==(QDate lhs, QDate other) {
            return (bool) staticInterceptor.Invoke("operator==#", "operator==(const QDate&) const", typeof(bool), typeof(QDate), lhs, typeof(QDate), other);
        }
        public static bool operator!=(QDate lhs, QDate other) {
            return !(bool) staticInterceptor.Invoke("operator==#", "operator==(const QDate&) const", typeof(bool), typeof(QDate), lhs, typeof(QDate), other);
        }
        public static bool operator<(QDate lhs, QDate other) {
            return (bool) staticInterceptor.Invoke("operator<#", "operator<(const QDate&) const", typeof(bool), typeof(QDate), lhs, typeof(QDate), other);
        }
        public static bool operator<=(QDate lhs, QDate other) {
            return (bool) staticInterceptor.Invoke("operator<=#", "operator<=(const QDate&) const", typeof(bool), typeof(QDate), lhs, typeof(QDate), other);
        }
        public static bool operator>(QDate lhs, QDate other) {
            return (bool) staticInterceptor.Invoke("operator>#", "operator>(const QDate&) const", typeof(bool), typeof(QDate), lhs, typeof(QDate), other);
        }
        public static bool operator>=(QDate lhs, QDate other) {
            return (bool) staticInterceptor.Invoke("operator>=#", "operator>=(const QDate&) const", typeof(bool), typeof(QDate), lhs, typeof(QDate), other);
        }
        public static string ShortMonthName(int month) {
            return (string) staticInterceptor.Invoke("shortMonthName$", "shortMonthName(int)", typeof(string), typeof(int), month);
        }
        public static string ShortMonthName(int month, QDate.MonthNameType type) {
            return (string) staticInterceptor.Invoke("shortMonthName$$", "shortMonthName(int, QDate::MonthNameType)", typeof(string), typeof(int), month, typeof(QDate.MonthNameType), type);
        }
        public static string ShortDayName(int weekday) {
            return (string) staticInterceptor.Invoke("shortDayName$", "shortDayName(int)", typeof(string), typeof(int), weekday);
        }
        public static string ShortDayName(int weekday, QDate.MonthNameType type) {
            return (string) staticInterceptor.Invoke("shortDayName$$", "shortDayName(int, QDate::MonthNameType)", typeof(string), typeof(int), weekday, typeof(QDate.MonthNameType), type);
        }
        public static string LongMonthName(int month) {
            return (string) staticInterceptor.Invoke("longMonthName$", "longMonthName(int)", typeof(string), typeof(int), month);
        }
        public static string LongMonthName(int month, QDate.MonthNameType type) {
            return (string) staticInterceptor.Invoke("longMonthName$$", "longMonthName(int, QDate::MonthNameType)", typeof(string), typeof(int), month, typeof(QDate.MonthNameType), type);
        }
        public static string LongDayName(int weekday) {
            return (string) staticInterceptor.Invoke("longDayName$", "longDayName(int)", typeof(string), typeof(int), weekday);
        }
        public static string LongDayName(int weekday, QDate.MonthNameType type) {
            return (string) staticInterceptor.Invoke("longDayName$$", "longDayName(int, QDate::MonthNameType)", typeof(string), typeof(int), weekday, typeof(QDate.MonthNameType), type);
        }
        public static QDate CurrentDate() {
            return (QDate) staticInterceptor.Invoke("currentDate", "currentDate()", typeof(QDate));
        }
        public static QDate FromString(string s, Qt.DateFormat f) {
            return (QDate) staticInterceptor.Invoke("fromString$$", "fromString(const QString&, Qt::DateFormat)", typeof(QDate), typeof(string), s, typeof(Qt.DateFormat), f);
        }
        public static QDate FromString(string s) {
            return (QDate) staticInterceptor.Invoke("fromString$", "fromString(const QString&)", typeof(QDate), typeof(string), s);
        }
        public static QDate FromString(string s, string format) {
            return (QDate) staticInterceptor.Invoke("fromString$$", "fromString(const QString&, const QString&)", typeof(QDate), typeof(string), s, typeof(string), format);
        }
        public static bool IsValid(int y, int m, int d) {
            return (bool) staticInterceptor.Invoke("isValid$$$", "isValid(int, int, int)", typeof(bool), typeof(int), y, typeof(int), m, typeof(int), d);
        }
        public static bool IsLeapYear(int year) {
            return (bool) staticInterceptor.Invoke("isLeapYear$", "isLeapYear(int)", typeof(bool), typeof(int), year);
        }
        public static uint GregorianToJulian(int y, int m, int d) {
            return (uint) staticInterceptor.Invoke("gregorianToJulian$$$", "gregorianToJulian(int, int, int)", typeof(uint), typeof(int), y, typeof(int), m, typeof(int), d);
        }
        public static void JulianToGregorian(uint jd, ref int y, ref int m, ref int d) {
            StackItem[] stack = new StackItem[5];
            stack[1].s_uint = jd;
            stack[2].s_int = y;
            stack[3].s_int = m;
            stack[4].s_int = d;
            staticInterceptor.Invoke("julianToGregorian$$$$", "julianToGregorian(uint, int&, int&, int&)", stack);
            y = stack[2].s_int;
            m = stack[3].s_int;
            d = stack[4].s_int;
            return;
        }
        public static QDate FromJulianDay(int jd) {
            return (QDate) staticInterceptor.Invoke("fromJulianDay$", "fromJulianDay(int)", typeof(QDate), typeof(int), jd);
        }
    }
}
