xpmgr/BuildTools/Include/ElsCore.h

198 lines
5.0 KiB
C

/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
ElsCore.h
Abstract:
This file contains macros/typedef/function prototypes that are common for ELS.
--*/
#ifndef __ELS_CORE__
#define __ELS_CORE__
#ifdef __cplusplus
extern "C" {
#endif
struct _MAPPING_PROPERTY_BAG;
typedef void (CALLBACK* PFN_MAPPINGCALLBACKPROC)(struct _MAPPING_PROPERTY_BAG *pBag, LPVOID data, DWORD dwDataSize, HRESULT Result);
//
// Service types constants used in MAPPING_ENUM_OPTIONS (ServiceType field)
//
#define ALL_SERVICE_TYPES 0
#define HIGHLEVEL_SERVICE_TYPES 1
#define LOWLEVEL_SERVICE_TYPES 2
//
// Online service constants used in MAPPING_ENUM_OPTIONS (OnlineService field)
//
#define ALL_SERVICES 0
#define ONLINE_SERVICES 1
#define OFFLINE_SERVICES 2
//
// Public ELS structures
//
typedef struct _MAPPING_SERVICE_INFO
{
size_t Size;
LPWSTR pszCopyright;
WORD wMajorVersion;
WORD wMinorVersion;
WORD wBuildVersion;
WORD wStepVersion;
DWORD dwInputContentTypesCount;
LPWSTR *prgInputContentTypes;
DWORD dwOutputContentTypesCount;
LPWSTR *prgOutputContentTypes;
DWORD dwInputLanguagesCount;
LPWSTR *prgInputLanguages;
DWORD dwOutputLanguagesCount;
LPWSTR *prgOutputLanguages;
DWORD dwInputScriptsCount;
LPWSTR *prgInputScripts;
DWORD dwOutputScriptsCount;
LPWSTR *prgOutputScripts;
GUID guid;
LPWSTR pszCategory;
LPWSTR pszDescription;
DWORD dwPrivateDataSize;
LPVOID pPrivateData;
LPVOID pContext;
unsigned IsOneToOneLanguageMapping : 1;
unsigned HasSubservices : 1;
unsigned OnlineOnly : 1;
unsigned ServiceType : 2;
} MAPPING_SERVICE_INFO, *PMAPPING_SERVICE_INFO;
typedef struct _MAPPING_ENUM_OPTIONS
{
size_t Size;
LPWSTR pszCategory;
LPWSTR pszInputLanguage;
LPWSTR pszOutputLanguage;
LPWSTR pszInputScript;
LPWSTR pszOutputScript;
LPWSTR pszInputContentType;
LPWSTR pszOutputContentType;
GUID *pGuid;
unsigned OnlineService : 2;
unsigned ServiceType : 2;
} MAPPING_ENUM_OPTIONS, *PMAPPING_ENUM_OPTIONS;
typedef struct _MAPPING_OPTIONS
{
size_t Size;
LPWSTR pszInputLanguage;
LPWSTR pszOutputLanguage;
LPWSTR pszInputScript;
LPWSTR pszOutputScript;
LPWSTR pszInputContentType;
LPWSTR pszOutputContentType;
LPWSTR pszUILanguage;
PFN_MAPPINGCALLBACKPROC pfnRecognizeCallback;
LPVOID pRecognizeCallerData;
DWORD dwRecognizeCallerDataSize;
PFN_MAPPINGCALLBACKPROC pfnActionCallback;
LPVOID pActionCallerData;
DWORD dwActionCallerDataSize;
DWORD dwServiceFlag;
unsigned GetActionDisplayName : 1;
} MAPPING_OPTIONS, *PMAPPING_OPTIONS;
typedef struct _MAPPING_DATA_RANGE
{
DWORD dwStartIndex;
DWORD dwEndIndex;
LPWSTR pszDescription;
DWORD dwDescriptionLength;
LPVOID pData;
DWORD dwDataSize;
LPWSTR pszContentType;
LPWSTR *prgActionIds;
DWORD dwActionsCount;
LPWSTR *prgActionDisplayNames;
} MAPPING_DATA_RANGE, *PMAPPING_DATA_RANGE;
typedef struct _MAPPING_PROPERTY_BAG
{
size_t Size;
PMAPPING_DATA_RANGE prgResultRanges;
DWORD dwRangesCount;
LPVOID pServiceData;
DWORD dwServiceDataSize;
LPVOID pCallerData;
DWORD dwCallerDataSize;
LPVOID pContext;
} MAPPING_PROPERTY_BAG, *PMAPPING_PROPERTY_BAG;
//
// Public ELS APIs
//
HRESULT
WINAPI
MappingGetServices(
__in_opt PMAPPING_ENUM_OPTIONS pOptions,
__out PMAPPING_SERVICE_INFO *prgServices,
__out DWORD *pdwServicesCount
);
HRESULT
WINAPI
MappingFreeServices(
__in PMAPPING_SERVICE_INFO pServiceInfo
);
HRESULT
WINAPI
MappingRecognizeText(
__in PMAPPING_SERVICE_INFO pServiceInfo,
__in_ecount(dwLength) LPCWSTR pszText,
__in DWORD dwLength,
__in DWORD dwIndex,
__in_opt PMAPPING_OPTIONS pOptions,
__inout PMAPPING_PROPERTY_BAG pbag
);
HRESULT
WINAPI
MappingDoAction(
__inout PMAPPING_PROPERTY_BAG pBag,
__in DWORD dwRangeIndex,
__in LPCWSTR pszActionId
);
HRESULT
WINAPI
MappingFreePropertyBag(
__in PMAPPING_PROPERTY_BAG pBag
);
#ifdef __cplusplus
};
#endif
#endif // __ELS_CORE__