//-----------------------------------------------------------------------------
// File:			rstind.idl
//
// Copyright:		Copyright (c) Microsoft Corporation          
//
// Contents: 		OLE DB interface definition
//
// Comments: 		
//
//-----------------------------------------------------------------------------

#include "idlmulti.h"
//  
    
    LOCAL_INTERFACE(0c733a82-2a1c-11ce-ade5-00aa0044773d)

    
interface IRowsetIndex : IUnknown {

typedef DWORD DBSEEK;

enum DBSEEKENUM
    {	DBSEEK_INVALID		= 0,
	DBSEEK_FIRSTEQ		= 0x1,
	DBSEEK_LASTEQ		= 0x2,
	DBSEEK_AFTEREQ		= 0x4,
	DBSEEK_AFTER		= 0x8,
	DBSEEK_BEFOREEQ		= 0x10,
	DBSEEK_BEFORE		= 0x20
    };

cpp_quote("#define	DBSEEK_GE	DBSEEK_AFTEREQ")
cpp_quote("#define	DBSEEK_GT	DBSEEK_AFTER")
cpp_quote("#define	DBSEEK_LE	DBSEEK_BEFOREEQ")
cpp_quote("#define	DBSEEK_LT	DBSEEK_BEFORE")

typedef DWORD DBRANGE;

enum DBRANGEENUM {
	DBRANGE_INCLUSIVESTART	= 0x00,
	DBRANGE_INCLUSIVEEND	= 0x00,
	DBRANGE_EXCLUSIVESTART	= 0x01,
	DBRANGE_EXCLUSIVEEND	= 0x02,
	DBRANGE_EXCLUDENULLS	= 0x04,
	DBRANGE_PREFIX			= 0x08,
	DBRANGE_MATCH			= 0x10,
};

cpp_quote("//@@@+ V2.0")
cpp_quote("#if( OLEDBVER >= 0x0200 )")
enum DBRANGEENUM20 {
	DBRANGE_MATCH_N_SHIFT	= 0x18,
	DBRANGE_MATCH_N_MASK	= 0xff,
};
cpp_quote("#endif // OLEDBVER >= 0x0200")
cpp_quote("//@@@- V2.0")

	HRESULT GetIndexInfo(
		[in, out] DBORDINAL * pcKeyColumns,
		[out, size_is(,*pcKeyColumns)] DBINDEXCOLUMNDESC ** prgIndexColumnDesc,
		[in, out] ULONG * pcIndexPropertySets,
		[out, size_is(,*pcIndexPropertySets)] DBPROPSET ** prgIndexPropertySets
	);

	HRESULT Seek(
		[in] HACCESSOR hAccessor,
		[in] DBORDINAL cKeyValues,
		[in] void * pData,
		[in] DBSEEK dwSeekOptions
	);

	HRESULT SetRange(
		[in] HACCESSOR hAccessor,
		[in] DBORDINAL cStartKeyColumns,
		[in] void * pStartData,
		[in] DBORDINAL cEndKeyColumns,
		[in] void * pEndData,
		[in] DBRANGE dwRangeOptions
	);

}
