/******************************************************************************

Copyright (c) 2000 Microsoft Corporation

Module Name:
    SEMgr.idl

Abstract:
    This file contains the declaration of the set of coclasses and interfaces
    implemented by the Search Engine extensible mechanism.

Revision History:
    Ghim-Sim Chua       (gschua)   04/15/2000
        created

    Davide Massarenti   (Dmassare) 04/30/2000
        modified

******************************************************************************/

cpp_quote( "#include <semgrDID.h>" )
#include <semgrDID.h>

[
    object,
    uuid(833E4160-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHSEManager Interface"),
    pointer_default(unique)
]
interface IPCHSEManager : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_SE_MGR__QUERYSTRING)] HRESULT QueryString( [out, retval] BSTR       *pVal     );
    [propput, id(DISPID_SE_MGR__QUERYSTRING)] HRESULT QueryString( [in]          BSTR        newVal   );

    [propget, id(DISPID_SE_MGR__NUMRESULT  )] HRESULT NumResult  ( [out, retval] long       *pVal     );
    [propput, id(DISPID_SE_MGR__NUMRESULT  )] HRESULT NumResult  ( [in]          long        newVal   );

    [propput, id(DISPID_SE_MGR__ONCOMPLETE        )] HRESULT onComplete        ( [in] IDispatch*  function );
    [propput, id(DISPID_SE_MGR__ONPROGRESS        )] HRESULT onProgress        ( [in] IDispatch*  function );
    [propput, id(DISPID_SE_MGR__ONWRAPPERCOMPLETE )] HRESULT onWrapperComplete ( [in] IDispatch*  function );

    [propget, id(DISPID_SE_MGR__SKU  )] HRESULT SKU ( [out, retval] BSTR *pVal );
    [propget, id(DISPID_SE_MGR__LCID )] HRESULT LCID( [out, retval] long *pVal );

    ////////////////////////////////////////
    //
    // Methods
    //
    [id(DISPID_SE_MGR__EXECUTEASYNCHQUERY)] HRESULT ExecuteAsynchQuery(                                    );
    [id(DISPID_SE_MGR__ABORTQUERY        )] HRESULT AbortQuery        (                                    );
    [id(DISPID_SE_MGR__ENUMENGINE        )] HRESULT EnumEngine        ( [out, retval] IPCHCollection* *ppC );
};

[
    object,
    uuid(833E4161-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHSEWrapperItem Interface"),
    pointer_default(unique)
]
interface IPCHSEWrapperItem : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_SE_WRAPPER__ENABLED    )] HRESULT Enabled    ( [out, retval] VARIANT_BOOL *  pVal );
    [propput, id(DISPID_SE_WRAPPER__ENABLED    )] HRESULT Enabled    ( [in]          VARIANT_BOOL  newVal );
    [propget, id(DISPID_SE_WRAPPER__OWNER      )] HRESULT Owner      ( [out, retval] BSTR         *  pVal );
    [propget, id(DISPID_SE_WRAPPER__DESCRIPTION)] HRESULT Description( [out, retval] BSTR         *  pVal );
    [propget, id(DISPID_SE_WRAPPER__NAME       )] HRESULT Name       ( [out, retval] BSTR         *  pVal );
    [propget, id(DISPID_SE_WRAPPER__ID         )] HRESULT ID         ( [out, retval] BSTR         *  pVal );
    [propget, id(DISPID_SE_WRAPPER__HELPURL    )] HRESULT HelpURL    ( [out, retval] BSTR         *  pVal );
    [propget, id(DISPID_SE_WRAPPER__SEARCHTERMS)] HRESULT SearchTerms( [out, retval] VARIANT      *  pVal );

    ////////////////////////////////////////

    //
    // Methods
    //
    [id(DISPID_SE_WRAPPER__RESULT)] HRESULT Result( [in] long lStart, [in] long lEnd, [out, retval] IPCHCollection* *ppC );

    [id(DISPID_SE_WRAPPER__PARAM   )] HRESULT Param   ( [out, retval] IPCHCollection* *ppC );
    [id(DISPID_SE_WRAPPER__ADDPARAM)] HRESULT AddParam( [in] BSTR bstrParamName, [in         ] VARIANT   varValue );
    [id(DISPID_SE_WRAPPER__GETPARAM)] HRESULT GetParam( [in] BSTR bstrParamName, [out, retval] VARIANT *pvarValue );
    [id(DISPID_SE_WRAPPER__DELPARAM)] HRESULT DelParam( [in] BSTR bstrParamName                                   );
};

[
    object,
    uuid(833E4162-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHSEResultItem Interface"),
    pointer_default(unique)
]
interface IPCHSEResultItem : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_SE_RESULTITEM__TITLE      )] HRESULT Title      ( [out, retval] BSTR   *pVal );
    [propget, id(DISPID_SE_RESULTITEM__URI        )] HRESULT URI        ( [out, retval] BSTR   *pVal );
    [propget, id(DISPID_SE_RESULTITEM__CONTENTTYPE)] HRESULT ContentType( [out, retval] long   *pVal );
    [propget, id(DISPID_SE_RESULTITEM__LOCATION   )] HRESULT Location   ( [out, retval] BSTR   *pVal );
    [propget, id(DISPID_SE_RESULTITEM__HITS       )] HRESULT Hits       ( [out, retval] long   *pVal );
    [propget, id(DISPID_SE_RESULTITEM__RANK       )] HRESULT Rank       ( [out, retval] double *pVal );
    [propget, id(DISPID_SE_RESULTITEM__DESCRIPTION)] HRESULT Description( [out, retval] BSTR   *pVal );
};

