Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
a8b38fa2
Commit
a8b38fa2
authored
Jul 11, 2006
by
Mike McCormack
Committed by
Alexandre Julliard
Jul 12, 2006
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ole32: Implement IPropertyStorage::Enum using enumx.
parent
6c21ac25
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
102 additions
and
3 deletions
+102
-3
stg_prop.c
dlls/ole32/stg_prop.c
+102
-3
No files found.
dlls/ole32/stg_prop.c
View file @
a8b38fa2
...
...
@@ -39,7 +39,6 @@
* - Not all PROPVARIANT types are supported.
* - User defined properties are not supported, see comment in
* PropertyStorage_ReadFromStream
* - IPropertyStorage::Enum is unimplemented
*/
#include <assert.h>
...
...
@@ -154,7 +153,9 @@ static HRESULT PropertyStorage_StringCopy(LPCSTR src, LCID srcCP, LPSTR *dst,
static
const
IPropertyStorageVtbl
IPropertyStorage_Vtbl
;
static
const
IEnumSTATPROPSETSTGVtbl
IEnumSTATPROPSETSTG_Vtbl
;
static
const
IEnumSTATPROPSTGVtbl
IEnumSTATPROPSTG_Vtbl
;
static
HRESULT
create_EnumSTATPROPSETSTG
(
StorageImpl
*
,
IEnumSTATPROPSETSTG
**
);
static
HRESULT
create_EnumSTATPROPSTG
(
PropertyStorage_impl
*
,
IEnumSTATPROPSTG
**
);
/***********************************************************************
* Implementation of IPropertyStorage
...
...
@@ -862,8 +863,8 @@ static HRESULT WINAPI IPropertyStorage_fnEnum(
IPropertyStorage
*
iface
,
IEnumSTATPROPSTG
**
ppenum
)
{
FIXME
(
"
\n
"
)
;
return
E_NOTIMPL
;
PropertyStorage_impl
*
This
=
(
PropertyStorage_impl
*
)
iface
;
return
create_EnumSTATPROPSTG
(
This
,
ppenum
)
;
}
/************************************************************************
...
...
@@ -2332,6 +2333,93 @@ static HRESULT create_EnumSTATPROPSETSTG(
return
S_OK
;
}
/************************************************************************
* Implement IEnumSTATPROPSTG using enumx
*/
static
HRESULT
WINAPI
IEnumSTATPROPSTG_fnQueryInterface
(
IEnumSTATPROPSTG
*
iface
,
REFIID
riid
,
void
**
ppvObject
)
{
return
enumx_QueryInterface
((
enumx_impl
*
)
iface
,
riid
,
ppvObject
);
}
static
ULONG
WINAPI
IEnumSTATPROPSTG_fnAddRef
(
IEnumSTATPROPSTG
*
iface
)
{
return
enumx_AddRef
((
enumx_impl
*
)
iface
);
}
static
ULONG
WINAPI
IEnumSTATPROPSTG_fnRelease
(
IEnumSTATPROPSTG
*
iface
)
{
return
enumx_Release
((
enumx_impl
*
)
iface
);
}
static
HRESULT
WINAPI
IEnumSTATPROPSTG_fnNext
(
IEnumSTATPROPSTG
*
iface
,
ULONG
celt
,
STATPROPSTG
*
rgelt
,
ULONG
*
pceltFetched
)
{
return
enumx_Next
((
enumx_impl
*
)
iface
,
celt
,
rgelt
,
pceltFetched
);
}
static
HRESULT
WINAPI
IEnumSTATPROPSTG_fnSkip
(
IEnumSTATPROPSTG
*
iface
,
ULONG
celt
)
{
return
enumx_Skip
((
enumx_impl
*
)
iface
,
celt
);
}
static
HRESULT
WINAPI
IEnumSTATPROPSTG_fnReset
(
IEnumSTATPROPSTG
*
iface
)
{
return
enumx_Reset
((
enumx_impl
*
)
iface
);
}
static
HRESULT
WINAPI
IEnumSTATPROPSTG_fnClone
(
IEnumSTATPROPSTG
*
iface
,
IEnumSTATPROPSTG
**
ppenum
)
{
return
enumx_Clone
((
enumx_impl
*
)
iface
,
(
enumx_impl
**
)
ppenum
);
}
static
BOOL
prop_enum_stat
(
const
void
*
k
,
const
void
*
v
,
void
*
extra
,
void
*
arg
)
{
enumx_impl
*
enumx
=
arg
;
PROPID
propid
=
(
PROPID
)
k
;
const
PROPVARIANT
*
prop
=
v
;
STATPROPSTG
stat
;
stat
.
lpwstrName
=
NULL
;
stat
.
propid
=
propid
;
stat
.
vt
=
prop
->
vt
;
enumx_add_element
(
enumx
,
&
stat
);
return
TRUE
;
}
static
HRESULT
create_EnumSTATPROPSTG
(
PropertyStorage_impl
*
This
,
IEnumSTATPROPSTG
**
ppenum
)
{
enumx_impl
*
enumx
;
TRACE
(
"%p %p
\n
"
,
This
,
ppenum
);
enumx
=
enumx_allocate
(
&
IID_IEnumSTATPROPSTG
,
&
IEnumSTATPROPSTG_Vtbl
,
sizeof
(
STATPROPSTG
));
dictionary_enumerate
(
This
->
propid_to_prop
,
prop_enum_stat
,
enumx
);
*
ppenum
=
(
IEnumSTATPROPSTG
*
)
enumx
;
return
S_OK
;
}
/***********************************************************************
* vtables
*/
...
...
@@ -2376,6 +2464,17 @@ static const IEnumSTATPROPSETSTGVtbl IEnumSTATPROPSETSTG_Vtbl =
IEnumSTATPROPSETSTG_fnClone
,
};
static
const
IEnumSTATPROPSTGVtbl
IEnumSTATPROPSTG_Vtbl
=
{
IEnumSTATPROPSTG_fnQueryInterface
,
IEnumSTATPROPSTG_fnAddRef
,
IEnumSTATPROPSTG_fnRelease
,
IEnumSTATPROPSTG_fnNext
,
IEnumSTATPROPSTG_fnSkip
,
IEnumSTATPROPSTG_fnReset
,
IEnumSTATPROPSTG_fnClone
,
};
/***********************************************************************
* Format ID <-> name conversion
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment