55 lines
1.7 KiB
C++
55 lines
1.7 KiB
C++
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved
|
|
|
|
// SampleSpellCheckProviderFactory.cpp : Implementation of the sample provider factory
|
|
|
|
#include "SampleSpellCheckProviderFactory.h"
|
|
#include "SampleSpellCheckProvider.h"
|
|
#include "util.h"
|
|
#include "EnumString.h"
|
|
|
|
const PCWSTR supportedLanguages[] = {L"en-us"};
|
|
|
|
IFACEMETHODIMP CSampleSpellCheckProviderFactory::get_SupportedLanguages(_COM_Outptr_ IEnumString** value)
|
|
{
|
|
return CreateEnumString(supportedLanguages, supportedLanguages + ARRAYSIZE(supportedLanguages), value);
|
|
}
|
|
|
|
IFACEMETHODIMP CSampleSpellCheckProviderFactory::IsSupported(_In_ PCWSTR languageTag, _Out_ BOOL* value)
|
|
{
|
|
*value = FALSE;
|
|
for (const PCWSTR* tag = supportedLanguages; tag != supportedLanguages + ARRAYSIZE(supportedLanguages); ++tag)
|
|
{
|
|
if (CaseInsensitiveIsEqual(languageTag, *tag))
|
|
{
|
|
*value = TRUE;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
IFACEMETHODIMP CSampleSpellCheckProviderFactory::CreateSpellCheckProvider(_In_ PCWSTR languageTag, _COM_Outptr_ ISpellCheckProvider** value)
|
|
{
|
|
BOOL isSupported = FALSE;
|
|
HRESULT hr = IsSupported(languageTag, &isSupported);
|
|
if (SUCCEEDED(hr) && !isSupported)
|
|
{
|
|
hr = E_INVALIDARG;
|
|
}
|
|
|
|
CSampleSpellCheckProvider* spellProvider = nullptr;
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
hr = CSampleSpellCheckProvider::CreateInstance(languageTag, &spellProvider);
|
|
}
|
|
|
|
*value = spellProvider;
|
|
return hr;
|
|
}
|