////////////////////////////////////////////////////////////////////////////////

typedef enum {
    PARAM_UI1   , // Byte
    PARAM_I2    , // Short
    PARAM_I4    , // long
    PARAM_R4    , // float
    PARAM_R8    , // double
    PARAM_BOOL  , // VARIANT_BOOL
    PARAM_DATE  , // DATE
    PARAM_BSTR  , // BSTR
    PARAM_I1    , // char
    PARAM_UI2   , // unsigned short
    PARAM_UI4   , // unsigned long
    PARAM_INT   , // int
    PARAM_UINT  , // unsigned int
    PARAM_LIST
} ParamTypeEnum;

[
    object,
    uuid(74932280-7AB6-4670-9704-128DEF4932EC),
    dual,
    oleautomation,
    helpstring("IPCHSEParamItem Interface"),
    pointer_default(unique)
]
interface IPCHSEParamItem : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_SE_PARAMITEM__TYPE    )] HRESULT Type    ( [out, retval] ParamTypeEnum *pVal );
    [propget, id(DISPID_SE_PARAMITEM__DISPLAY )] HRESULT Display ( [out, retval] BSTR          *pVal );
    [propget, id(DISPID_SE_PARAMITEM__TITLE   )] HRESULT Name    ( [out, retval] BSTR          *pVal );
    [propget, id(DISPID_SE_PARAMITEM__REQUIRED)] HRESULT Required( [out, retval] VARIANT_BOOL  *pVal );
    [propget, id(DISPID_SE_PARAMITEM__VISIBLE )] HRESULT Visible ( [out, retval] VARIANT_BOOL  *pVal );
    [propget, id(DISPID_SE_PARAMITEM__DATA    )] HRESULT Data    ( [out, retval] VARIANT       *pVal );
};

////////////////////////////////////////////////////////////////////////////////

[
    object,
    uuid(833E4163-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHSEManagerInternal Interface"),
    pointer_default(unique)
]
interface IPCHSEManagerInternal : IDispatch
{
    [id(DISPID_SE_MGRINNER__WRAPPERCOMPLETE       )] HRESULT WrapperComplete( [in] long lSucceeded, [in] IPCHSEWrapperItem* pIPCHSEWICompleted );

    [id(DISPID_SE_MGRINNER__ISNETWORKALIVE        )] HRESULT IsNetworkAlive        (                            [out] VARIANT_BOOL *pvbVar );
    [id(DISPID_SE_MGRINNER__ISDESTINATIONREACHABLE)] HRESULT IsDestinationReachable( [in] BSTR bstrDestination, [out] VARIANT_BOOL *pvbVar );

    [id(DISPID_SE_MGRINNER__LOGRECORD             )] HRESULT LogRecord( [in] BSTR bstrRecord );
};

[
    object,
    uuid(833E4164-AFF7-4AC3-AAC2-9F24C1457BCE),
    dual,
    oleautomation,
    helpstring("IPCHSEWrapperInternal Interface"),
    pointer_default(unique)
]
interface IPCHSEWrapperInternal : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_SE_WRAPPERINNER__QUERYSTRING)] HRESULT QueryString( [out, retval] BSTR *pVal   );
    [propput, id(DISPID_SE_WRAPPERINNER__QUERYSTRING)] HRESULT QueryString( [in]          BSTR  newVal );
    [propget, id(DISPID_SE_WRAPPERINNER__NUMRESULT  )] HRESULT NumResult  ( [out, retval] long *pVal   );
    [propput, id(DISPID_SE_WRAPPERINNER__NUMRESULT  )] HRESULT NumResult  ( [in]          long  newVal );

    ////////////////////////////////////////
    //
    // Methods
    //
    [id(DISPID_SE_WRAPPERINNER__EXECASYNCQUERY     )] HRESULT ExecAsyncQuery     (                                  );
    [id(DISPID_SE_WRAPPERINNER__ABORTQUERY         )] HRESULT AbortQuery         (                                  );
    [id(DISPID_SE_WRAPPERINNER__SECALLBACKINTERFACE)] HRESULT SECallbackInterface( [in] IPCHSEManagerInternal* pMgr );
    [id(DISPID_SE_WRAPPERINNER__INITIALIZE         )] HRESULT Initialize         ( [in] BSTR bstrID, [in] BSTR bstrSKU, [in] long lLCID, [in] BSTR bstrData );
};

////////////////////////////////////////////////////////////////////////////////

[
    uuid(833E4165-AFF7-4AC3-AAC2-9F24C1457BCE),
    helpstring("DPCHSEMgrEvents Interface")
]
dispinterface DPCHSEMgrEvents
{
    properties:
    methods:
    [id(DISPID_SE_EVENTS__ONPROGRESS)] HRESULT onProgress               ( [in] long lDone, [in] long lTotal, [in] BSTR bstrSEWrapperName );
    [id(DISPID_SE_EVENTS__ONCOMPLETE)] HRESULT onComplete               ( [in] long lSucceeded                                           );
    [id(DISPID_SE_EVENTS__ONWRAPPERCOMPLETE)] HRESULT onWrapperComplete ( [in] IPCHSEWrapperItem* pIPCHSEWICompleted                     );
};