[PATCH] include: Add IOpcFactory and related definitions.

Nikolay Sivov nsivov at codeweavers.com
Wed Aug 29 13:27:08 CDT 2018


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 include/Makefile.in        |  4 ++
 include/msopc.idl          | 84 ++++++++++++++++++++++++++++++++++++++
 include/opcbase.idl        | 28 +++++++++++++
 include/opcobjectmodel.idl | 34 +++++++++++++++
 include/opcparturi.idl     | 71 ++++++++++++++++++++++++++++++++
 5 files changed, 221 insertions(+)
 create mode 100644 include/msopc.idl
 create mode 100644 include/opcbase.idl
 create mode 100644 include/opcobjectmodel.idl
 create mode 100644 include/opcparturi.idl

diff --git a/include/Makefile.in b/include/Makefile.in
index a89fef6eac..ffecb98d9e 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -399,6 +399,7 @@ SOURCES = \
 	msident.idl \
 	msinkaut.idl \
 	msiquery.h \
+	msopc.idl \
 	mssip.h \
 	msstkppg.h \
 	mstask.idl \
@@ -493,6 +494,9 @@ SOURCES = \
 	oledberr.h \
 	oledlg.h \
 	oleidl.idl \
+	opcbase.idl \
+	opcobjectmodel.idl \
+	opcparturi.idl \
 	opnrst.idl \
 	optary.idl \
 	patchapi.h \
diff --git a/include/msopc.idl b/include/msopc.idl
new file mode 100644
index 0000000000..f60ff68712
--- /dev/null
+++ b/include/msopc.idl
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2018 Nikolay Sivov for CodeWeavers
+ *
+ * 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
+ */
+
+import "unknwn.idl";
+import "ocidl.idl";
+
+import "opcbase.idl";
+import "opcobjectmodel.idl";
+import "opcparturi.idl";
+
+interface IOpcUri;
+interface IOpcPartUri;
+interface IOpcPackage;
+interface IOpcDigitalSignatureManager;
+
+[
+    object,
+    uuid(6d0b4446-cd73-4ab3-94f4-8ccdf6116154),
+    pointer_default(ref)
+]
+interface IOpcFactory : IUnknown
+{
+    HRESULT CreatePackageRootUri(
+        [out, retval] IOpcUri **uri
+    );
+
+    HRESULT CreatePartUri(
+        [in, string] LPCWSTR uri,
+        [out, retval] IOpcPartUri **part_uri
+    );
+
+    [local]
+    HRESULT CreateStreamOnFile(
+        [in, string] LPCWSTR filename,
+        [in] OPC_STREAM_IO_MODE io_mode,
+        [in, unique] SECURITY_ATTRIBUTES *sa,
+        [in] DWORD flags,
+        [out, retval] IStream **stream
+    );
+
+    HRESULT CreatePackage(
+        [out, retval] IOpcPackage **package
+    );
+
+    HRESULT ReadPackageFromStream(
+        [in] IStream *stream,
+        [in] OPC_READ_FLAGS flags,
+        [out, retval] IOpcPackage **package
+    );
+
+    HRESULT WritePackageToStream(
+        [in] IOpcPackage *package,
+        [in] OPC_WRITE_FLAGS flags,
+        [in] IStream *stream
+    );
+
+    HRESULT CreateDigitalSignatureManager(
+        [in] IOpcPackage *package,
+        [out, retval] IOpcDigitalSignatureManager **signature_manager
+    );
+}
+
+[
+    uuid(6b2d6Ba0-9f3e-4f27-920b-313cc426a39e)
+]
+coclass OpcFactory
+{
+    interface IOpcFactory;
+};
diff --git a/include/opcbase.idl b/include/opcbase.idl
new file mode 100644
index 0000000000..2cfb885c12
--- /dev/null
+++ b/include/opcbase.idl
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2018 Nikolay Sivov for CodeWeavers
+ *
+ * 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
+
+typedef [v1_enum] enum
+{
+    OPC_STREAM_IO_READ = 1,
+    OPC_STREAM_IO_WRITE = 2,
+} OPC_STREAM_IO_MODE;
+
diff --git a/include/opcobjectmodel.idl b/include/opcobjectmodel.idl
new file mode 100644
index 0000000000..e5370d2e54
--- /dev/null
+++ b/include/opcobjectmodel.idl
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2018 Nikolay Sivov for CodeWeavers
+ *
+ * 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
+
+typedef [v1_enum] enum
+{
+    OPC_READ_DEFAULT = 0,
+    OPC_VALIDATE_ON_LOAD = 1,
+    OPC_CACHE_ON_ACCESS = 2,
+} OPC_READ_FLAGS;
+
+typedef [v1_enum] enum
+{
+    OPC_WRITE_DEFAULT = 0,
+    OPC_WRITE_FORCE_ZIP32 = 1,
+} OPC_WRITE_FLAGS;
diff --git a/include/opcparturi.idl b/include/opcparturi.idl
new file mode 100644
index 0000000000..00b21b9598
--- /dev/null
+++ b/include/opcparturi.idl
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2018 Nikolay Sivov for CodeWeavers
+ *
+ * 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
+ */
+
+import "unknwn.idl";
+import "ocidl.idl";
+
+#if 0
+#pragma makedep install
+#endif
+
+interface IOpcPartUri;
+
+[
+    object,
+    uuid(bc9c1b9b-d62c-49eb-aef0-3b4e0b28ebed),
+    nonextensible,
+    pointer_default(ref)
+]
+interface IOpcUri : IUri
+{
+    HRESULT GetRelationshipsPartUri(
+        [out, retval] IOpcPartUri **part_uri
+    );
+
+    HRESULT GetRelativeUri(
+        [in] IOpcPartUri *part_uri,
+        [out, retval] IUri **relative_uri
+    );
+
+    HRESULT CombinePartUri(
+        [in] IUri *relative_uri,
+        [out, retval] IOpcPartUri **combined
+    );
+}
+
+[
+    object,
+    uuid(7d3babe7-88b2-46ba-85cb-4203cb016c87),
+    nonextensible,
+    pointer_default(ref)
+]
+interface IOpcPartUri : IOpcUri
+{
+    HRESULT ComparePartUri(
+        [in] IOpcPartUri *part_uri,
+        [out, retval] INT32 *result
+    );
+
+    HRESULT GetSourceUri(
+        [out, retval] IOpcUri **source_uri
+    );
+
+    HRESULT IsRelationshipsPartUri(
+        [out, retval] BOOL *result
+    );
+}
-- 
2.18.0




More information about the wine-devel mailing list