c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden/*
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * Copyright 2009 Huw Davies
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden *
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * This library is free software; you can redistribute it and/or
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * modify it under the terms of the GNU Lesser General Public
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * License as published by the Free Software Foundation; either
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * version 2.1 of the License, or (at your option) any later version.
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden *
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * This library is distributed in the hope that it will be useful,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * but WITHOUT ANY WARRANTY; without even the implied warranty of
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * Lesser General Public License for more details.
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden *
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * You should have received a copy of the GNU Lesser General Public
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * License along with this library; if not, write to the Free Software
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden */
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden/*
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * a choice of LGPL license versions is made available with the language indicating
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * that LGPLv2 or any later version may be used, or where a choice of which version
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden * of the LGPL is applied is otherwise unspecified.
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden */
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Maddenimport "oaidl.idl";
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Maddenimport "ocidl.idl";
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Maddenimport "oledb.idl";
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden[
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden object,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden pointer_default(unique),
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden uuid(0c733a8d-2a1c-11ce-ade5-00aa0044773d)
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden]
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Maddeninterface IDataConvert : IUnknown
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden{
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden typedef DWORD DBDATACONVERT;
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden enum DBDATACONVERTENUM
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden {
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden DBDATACONVERT_DEFAULT = 0,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden DBDATACONVERT_SETDATABEHAVIOR = 1,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden DBDATACONVERT_LENGTHFROMNTS = 2,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden DBDATACONVERT_DSTISFIXEDLENGTH = 4,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden DBDATACONVERT_DECIMALSCALE = 8
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden };
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [local] HRESULT DataConvert([in] DBTYPE wSrcType,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in] DBTYPE wDstType,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in] DBLENGTH cbSrcLength,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in, out] DBLENGTH *pcbDstLength,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in] void *pSrc,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [out] void *pDst,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in] DBLENGTH cbDstMaxLength,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in] DBSTATUS dbsSrcStatus,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [out] DBSTATUS *pdbsDstStatus,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in] BYTE bPrecision,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in] BYTE bScale,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in] DBDATACONVERT dwFlags);
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden HRESULT CanConvert([in] DBTYPE wSrcType,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in] DBTYPE wDstType);
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [local] HRESULT GetConversionSize([in] DBTYPE wSrcType,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in] DBTYPE wDstType,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in] DBLENGTH *pcbSrcLength,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [out] DBLENGTH *pcbDstLength,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in, size_is(*pcbSrcLength)] void *pSrc);
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden};
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden[
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden object,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden pointer_default(unique),
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden uuid(0c733a9c-2a1c-11ce-ade5-00aa0044773d)
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden]
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Maddeninterface IDCInfo : IUnknown
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden{
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden typedef DWORD DCINFOTYPE;
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden enum DCINFOTYPEENUM
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden {
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden DCINFOTYPE_VERSION = 1
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden };
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden typedef struct tagDCINFO
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden {
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden DCINFOTYPE eInfoType;
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden VARIANT vData;
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden } DCINFO;
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden HRESULT GetInfo([in] ULONG cInfo,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in, size_is(cInfo)] DCINFOTYPE rgeInfoType[],
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [out, size_is(cInfo)] DCINFO **prgInfo);
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden HRESULT SetInfo([in] ULONG cInfo,
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden [in, size_is(cInfo)] DCINFO prgInfo[]);
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden};
c8ab19d28fde5eda3b2daab4b1124887681fedf9Neil Madden