diff --git a/include/Makefile.in b/include/Makefile.in index 24439dc7522..3df4da64233 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -616,6 +616,7 @@ SOURCES = \ rstinf.idl \ rstloc.idl \ rstnot.idl \ + rstupd.idl \ rtutils.h \ rtworkq.idl \ sal.h \ diff --git a/include/oledb.idl b/include/oledb.idl index 256d5fc7917..5609e219320 100644 --- a/include/oledb.idl +++ b/include/oledb.idl @@ -75,6 +75,7 @@ typedef DWORD_PTR DBHASHVALUE; #include "cvttyp.idl" #include "cmdpre.idl" #include "rstchg.idl" +#include "rstupd.idl" cpp_quote("#include ") diff --git a/include/rstupd.idl b/include/rstupd.idl new file mode 100644 index 00000000000..c823658edba --- /dev/null +++ b/include/rstupd.idl @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2020 Alistair Leslie-Hughes + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ +#if 0 +#pragma makedep install +#endif + +[ + local, + object, + uuid(0c733a6d-2a1c-11ce-ade5-00aa0044773d), + pointer_default(unique) +] +interface IRowsetUpdate : IRowsetChange +{ + typedef DWORD DBPENDINGSTATUS; + + enum DBPENDINGSTATUSENUM + { + DBPENDINGSTATUS_NEW = 0x01, + DBPENDINGSTATUS_CHANGED = 0x02, + DBPENDINGSTATUS_DELETED = 0x04, + DBPENDINGSTATUS_UNCHANGED = 0x08, + DBPENDINGSTATUS_INVALIDROW = 0x10, + }; + + HRESULT GetOriginalData([in] HROW row, [in] HACCESSOR accessor, [out] void *data ); + + HRESULT GetPendingRows([in] HCHAPTER reserved, [in] DBPENDINGSTATUS status, [in, out] DBCOUNTITEM *pending_cnt, + [out, size_is(,*pending_cnt)] HROW **rending_rows, + [out, size_is(,*pending_cnt)] DBPENDINGSTATUS **pending_status); + + HRESULT GetRowStatus([in] HCHAPTER reserved, [in] DBCOUNTITEM count, [in, size_is(count)] const HROW rows[], + [out, size_is(count)] DBPENDINGSTATUS status[]); + + HRESULT Undo([in] HCHAPTER reserved, [in] DBCOUNTITEM count, [in, size_is(count)] const HROW rows[], + [in, out] DBCOUNTITEM *undone_cnt, [out, size_is(,*undone_cnt)] HROW **undone, + [out, size_is(,*undone_cnt)] DBROWSTATUS ** status); + + HRESULT Update([in] HCHAPTER reserved, [in] DBCOUNTITEM count, [in, size_is(count)] const HROW rows[], + [in, out] DBCOUNTITEM *row_cnt, [out, size_is(,*row_cnt)] HROW **hrows, + [out, size_is(,*row_cnt)] DBROWSTATUS **status); +}