//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0008
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;
    }
}
namespace Windows
{
    namespace Globalization
    {
        typedef enum DayOfWeek DayOfWeek;

        interface ICalendarIdentifiersStatics;

        interface IClockIdentifiersStatics;

        interface IGeographicRegion;

        interface IGeographicRegionFactory;

        interface IGeographicRegionStatics;

        interface ILanguage;

        interface ILanguageFactory;

        interface ILanguageStatics;

        interface ICalendar;

        interface ICalendarFactory;

        interface IApplicationLanguagesStatics;

        runtimeclass CalendarIdentifiers;

        runtimeclass ClockIdentifiers;

        runtimeclass GeographicRegion;

        runtimeclass Language;

        runtimeclass Calendar;

        runtimeclass ApplicationLanguages;
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace Globalization
    {
        [version(0x06020000)]
        enum DayOfWeek
        {
            Sunday    = 0,
            Monday    = 1,
            Tuesday   = 2,
            Wednesday = 3,
            Thursday  = 4,
            Friday    = 5,
            Saturday  = 6
        };

        [uuid(80653F68-2CB2-4C1F-B590-F0F52BF4FD1A)]
        [exclusiveto(Windows.Globalization.CalendarIdentifiers)]
        [version(0x06020000)]
        interface ICalendarIdentifiersStatics : IInspectable
        {
            [propget] HRESULT Gregorian([out] [retval] HSTRING* value);
            [propget] HRESULT Hebrew([out] [retval] HSTRING* value);
            [propget] HRESULT Hijri([out] [retval] HSTRING* value);
            [propget] HRESULT Japanese([out] [retval] HSTRING* value);
            [propget] HRESULT Julian([out] [retval] HSTRING* value);
            [propget] HRESULT Korean([out] [retval] HSTRING* value);
            [propget] HRESULT Taiwan([out] [retval] HSTRING* value);
            [propget] HRESULT Thai([out] [retval] HSTRING* value);
            [propget] HRESULT UmAlQura([out] [retval] HSTRING* value);
        }

        [uuid(523805BB-12EC-4F83-BC31-B1B4376B0808)]
        [version(0x06020000)]
        [exclusiveto(Windows.Globalization.ClockIdentifiers)]
        interface IClockIdentifiersStatics : IInspectable
        {
            [propget] HRESULT TwelveHour([out] [retval] HSTRING* value);
            [propget] HRESULT TwentyFourHour([out] [retval] HSTRING* value);
        }

        [uuid(01E9A621-4A64-4ED9-954F-9EDEB07BD903)]
        [version(0x06020000)]
        [exclusiveto(Windows.Globalization.GeographicRegion)]
        interface IGeographicRegion : IInspectable
        {
            [propget] HRESULT Code([out] [retval] HSTRING* value);
            [propget] HRESULT CodeTwoLetter([out] [retval] HSTRING* value);
            [propget] HRESULT CodeThreeLetter([out] [retval] HSTRING* value);
            [propget] HRESULT CodeThreeDigit([out] [retval] HSTRING* value);
            [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
            [propget] HRESULT NativeName([out] [retval] HSTRING* value);
            [propget] HRESULT CurrenciesInUse([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
        }

        [uuid(53425270-77B4-426B-859F-81E19D512546)]
        [version(0x06020000)]
        [exclusiveto(Windows.Globalization.GeographicRegion)]
        interface IGeographicRegionFactory : IInspectable
        {
            HRESULT CreateGeographicRegion([in] HSTRING geographicRegionCode, [out] [retval] Windows.Globalization.GeographicRegion** result);
        }

        [uuid(29E28974-7AD9-4EF4-8799-B3B44FADEC08)]
        [exclusiveto(Windows.Globalization.GeographicRegion)]
        [version(0x06020000)]
        interface IGeographicRegionStatics : IInspectable
        {
            HRESULT IsSupported([in] HSTRING geographicRegionCode, [out] [retval] boolean* result);
        }

        [uuid(EA79A752-F7C2-4265-B1BD-C4DEC4E4F080)]
        [exclusiveto(Windows.Globalization.Language)]
        [version(0x06020000)]
        interface ILanguage : IInspectable
        {
            [propget] HRESULT LanguageTag([out] [retval] HSTRING* value);
            [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
            [propget] HRESULT NativeName([out] [retval] HSTRING* value);
            [propget] HRESULT Script([out] [retval] HSTRING* value);
        }

        [uuid(9B0252AC-0C27-44F8-B792-9793FB66C63E)]
        [exclusiveto(Windows.Globalization.Language)]
        [version(0x06020000)]
        interface ILanguageFactory : IInspectable
        {
            HRESULT CreateLanguage([in] HSTRING languageTag, [out] [retval] Windows.Globalization.Language** result);
        }

        [uuid(B23CD557-0865-46D4-89B8-D59BE8990F0D)]
        [version(0x06020000)]
        [exclusiveto(Windows.Globalization.Language)]
        interface ILanguageStatics : IInspectable
        {
            HRESULT IsWellFormed([in] HSTRING languageTag, [out] [retval] boolean* result);
            [propget] HRESULT CurrentInputMethodLanguageTag([out] [retval] HSTRING* value);
        }

        [uuid(CA30221D-86D9-40FB-A26B-D44EB7CF08EA)]
        [exclusiveto(Windows.Globalization.Calendar)]
        [version(0x06020000)]
        interface ICalendar : IInspectable
        {
            HRESULT Clone([out] [retval] Windows.Globalization.Calendar** value);
            HRESULT SetToMin();
            HRESULT SetToMax();
            [propget] HRESULT Languages([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
            [propget] HRESULT NumeralSystem([out] [retval] HSTRING* value);
            [propput] HRESULT NumeralSystem([in] HSTRING value);
            HRESULT GetCalendarSystem([out] [retval] HSTRING* value);
            HRESULT ChangeCalendarSystem([in] HSTRING value);
            HRESULT GetClock([out] [retval] HSTRING* value);
            HRESULT ChangeClock([in] HSTRING value);
            HRESULT GetDateTime([out] [retval] Windows.Foundation.DateTime* result);
            HRESULT SetDateTime([in] Windows.Foundation.DateTime value);
            HRESULT SetToNow();
            [propget] HRESULT FirstEra([out] [retval] INT32* value);
            [propget] HRESULT LastEra([out] [retval] INT32* value);
            [propget] HRESULT NumberOfEras([out] [retval] INT32* value);
            [propget] HRESULT Era([out] [retval] INT32* value);
            [propput] HRESULT Era([in] INT32 value);
            HRESULT AddEras([in] INT32 eras);
            [overload("EraAsString")] HRESULT EraAsFullString([out] [retval] HSTRING* result);
            [overload("EraAsString")] HRESULT EraAsString([in] INT32 idealLength, [out] [retval] HSTRING* result);
            [propget] HRESULT FirstYearInThisEra([out] [retval] INT32* value);
            [propget] HRESULT LastYearInThisEra([out] [retval] INT32* value);
            [propget] HRESULT NumberOfYearsInThisEra([out] [retval] INT32* value);
            [propget] HRESULT Year([out] [retval] INT32* value);
            [propput] HRESULT Year([in] INT32 value);
            HRESULT AddYears([in] INT32 years);
            HRESULT YearAsString([out] [retval] HSTRING* result);
            HRESULT YearAsTruncatedString([in] INT32 remainingDigits, [out] [retval] HSTRING* result);
            HRESULT YearAsPaddedString([in] INT32 minDigits, [out] [retval] HSTRING* result);
            [propget] HRESULT FirstMonthInThisYear([out] [retval] INT32* value);
            [propget] HRESULT LastMonthInThisYear([out] [retval] INT32* value);
            [propget] HRESULT NumberOfMonthsInThisYear([out] [retval] INT32* value);
            [propget] HRESULT Month([out] [retval] INT32* value);
            [propput] HRESULT Month([in] INT32 value);
            HRESULT AddMonths([in] INT32 months);
            [overload("MonthAsString")] HRESULT MonthAsFullString([out] [retval] HSTRING* result);
            [overload("MonthAsString")] HRESULT MonthAsString([in] INT32 idealLength, [out] [retval] HSTRING* result);
            [overload("MonthAsSoloString")] HRESULT MonthAsFullSoloString([out] [retval] HSTRING* result);
            [overload("MonthAsSoloString")] HRESULT MonthAsSoloString([in] INT32 idealLength, [out] [retval] HSTRING* result);
            HRESULT MonthAsNumericString([out] [retval] HSTRING* result);
            HRESULT MonthAsPaddedNumericString([in] INT32 minDigits, [out] [retval] HSTRING* result);
            HRESULT AddWeeks([in] INT32 weeks);
            [propget] HRESULT FirstDayInThisMonth([out] [retval] INT32* value);
            [propget] HRESULT LastDayInThisMonth([out] [retval] INT32* value);
            [propget] HRESULT NumberOfDaysInThisMonth([out] [retval] INT32* value);
            [propget] HRESULT Day([out] [retval] INT32* value);
            [propput] HRESULT Day([in] INT32 value);
            HRESULT AddDays([in] INT32 days);
            HRESULT DayAsString([out] [retval] HSTRING* result);
            HRESULT DayAsPaddedString([in] INT32 minDigits, [out] [retval] HSTRING* result);
            [propget] HRESULT DayOfWeek([out] [retval] Windows.Globalization.DayOfWeek* value);
            [overload("DayOfWeekAsString")] HRESULT DayOfWeekAsFullString([out] [retval] HSTRING* result);
            [overload("DayOfWeekAsString")] HRESULT DayOfWeekAsString([in] INT32 idealLength, [out] [retval] HSTRING* result);
            [overload("DayOfWeekAsSoloString")] HRESULT DayOfWeekAsFullSoloString([out] [retval] HSTRING* result);
            [overload("DayOfWeekAsSoloString")] HRESULT DayOfWeekAsSoloString([in] INT32 idealLength, [out] [retval] HSTRING* result);
            [propget] HRESULT FirstPeriodInThisDay([out] [retval] INT32* value);
            [propget] HRESULT LastPeriodInThisDay([out] [retval] INT32* value);
            [propget] HRESULT NumberOfPeriodsInThisDay([out] [retval] INT32* value);
            [propget] HRESULT Period([out] [retval] INT32* value);
            [propput] HRESULT Period([in] INT32 value);
            HRESULT AddPeriods([in] INT32 periods);
            [overload("PeriodAsString")] HRESULT PeriodAsFullString([out] [retval] HSTRING* result);
            [overload("PeriodAsString")] HRESULT PeriodAsString([in] INT32 idealLength, [out] [retval] HSTRING* result);
            [propget] HRESULT FirstHourInThisPeriod([out] [retval] INT32* value);
            [propget] HRESULT LastHourInThisPeriod([out] [retval] INT32* value);
            [propget] HRESULT NumberOfHoursInThisPeriod([out] [retval] INT32* value);
            [propget] HRESULT Hour([out] [retval] INT32* value);
            [propput] HRESULT Hour([in] INT32 value);
            HRESULT AddHours([in] INT32 hours);
            HRESULT HourAsString([out] [retval] HSTRING* result);
            HRESULT HourAsPaddedString([in] INT32 minDigits, [out] [retval] HSTRING* result);
            [propget] HRESULT Minute([out] [retval] INT32* value);
            [propput] HRESULT Minute([in] INT32 value);
            HRESULT AddMinutes([in] INT32 minutes);
            HRESULT MinuteAsString([out] [retval] HSTRING* result);
            HRESULT MinuteAsPaddedString([in] INT32 minDigits, [out] [retval] HSTRING* result);
            [propget] HRESULT Second([out] [retval] INT32* value);
            [propput] HRESULT Second([in] INT32 value);
            HRESULT AddSeconds([in] INT32 seconds);
            HRESULT SecondAsString([out] [retval] HSTRING* result);
            HRESULT SecondAsPaddedString([in] INT32 minDigits, [out] [retval] HSTRING* result);
            [propget] HRESULT Nanosecond([out] [retval] INT32* value);
            [propput] HRESULT Nanosecond([in] INT32 value);
            HRESULT AddNanoseconds([in] INT32 nanoseconds);
            HRESULT NanosecondAsString([out] [retval] HSTRING* result);
            HRESULT NanosecondAsPaddedString([in] INT32 minDigits, [out] [retval] HSTRING* result);
            HRESULT Compare([in] Windows.Globalization.Calendar* other, [out] [retval] INT32* result);
            HRESULT CompareDateTime([in] Windows.Foundation.DateTime other, [out] [retval] INT32* result);
            HRESULT CopyTo([in] Windows.Globalization.Calendar* other);
            [propget] HRESULT FirstMinuteInThisHour([out] [retval] INT32* value);
            [propget] HRESULT LastMinuteInThisHour([out] [retval] INT32* value);
            [propget] HRESULT NumberOfMinutesInThisHour([out] [retval] INT32* value);
            [propget] HRESULT FirstSecondInThisMinute([out] [retval] INT32* value);
            [propget] HRESULT LastSecondInThisMinute([out] [retval] INT32* value);
            [propget] HRESULT NumberOfSecondsInThisMinute([out] [retval] INT32* value);
            [propget] HRESULT ResolvedLanguage([out] [retval] HSTRING* value);
            [propget] HRESULT IsDaylightSavingTime([out] [retval] boolean* value);
        }

        [uuid(83F58412-E56B-4C75-A66E-0F63D57758A6)]
        [exclusiveto(Windows.Globalization.Calendar)]
        [version(0x06020000)]
        interface ICalendarFactory : IInspectable
        {
            HRESULT CreateCalendarDefaultCalendarAndClock([in] Windows.Foundation.Collections.IIterable<HSTRING>* languages, [out] [retval] Windows.Globalization.Calendar** result);
            HRESULT CreateCalendar([in] Windows.Foundation.Collections.IIterable<HSTRING>* languages, [in] HSTRING calendar, [in] HSTRING clock, [out] [retval] Windows.Globalization.Calendar** result);
        }

        [uuid(75B40847-0A4C-4A92-9565-FD63C95F7AED)]
        [exclusiveto(Windows.Globalization.ApplicationLanguages)]
        [version(0x06020000)]
        interface IApplicationLanguagesStatics : IInspectable
        {
            [propget] HRESULT PrimaryLanguageOverride([out] [retval] HSTRING* value);
            [propput] HRESULT PrimaryLanguageOverride([in] HSTRING value);
            [propget] HRESULT Languages([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
            [propget] HRESULT ManifestLanguages([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
        }

        [static(Windows.Globalization.ICalendarIdentifiersStatics, 0x06020000)]
        [threading(both)]
        [marshaling_behavior(agile)]
        [version(0x06020000)]
        runtimeclass CalendarIdentifiers
        {
        }

        [version(0x06020000)]
        [static(Windows.Globalization.IClockIdentifiersStatics, 0x06020000)]
        [threading(both)]
        [marshaling_behavior(agile)]
        runtimeclass ClockIdentifiers
        {
        }

        [activatable(Windows.Globalization.IGeographicRegionFactory, 0x06020000)]
        [static(Windows.Globalization.IGeographicRegionStatics, 0x06020000)]
        [version(0x06020000)]
        [marshaling_behavior(agile)]
        [activatable(0x06020000)]
        [threading(both)]
        runtimeclass GeographicRegion
        {
            [default] interface Windows.Globalization.IGeographicRegion;
        }

        [activatable(Windows.Globalization.ILanguageFactory, 0x06020000)]
        [threading(both)]
        [version(0x06020000)]
        [static(Windows.Globalization.ILanguageStatics, 0x06020000)]
        [marshaling_behavior(agile)]
        runtimeclass Language
        {
            [default] interface Windows.Globalization.ILanguage;
        }

        [activatable(Windows.Globalization.ICalendarFactory, 0x06020000)]
        [marshaling_behavior(agile)]
        [version(0x06020000)]
        [activatable(0x06020000)]
        [threading(both)]
        runtimeclass Calendar
        {
            [default] interface Windows.Globalization.ICalendar;
        }

        [marshaling_behavior(agile)]
        [version(0x06020000)]
        [threading(both)]
        [static(Windows.Globalization.IApplicationLanguagesStatics, 0x06020000)]
        runtimeclass ApplicationLanguages
        {
        }
    }
}
