STD.IDL

//+------------------------------------------------------------------------ 
//
// OLEDBSimpleProvider interface
//
// Copyright (C) Microsoft Corporation, 1993 - 1997.
//
// File: std.idl
//
//-------------------------------------------------------------------------

//-------------------------------------------------------------------------
//
// This file is copied from IE4 build \ie\public\sdk\inc\simpdata.dil
//
//-------------------------------------------------------------------------

// Usage in MSDEV:
//
// 1. Select Tools/Customize
// 2. Go to Tools tab.
// 3. Click on Add...
// 4. Type MIDL.EXE and click OK (or press ENTER)
// 5. Fill in definition of a new tool as follows:
// Menu Text: Compile &IDL file
// Command: MIDL.EXE
// Arguments: /ms_ext /char unsigned /c_ext $(FileName)$(FileExt)
// Initial Dir: $(FileDir)
// 6. Click on Close
//
// Having done this, you can now use MSDEV to compile IDL files (such as
// this one). Just open the file and select Tools/Compile IDL file.
//
// Contact: tedsmith, jerryd, terrylu, or cfranks
//
//-------------------------------------------------------------------------

//+------------------------------------------------------------------------
//
// OLEDBSimpleProvider interface
//
// Copyright (C) Microsoft Corporation, 1993 - 1997.
//
// File: simpdata.idl
//
//-------------------------------------------------------------------------

cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// simpdata.h")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// (C) Copyright 1995-1997 Microsoft Corporation. All Rights Reserved.")
cpp_quote("//")
cpp_quote("// THIS CODE AND INFORMATION IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF")
cpp_quote("// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO")
cpp_quote("// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A")
cpp_quote("// PARTICULAR PURPOSE.")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("")
cpp_quote("#pragma comment(lib,\"uuid.lib\")")
cpp_quote("")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("// Simple Tabular Data.")
cpp_quote("")
cpp_quote("#ifndef SIMPDATA_H")
cpp_quote("#define SIMPDATA_H")

//import "ocidl.idl";
import "objidl.idl";
import "oleidl.idl";
import "oaidl.idl";

// We use signed integers for row and column numbers, starting with the value 1.
// The value 0 refers to any "label" or "header" information, distinct from the
// data. The value -1 refers to any an unknown value, or all values, so, for
// example, iRow = -1, iCol = 2 refers to all of column 2

cpp_quote("#define OSP_IndexLabel (0)")
cpp_quote("#define OSP_IndexAll (~0ul)")
cpp_quote("#define OSP_IndexUnknown (~0ul)")
cpp_quote("")

