//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1997 - 1998
//
//  File:       colschem.idl
//
//  Contents:   Column schema definitions
//
//  History:    Aug-18-1997   AlanPe        Created
//
//--------------------------------------------------------------------------


typedef struct tagDBID DBID;
typedef WORD DBTYPE;


//+-------------------------------------------------------------------------
//
// Interface   : IColumnMapper
//
// Description : A CI provided interface that exposes mappings for global
//               column friendly names to DBIDs
//
//+-------------------------------------------------------------------------

LOCAL_INTERFACE(0b63e37a-9ccc-11d0-bcdb-00805fccce04)
interface IColumnMapper : IUnknown
{
        
    HRESULT    GetPropInfoFromName( [in, string] WCHAR const * wcsPropName,
                                    [out] DBID ** ppPropId,
                                    [out] DBTYPE * pPropType,
                                    [out] unsigned int * puiWidth );

    HRESULT    GetPropInfoFromId( [in] DBID const * pPropId,
                                  [out] WCHAR ** pwcsName,
                                  [out] DBTYPE * pPropType,
                                  [out] unsigned int * puiWidth );

    HRESULT    EnumPropInfo( [in] ULONG iEntry,
                             [out] WCHAR const ** pwcsName,
                             [out] DBID ** ppPropId,
                             [out] DBTYPE * pPropType,
                             [out] unsigned int * puiWidth );

   HRESULT     IsMapUpToDate();
};

const WCHAR * LOCAL_MACHINE = L".";
const WCHAR * SYSTEM_DEFAULT_CAT = L"__SystemDefault__";
const WCHAR * INDEX_SERVER_DEFAULT_CAT = L"__IndexServerDefault__";

//+-------------------------------------------------------------------------
//
// Interface   : IColumnMapperCreator
//
// Description : A CI provided interface that exposes IColumnMapper for a
//               particular catalog on a specified machine.
//
// Notes : Use SYSTEM_DEFAULT_CAT as the catalog name to get at the static
//         list of default properties.
//         Use INDEX_SERVER_DEFAULT_CAT as the catalog name to get at the
//         default properties as specified by the property file in the
//         ContentIndex registry.
//
//+-------------------------------------------------------------------------

LOCAL_INTERFACE(0b63e37b-9ccc-11d0-bcdb-00805fccce04)
interface IColumnMapperCreator : IUnknown
{
    HRESULT GetColumnMapper( [in, string] WCHAR const * wcsMachineName,
                             [in, string] WCHAR const * wcsCatalogName,
                             [out] IColumnMapper ** ppColumnMapper );
};