//
// 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
    {
        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Resources
        {
            namespace Management
            {
                typedef enum IndexedResourceType IndexedResourceType;

                interface IResourceIndexer;

                interface IResourceIndexerFactory;

                interface IIndexedResourceQualifier;

                interface IIndexedResourceCandidate;

                runtimeclass IndexedResourceCandidate;

                runtimeclass ResourceIndexer;

                runtimeclass IndexedResourceQualifier;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Resources
        {
            namespace Management
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Resources.Management.IndexedResourceQualifier*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Resources.Management.IndexedResourceQualifier*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Resources.Management.IndexedResourceQualifier*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate*>*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Resources
        {
            namespace Management
            {
                [version(0x06020000)]
                enum IndexedResourceType
                {
                    String = 0,
                    Path   = 1
                };

                [uuid(2D4CF9A5-E32F-4AB2-8748-96350A016DA3)]
                [exclusiveto(Windows.ApplicationModel.Resources.Management.ResourceIndexer)]
                [version(0x06020000)]
                interface IResourceIndexer : IInspectable
                {
                    HRESULT IndexFilePath([in] Windows.Foundation.Uri* filePath, [out] [retval] Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate** candidate);
                    HRESULT IndexFileContentsAsync([in] Windows.Foundation.Uri* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate*>*>** operation);
                }

                [uuid(B8DE3F09-31CD-4D97-BD30-8D39F742BC61)]
                [exclusiveto(Windows.ApplicationModel.Resources.Management.ResourceIndexer)]
                [version(0x06020000)]
                interface IResourceIndexerFactory : IInspectable
                {
                    HRESULT CreateResourceIndexer([in] Windows.Foundation.Uri* projectRoot, [out] [retval] Windows.ApplicationModel.Resources.Management.ResourceIndexer** indexer);
                }

                [uuid(DAE3BB9B-D304-497F-A168-A340042C8ADB)]
                [version(0x06020000)]
                [exclusiveto(Windows.ApplicationModel.Resources.Management.IndexedResourceQualifier)]
                interface IIndexedResourceQualifier : IInspectable
                {
                    [propget] HRESULT QualifierName([out] [retval] HSTRING* value);
                    [propget] HRESULT QualifierValue([out] [retval] HSTRING* value);
                }

                [uuid(0E619EF3-FAEC-4414-A9D7-54ACD5953F29)]
                [version(0x06020000)]
                [exclusiveto(Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate)]
                interface IIndexedResourceCandidate : IInspectable
                {
                    [propget] HRESULT Type([out] [retval] Windows.ApplicationModel.Resources.Management.IndexedResourceType* value);
                    [propget] HRESULT Uri([out] [retval] Windows.Foundation.Uri** value);
                    [propget] HRESULT Metadata([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, HSTRING>** value);
                    [propget] HRESULT Qualifiers([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Resources.Management.IndexedResourceQualifier*>** value);
                    [propget] HRESULT ValueAsString([out] [retval] HSTRING* value);
                    HRESULT GetQualifierValue([in] HSTRING qualifierName, [out] [retval] HSTRING* qualifierValue);
                }

                [version(0x06020000)]
                [marshaling_behavior(agile)]
                runtimeclass IndexedResourceCandidate
                {
                    [default] interface Windows.ApplicationModel.Resources.Management.IIndexedResourceCandidate;
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x06020000)]
                [activatable(Windows.ApplicationModel.Resources.Management.IResourceIndexerFactory, 0x06020000)]
                runtimeclass ResourceIndexer
                {
                    [default] interface Windows.ApplicationModel.Resources.Management.IResourceIndexer;
                }

                [marshaling_behavior(agile)]
                [version(0x06020000)]
                runtimeclass IndexedResourceQualifier
                {
                    [default] interface Windows.ApplicationModel.Resources.Management.IIndexedResourceQualifier;
                }
            }
        }
    }
}