[
uuid(E0E270C2-C0BE-11d0-8FE4-00A0C90A6341),
helpstring("OLE-DB Simple Provider Type Library"),
lcid(0x409),
version(1.4)
]
library std
{

typedef enum OSPFORMAT
{
OSPFORMAT_RAW = 0, // set/get variant as is
OSPFORMAT_DEFAULT = 0, // default is RAW
OSPFORMAT_FORMATTED = 1, // all variants converted to string representation
OSPFORMAT_HTML = 2 // variant converted to HTML string representation
// (providers not required to implement this).
} OSPFORMAT;

typedef enum OSPRW
{
// All cells are presumed to be readable.
OSPRW_DEFAULT = 1,
OSPRW_READONLY = 0, // readonly
OSPRW_READWRITE = 1, // readwrite
OSPRW_MIXED = 2 // mixed or unknown; most callers will treat
// as READWRITE "Lazy" provider should just
// return OSPRW_MIXED
} OSPRW;

typedef enum OSPFIND
{
OSPFIND_DEFAULT = 0,
OSPFIND_UP = 1, // scan backwards(decreasing row #s)
OSPFIND_CASESENSITIVE = 2
} OSPFIND;

typedef enum OSPCOMP
{
// These values derived from bitmasks
// i.e. GT LT EQ
OSPCOMP_EQ = 1, // OSPCOMP_EQ 1 Equal
OSPCOMP_DEFAULT = 1, // OSPCOMP_EQ is the default
OSPCOMP_LT = 2, // OSPCOMP_LT 1 0 Less than
OSPCOMP_LE = 3, // OSPCOMP_LE 1 1 Less than or equal
OSPCOMP_GE = 4, // OSPCOMP_GT 1 0 0 Greater than or equal
OSPCOMP_GT = 5, // OSPCOMP_GE 1 0 1 Greater than
OSPCOMP_NE = 6, // OSPCOMP_NE 1 1 0 Not equal
} OSPCOMP;

typedef enum OSPXFER
{
OSPXFER_COMPLETE = 0,
OSPXFER_ABORT = 1,
OSPXFER_ERROR = 2
} OSPXFER;

[
object,
uuid(E0E270C1-C0BE-11d0-8FE4-00A0C90A6341),
pointer_default(unique),
local,
version(1.4)
]
interface OLEDBSimpleProviderListener : IUnknown
{
// As noted above; a -1 (STD_IndexAll) can be used in the row or column
// (or both). For example, CellChanged(STD_IndexAll, OSP_IndexAll)
// implies that all rows and columns changed shape.

HRESULT aboutToChangeCell([in] long iRow, [in] long iColumn);
HRESULT cellChanged([in] long iRow, [in] long iColumn);
HRESULT aboutToDeleteRows([in] long iRow, [in] long iColumn);
HRESULT deletedRows([in] long iRow, [in] long cRows);
HRESULT aboutToInsertRows([in] long iRow, [in] long cRows);
HRESULT insertedRows([in] long iRow, [in] long cRows);
HRESULT rowsAvailable([in] long iRow, [in] long cRows);
HRESULT transferComplete([in] OSPXFER xfer);
}

[
object,
uuid(E0E270C0-C0BE-11d0-8FE4-00A0C90A6341),
pointer_default(unique),
local,
version(1.4)
]
interface OLEDBSimpleProvider : IUnknown
{
// Info-retrieving functions:
// ==========================
//
// Note that column names are retrieved using GetString or GetVariant
// with iRow == OSP_IndexLabel. RWStatus for a whole row or column
// can be made with iRow or iColumn == OSP_IndexAll.

HRESULT getRowCount([out,retval] long *pcRows);
HRESULT getColumnCount([out,retval] long *pcColumns);


HRESULT getRWStatus([in] long iRow, [in] long iColumn,
[out, retval] OSPRW *prwStatus);

// Variant-oriented Get/Set:
// =========================
//
// Note that use of VARIANT precludes references.

HRESULT getVariant([in] long iRow, [in] long iColumn,
[in] OSPFORMAT format, [out, retval] VARIANT *pVar );
HRESULT setVariant([in] long iRow, [in] long iColumn,
[in] OSPFORMAT format, [in] VARIANT Var );

// Locale information:
// ===================
//

HRESULT getLocale([out,retval] BSTR *pbstrLocale);

// Deletion and Insertion:
// =======================
//
// For insertion, iRow or iColumn is index *before* which to insert; the
// first inserted row or column will end up with that index.
//
// In case of error, provider may choose to insert or delete only the
// first m of n rows or columns which client requested. OUT parameter
// indicates how many rows or columns actually inserted or deleted. In
// case of success, OUT parameter should be filled in with cRows.

HRESULT deleteRows([in] long iRow, [in] long cRows,
[out, retval] long *pcRowsDeleted );
HRESULT insertRows([in] long iRow, [in] long cRows,
[out, retval] long *pcRowsInserted );

// Find
// Find the first row in column iColumn that contains a value which
// matches val according to the compType.
// To continue searching past the found row, the caller should pass
// *piRowFound+1 as the next iRowStart, or *piRowFound-1 for backward
// searches (STDFIND_UP).

HRESULT find([in] long iRowStart, [in] long iColumn,
[in] VARIANT val,
[in] OSPFIND findFlags,
[in] OSPCOMP compType,
[out, retval] long *piRowFound );

// Establish or detach single event sink.

HRESULT addOLEDBSimpleProviderListener([in] OLEDBSimpleProviderListener *pospIListener);
HRESULT removeOLEDBSimpleProviderListener([in] OLEDBSimpleProviderListener *pospIListener);

// Asynch support

HRESULT isAsync([out, retval] bool *pbAsynch);

HRESULT getEstimatedRows([out, retval] long *piRows);

// Stops any asynchronous download that may be in progress.
HRESULT stopTransfer();
}

cpp_quote("typedef OLEDBSimpleProvider *LPOLEDBSimpleProvider;")

}

cpp_quote("#endif")