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

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 Data
    {
        namespace Text
        {
            typedef enum UnicodeGeneralCategory UnicodeGeneralCategory;

            typedef enum UnicodeNumericType UnicodeNumericType;

            typedef enum AlternateNormalizationFormat AlternateNormalizationFormat;

            typedef struct TextSegment TextSegment;

            delegate WordSegmentsTokenizingHandler;

            delegate SelectableWordSegmentsTokenizingHandler;

            interface ISemanticTextQueryFactory;

            interface ISemanticTextQuery;

            interface IUnicodeCharactersStatics;

            interface IAlternateWordForm;

            interface ISelectableWordSegment;

            interface IWordSegment;

            interface IWordsSegmenter;

            interface IWordsSegmenterFactory;

            interface ISelectableWordsSegmenter;

            interface ISelectableWordsSegmenterFactory;

            runtimeclass SemanticTextQuery;

            runtimeclass UnicodeCharacters;

            runtimeclass AlternateWordForm;

            runtimeclass WordSegment;

            runtimeclass WordsSegmenter;

            runtimeclass SelectableWordSegment;

            runtimeclass SelectableWordsSegmenter;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Data
    {
        namespace Text
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Data.Text.AlternateWordForm*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Data.Text.SelectableWordSegment*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Data.Text.TextSegment>;

                interface Windows.Foundation.Collections.IIterable<Windows.Data.Text.WordSegment*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Foundation.Collections.IVectorView<Windows.Data.Text.TextSegment>*>*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Data.Text.AlternateWordForm*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Data.Text.SelectableWordSegment*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Data.Text.TextSegment>;

                interface Windows.Foundation.Collections.IIterator<Windows.Data.Text.WordSegment*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Foundation.Collections.IVectorView<Windows.Data.Text.TextSegment>*>*>;

                interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Foundation.Collections.IVectorView<Windows.Data.Text.TextSegment>*>;

                interface Windows.Foundation.Collections.IMapView<HSTRING, Windows.Foundation.Collections.IVectorView<Windows.Data.Text.TextSegment>*>;

                interface Windows.Foundation.Collections.IMap<HSTRING, Windows.Foundation.Collections.IVectorView<Windows.Data.Text.TextSegment>*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Data.Text.AlternateWordForm*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Data.Text.SelectableWordSegment*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Data.Text.TextSegment>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Data.Text.WordSegment*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Data
    {
        namespace Text
        {
            [version(0x06030000)]
            enum UnicodeGeneralCategory
            {
                UppercaseLetter         = 0,
                LowercaseLetter         = 1,
                TitlecaseLetter         = 2,
                ModifierLetter          = 3,
                OtherLetter             = 4,
                NonspacingMark          = 5,
                SpacingCombiningMark    = 6,
                EnclosingMark           = 7,
                DecimalDigitNumber      = 8,
                LetterNumber            = 9,
                OtherNumber             = 10,
                SpaceSeparator          = 11,
                LineSeparator           = 12,
                ParagraphSeparator      = 13,
                Control                 = 14,
                Format                  = 15,
                Surrogate               = 16,
                PrivateUse              = 17,
                ConnectorPunctuation    = 18,
                DashPunctuation         = 19,
                OpenPunctuation         = 20,
                ClosePunctuation        = 21,
                InitialQuotePunctuation = 22,
                FinalQuotePunctuation   = 23,
                OtherPunctuation        = 24,
                MathSymbol              = 25,
                CurrencySymbol          = 26,
                ModifierSymbol          = 27,
                OtherSymbol             = 28,
                NotAssigned             = 29
            };

            [version(0x06030000)]
            enum UnicodeNumericType
            {
                None    = 0,
                Decimal = 1,
                Digit   = 2,
                Numeric = 3
            };

            [version(0x06030000)]
            enum AlternateNormalizationFormat
            {
                NotNormalized = 0,
                Number        = 1,
                Currency      = 3,
                Date          = 4,
                Time          = 5
            };

            [version(0x06030000)]
            struct TextSegment
            {
                UINT32 StartPosition;
                UINT32 Length;
            };

            [uuid(A5DD6357-BF2A-4C4F-A31F-29E71C6F8B35)]
            [version(0x06030000)]
            delegate
                HRESULT WordSegmentsTokenizingHandler([in] Windows.Foundation.Collections.IIterable<Windows.Data.Text.WordSegment*>* precedingWords, [in] Windows.Foundation.Collections.IIterable<Windows.Data.Text.WordSegment*>* words);

            [uuid(3A3DFC9C-AEDE-4DC7-9E6C-41C044BD3592)]
            [version(0x06030000)]
            delegate
                HRESULT SelectableWordSegmentsTokenizingHandler([in] Windows.Foundation.Collections.IIterable<Windows.Data.Text.SelectableWordSegment*>* precedingWords, [in] Windows.Foundation.Collections.IIterable<Windows.Data.Text.SelectableWordSegment*>* words);

            [exclusiveto(Windows.Data.Text.SemanticTextQuery)]
            [uuid(238C0503-F995-4587-8777-A2B7D80ACFEF)]
            [version(0x06030000)]
            interface ISemanticTextQueryFactory : IInspectable
            {
                HRESULT Create([in] HSTRING aqsFilter, [out] [retval] Windows.Data.Text.SemanticTextQuery** result);
                HRESULT CreateWithLanguage([in] HSTRING aqsFilter, [in] HSTRING filterLanguage, [out] [retval] Windows.Data.Text.SemanticTextQuery** result);
            }

            [exclusiveto(Windows.Data.Text.SemanticTextQuery)]
            [uuid(6A1CAB51-1FB2-4909-80B8-35731A2B3E7F)]
            [version(0x06030000)]
            interface ISemanticTextQuery : IInspectable
            {
                HRESULT Find([in] HSTRING content, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Data.Text.TextSegment>** result);
                HRESULT FindInProperty([in] HSTRING propertyContent, [in] HSTRING propertyName, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Data.Text.TextSegment>** result);
            }

            [exclusiveto(Windows.Data.Text.UnicodeCharacters)]
            [uuid(97909E87-9291-4F91-B6C8-B6E359D7A7FB)]
            [version(0x06030000)]
            interface IUnicodeCharactersStatics : IInspectable
            {
                HRESULT GetCodepointFromSurrogatePair([in] UINT32 highSurrogate, [in] UINT32 lowSurrogate, [out] [retval] UINT32* codepoint);
                HRESULT GetSurrogatePairFromCodepoint([in] UINT32 codepoint, [out] WCHAR* highSurrogate, [out] WCHAR* lowSurrogate);
                HRESULT IsHighSurrogate([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT IsLowSurrogate([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT IsSupplementary([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT IsNoncharacter([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT IsWhitespace([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT IsAlphabetic([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT IsCased([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT IsUppercase([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT IsLowercase([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT IsIdStart([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT IsIdContinue([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT IsGraphemeBase([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT IsGraphemeExtend([in] UINT32 codepoint, [out] [retval] boolean* value);
                HRESULT GetNumericType([in] UINT32 codepoint, [out] [retval] Windows.Data.Text.UnicodeNumericType* value);
                HRESULT GetGeneralCategory([in] UINT32 codepoint, [out] [retval] Windows.Data.Text.UnicodeGeneralCategory* value);
            }

            [exclusiveto(Windows.Data.Text.AlternateWordForm)]
            [uuid(47396C1E-51B9-4207-9146-248E636A1D1D)]
            [version(0x06030000)]
            interface IAlternateWordForm : IInspectable
            {
                [propget] HRESULT SourceTextSegment([out] [retval] Windows.Data.Text.TextSegment* value);
                [propget] HRESULT AlternateText([out] [retval] HSTRING* value);
                [propget] HRESULT NormalizationFormat([out] [retval] Windows.Data.Text.AlternateNormalizationFormat* value);
            }

            [exclusiveto(Windows.Data.Text.SelectableWordSegment)]
            [uuid(916A4CB7-8AA7-4C78-B374-5DEDB752E60B)]
            [version(0x06030000)]
            interface ISelectableWordSegment : IInspectable
            {
                [propget] HRESULT Text([out] [retval] HSTRING* value);
                [propget] HRESULT SourceTextSegment([out] [retval] Windows.Data.Text.TextSegment* value);
            }

            [exclusiveto(Windows.Data.Text.WordSegment)]
            [uuid(D2D4BA6D-987C-4CC0-B6BD-D49A11B38F9A)]
            [version(0x06030000)]
            interface IWordSegment : IInspectable
            {
                [propget] HRESULT Text([out] [retval] HSTRING* value);
                [propget] HRESULT SourceTextSegment([out] [retval] Windows.Data.Text.TextSegment* value);
                [propget] HRESULT AlternateForms([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Data.Text.AlternateWordForm*>** value);
            }

            [exclusiveto(Windows.Data.Text.WordsSegmenter)]
            [uuid(86B4D4D1-B2FE-4E34-A81D-66640300454F)]
            [version(0x06030000)]
            interface IWordsSegmenter : IInspectable
            {
                [propget] HRESULT ResolvedLanguage([out] [retval] HSTRING* value);
                HRESULT GetTokenAt([in] HSTRING text, [in] UINT32 startIndex, [out] [retval] Windows.Data.Text.WordSegment** result);
                HRESULT GetTokens([in] HSTRING text, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Data.Text.WordSegment*>** result);
                HRESULT Tokenize([in] HSTRING text, [in] UINT32 startIndex, [in] Windows.Data.Text.WordSegmentsTokenizingHandler* handler);
            }

            [exclusiveto(Windows.Data.Text.WordsSegmenter)]
            [uuid(E6977274-FC35-455C-8BFB-6D7F4653CA97)]
            [version(0x06030000)]
            interface IWordsSegmenterFactory : IInspectable
            {
                HRESULT CreateWithLanguage([in] HSTRING language, [out] [retval] Windows.Data.Text.WordsSegmenter** result);
            }

            [exclusiveto(Windows.Data.Text.SelectableWordsSegmenter)]
            [uuid(F6DC31E7-4B13-45C5-8897-7D71269E085D)]
            [version(0x06030000)]
            interface ISelectableWordsSegmenter : IInspectable
            {
                [propget] HRESULT ResolvedLanguage([out] [retval] HSTRING* value);
                HRESULT GetTokenAt([in] HSTRING text, [in] UINT32 startIndex, [out] [retval] Windows.Data.Text.SelectableWordSegment** result);
                HRESULT GetTokens([in] HSTRING text, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Data.Text.SelectableWordSegment*>** result);
                HRESULT Tokenize([in] HSTRING text, [in] UINT32 startIndex, [in] Windows.Data.Text.SelectableWordSegmentsTokenizingHandler* handler);
            }

            [exclusiveto(Windows.Data.Text.SelectableWordsSegmenter)]
            [uuid(8C7A7648-6057-4339-BC70-F210010A4150)]
            [version(0x06030000)]
            interface ISelectableWordsSegmenterFactory : IInspectable
            {
                HRESULT CreateWithLanguage([in] HSTRING language, [out] [retval] Windows.Data.Text.SelectableWordsSegmenter** result);
            }

            [activatable(Windows.Data.Text.ISemanticTextQueryFactory, 0x06030000)]
            [marshaling_behavior(agile)]
            [version(0x06030000)]
            runtimeclass SemanticTextQuery
            {
                [default] interface Windows.Data.Text.ISemanticTextQuery;
            }

            [marshaling_behavior(agile)]
            [static(Windows.Data.Text.IUnicodeCharactersStatics, 0x06030000)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass UnicodeCharacters
            {
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass AlternateWordForm
            {
                [default] [version(0x06030000)] interface Windows.Data.Text.IAlternateWordForm;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass WordSegment
            {
                [default] [version(0x06030000)] interface Windows.Data.Text.IWordSegment;
            }

            [activatable(Windows.Data.Text.IWordsSegmenterFactory, 0x06030000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass WordsSegmenter
            {
                [default] [version(0x06030000)] interface Windows.Data.Text.IWordsSegmenter;
            }

            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass SelectableWordSegment
            {
                [default] [version(0x06030000)] interface Windows.Data.Text.ISelectableWordSegment;
            }

            [activatable(Windows.Data.Text.ISelectableWordsSegmenterFactory, 0x06030000)]
            [marshaling_behavior(agile)]
            [threading(both)]
            [version(0x06030000)]
            runtimeclass SelectableWordsSegmenter
            {
                [default] [version(0x06030000)] interface Windows.Data.Text.ISelectableWordsSegmenter;
            }
        }
    }
}
