Commit e0622812 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

opcservices: Implement IOpcPart::GetRelationshipSet().

parent 42792e2f
......@@ -46,6 +46,7 @@ struct opc_part
IOpcPartUri *name;
WCHAR *content_type;
DWORD compression_options;
IOpcRelationshipSet *relationship_set;
};
struct opc_part_set
......@@ -91,6 +92,8 @@ static inline struct opc_relationship *impl_from_IOpcRelationship(IOpcRelationsh
return CONTAINING_RECORD(iface, struct opc_relationship, IOpcRelationship_iface);
}
static HRESULT opc_relationship_set_create(IOpcRelationshipSet **relationship_set);
static WCHAR *opc_strdupW(const WCHAR *str)
{
WCHAR *ret = NULL;
......@@ -143,6 +146,8 @@ static ULONG WINAPI opc_part_Release(IOpcPart *iface)
if (!refcount)
{
if (part->relationship_set)
IOpcRelationshipSet_Release(part->relationship_set);
IOpcPartUri_Release(part->name);
CoTaskMemFree(part->content_type);
heap_free(part);
......@@ -153,9 +158,18 @@ static ULONG WINAPI opc_part_Release(IOpcPart *iface)
static HRESULT WINAPI opc_part_GetRelationshipSet(IOpcPart *iface, IOpcRelationshipSet **relationship_set)
{
FIXME("iface %p, relationship_set %p stub!\n", iface, relationship_set);
struct opc_part *part = impl_from_IOpcPart(iface);
HRESULT hr;
return E_NOTIMPL;
TRACE("iface %p, relationship_set %p.\n", iface, relationship_set);
if (!part->relationship_set && FAILED(hr = opc_relationship_set_create(&part->relationship_set)))
return hr;
*relationship_set = part->relationship_set;
IOpcRelationshipSet_AddRef(*relationship_set);
return S_OK;
}
static HRESULT WINAPI opc_part_GetContentStream(IOpcPart *iface, IStream **stream)
......
......@@ -74,6 +74,15 @@ static void test_package(void)
hr = IOpcPartSet_CreatePart(partset, part_uri, typeW, OPC_COMPRESSION_NONE, &part);
ok(SUCCEEDED(hr), "Failed to create a part, hr %#x.\n", hr);
hr = IOpcPart_GetRelationshipSet(part, &relset);
ok(SUCCEEDED(hr), "Failed to get relationship set, hr %#x.\n", hr);
hr = IOpcPart_GetRelationshipSet(part, &relset2);
ok(SUCCEEDED(hr), "Failed to get relationship set, hr %#x.\n", hr);
ok(relset == relset2, "Expected same part set instance.\n");
IOpcRelationshipSet_Release(relset);
IOpcRelationshipSet_Release(relset2);
ret = FALSE;
hr = IOpcPartSet_PartExists(partset, part_uri, &ret);
todo_wine {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment