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
65d91740
Commit
65d91740
authored
Nov 17, 2020
by
Kevin Puetz
Committed by
Alexandre Julliard
Nov 18, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
oleaut32: Load GetVarCustData from MSFT-format typelib.
Signed-off-by:
Kevin Puetz
<
PuetzKevinA@JohnDeere.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
cd38abc4
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
200 additions
and
1 deletion
+200
-1
test_tlb.idl
dlls/oleaut32/tests/test_tlb.idl
+49
-1
typelib.c
dlls/oleaut32/tests/typelib.c
+148
-0
typelib.c
dlls/oleaut32/typelib.c
+3
-0
No files found.
dlls/oleaut32/tests/test_tlb.idl
View file @
65d91740
...
...
@@ -26,7 +26,15 @@ import "oaidl.idl"; /* needed by widl */
midl_pragma
warning
(
disable
:
2368
)
[
uuid
(
8b05
fe77
-
4
a6c
-
4133
-
b9cd
-
8
f81747af784
)
]
#
define
CUSTDATA_STRLIT
c8768723
-
e6d2
-
4442
-
b039
-
92
e9c82429c4
#
define
CUSTDATA_NUM
b481b478
-
a181
-
4
eb6
-
b6e0
-
df63069e8c80
#
define
CUSTDATA_HEXNUM
a09d7c06
-
cf38
-
4
db3
-
9450
-
10641651
c35b
[
uuid
(
8b05
fe77
-
4
a6c
-
4133
-
b9cd
-
8
f81747af784
),
custom
(
CUSTDATA_STRLIT
,
"ITypeLib2::GetCustData"
),
custom
(
CUSTDATA_NUM
,
42
),
custom
(
CUSTDATA_HEXNUM
,
0
x1337C0D3
),
]
library
Test
{
importlib
(
"stdole2.tlb"
)
;
...
...
@@ -170,4 +178,44 @@ library Test
{
interface
ITestDispDual
;
}
[
uuid
(
786
ee4ff
-
c5dd
-
4b
f4
-
9578
-
0
d22fb5369cc
),
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetCustData interface"
)
]
interface
custdata_interface
:
IDispatch
{
[
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetFuncCustData custdata_interface::test_method"
)
]
HRESULT
test_method
(
[
in
,
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetParamCustData custdata_interface::test_method(x)"
)
]
int
x
)
;
}
[
uuid
(
6
ca99f5e
-
c86a
-
42
ad
-
a5ee
-
5b
d4c8e5553c
),
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetCustData enum"
)
]
enum
custdata_enum
{
[
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetVarCustData enum"
)
]
One
,
Two
}
;
[
uuid
(
62
fabe17
-
f733
-
4b09
-
b859
-
3
f455dcda450
),
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetCustData struct"
)
]
struct
custdata_struct
{
[
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetVarCustData struct"
)
]
int
test_field
;
}
;
[
/*
uuid
(
...
)
not
allowed
on
union
*/
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetCustData union"
)
]
union
custdata_union
{
[
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetVarCustData union"
)
]
int
test_field
;
}
;
[
public
,
uuid
(
d58744d6
-
63
f9
-
467
c
-
87
e5
-
c95158098b18
),
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetCustData typedef"
)
]
typedef
custdata_interface
*
custdata_typedef
;
[
uuid
(
bffc216e
-
2159
-
465
a
-
80
df
-
b85fd4f4f122
),
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetCustData dispinterface"
)
]
dispinterface
custdata_dispatch
{
properties
:
[
id
(
0
),
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetVarCustData dispinterface property"
)
]
int
test_property
;
methods
:
[
id
(
1
),
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetFuncCustData dispinterface method"
)
]
void
test_method
(
[
in
,
custom
(
CUSTDATA_STRLIT
,
"ITypeInfo2::GetParamCustData test_dispatch::test_method(x)"
)
]
int
x
)
;
}
}
dlls/oleaut32/tests/typelib.c
View file @
65d91740
...
...
@@ -6130,6 +6130,154 @@ static const type_info info[] = {
},
},
{
/* vars */
},
},
{
"custdata_interface"
,
"{786ee4ff-c5dd-4bf4-9578-0d22fb5369cc}"
,
/*kind*/
TKIND_INTERFACE
,
/*flags*/
TYPEFLAG_FDISPATCHABLE
,
/*align*/
TYPE_ALIGNMENT
(
custdata_interface
*
),
/*size*/
sizeof
(
custdata_interface
*
),
/*helpctx*/
0x0000
,
/*version*/
0x00000000
,
/*#vtbl*/
8
,
/*#func*/
1
,
/*#var*/
0
,
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetCustData interface"
}
}
},
},
{
/* funcs */
{
/*id*/
0x60020000
,
/*func*/
FUNC_PUREVIRTUAL
,
/*inv*/
INVOKE_FUNC
,
/*call*/
CC_STDCALL
,
/*#param*/
1
,
/*#opt*/
0
,
/*vtbl*/
7
,
/*#scodes*/
0
,
/*flags*/
0
,
{
VT_HRESULT
,
-
1
,
PARAMFLAG_NONE
},
/* ret */
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetFuncCustData custdata_interface::test_method"
}
}
},
},
{
/* params */
{
VT_INT
,
-
1
,
PARAMFLAG_FIN
,
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetParamCustData custdata_interface::test_method(x)"
}
}
},
}
},
{
-
1
,
0
,
0
}
},
{
/* names */
"test_method"
,
"x"
,
NULL
,
},
},
},
{
/* vars */
},
},
{
"custdata_enum"
,
"{6ca99f5e-c86a-42ad-a5ee-5bd4c8e5553c}"
,
/*kind*/
TKIND_ENUM
,
/*flags*/
0
,
/*align*/
4
,
/*size*/
4
,
/*helpctx*/
0x0000
,
/*version*/
0x00000000
,
/*#vtbl*/
0
,
/*#func*/
0
,
/*#var*/
2
,
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetCustData enum"
}
}
},
},
{
/* funcs */
},
{
/* vars */
{
/*id*/
0x40000000
,
/*name*/
"One"
,
/*flags*/
0
,
/*kind*/
VAR_CONST
,
{
.
varValue
=
{
VT_I4
,
{
.
value_int
=
0
}
}
},
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetVarCustData enum"
}
}
},
},
{
VT_INT
,
-
1
,
PARAMFLAG_NONE
},
/* ret */
},
{
/*id*/
0x40000001
,
/*name*/
"Two"
,
/*flags*/
0
,
/*kind*/
VAR_CONST
,
{
.
varValue
=
{
VT_I4
,
{
.
value_int
=
1
}
}
},
/*#custdata*/
0
,
{},
{
VT_INT
,
-
1
,
PARAMFLAG_NONE
},
/* ret */
},
},
},
{
"custdata_struct"
,
"{62fabe17-f733-4b09-b859-3f455dcda450}"
,
/*kind*/
TKIND_RECORD
,
/*flags*/
0
,
/*align*/
TYPE_ALIGNMENT
(
struct
custdata_struct
),
/*size*/
sizeof
(
struct
custdata_struct
),
/*helpctx*/
0x0000
,
/*version*/
0x00000000
,
/*#vtbl*/
0
,
/*#func*/
0
,
/*#var*/
1
,
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetCustData struct"
}
}
},
},
{
/* funcs */
},
{
/* vars */
{
/*id*/
0x40000000
,
/*name*/
"test_field"
,
/*flags*/
0
,
/*kind*/
VAR_PERINSTANCE
,
{
.
oInst
=
0
},
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetVarCustData struct"
}
}
},
},
{
VT_INT
,
-
1
,
PARAMFLAG_NONE
},
/* ret */
},
},
},
{
"custdata_union"
,
"{00000000-0000-0000-0000-000000000000}"
,
/*kind*/
TKIND_UNION
,
/*flags*/
0
,
/*align*/
TYPE_ALIGNMENT
(
union
custdata_union
),
/*size*/
sizeof
(
union
custdata_union
),
/*helpctx*/
0x0000
,
/*version*/
0x00000000
,
/*#vtbl*/
0
,
/*#func*/
0
,
/*#var*/
1
,
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetCustData union"
}
}
},
},
{
/* funcs */
},
{
/* vars */
{
/*id*/
0x40000000
,
/*name*/
"test_field"
,
/*flags*/
0
,
/*kind*/
VAR_PERINSTANCE
,
{
.
oInst
=
0
},
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetVarCustData union"
}
}
},
},
{
VT_INT
,
-
1
,
PARAMFLAG_NONE
},
/* ret */
},
},
},
{
"custdata_typedef"
,
"{d58744d6-63f9-467c-87e5-c95158098b18}"
,
/*kind*/
TKIND_ALIAS
,
/*flags*/
0
,
/*align*/
TYPE_ALIGNMENT
(
custdata_typedef
),
/*size*/
sizeof
(
custdata_typedef
),
/*helpctx*/
0x0000
,
/*version*/
0x00000000
,
/*#vtbl*/
0
,
/*#func*/
0
,
/*#var*/
0
,
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetCustData typedef"
}
}
},
},
{
/* funcs */
},
{
/* vars */
},
},
{
"custdata_dispatch"
,
"{bffc216e-2159-465a-80df-b85fd4f4f122}"
,
/*kind*/
TKIND_DISPATCH
,
/*flags*/
TYPEFLAG_FDISPATCHABLE
,
/*align*/
TYPE_ALIGNMENT
(
custdata_dispatch
*
),
/*size*/
sizeof
(
custdata_dispatch
*
),
/*helpctx*/
0x0000
,
/*version*/
0x00000000
,
/*#vtbl*/
7
,
/*#func*/
1
,
/*#var*/
1
,
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetCustData dispinterface"
}
}
},
},
{
/* funcs */
{
/*id*/
0x1
,
/*func*/
FUNC_DISPATCH
,
/*inv*/
INVOKE_FUNC
,
/*call*/
CC_STDCALL
,
/*#param*/
1
,
/*#opt*/
0
,
/*vtbl*/
0
,
/*#scodes*/
0
,
/*flags*/
0
,
{
VT_VOID
,
-
1
,
PARAMFLAG_NONE
},
/* ret */
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetFuncCustData dispinterface method"
}
}
},
},
{
/* params */
{
VT_INT
,
-
1
,
PARAMFLAG_FIN
,
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetParamCustData test_dispatch::test_method(x)"
}
}
},
}
},
{
-
1
,
0
,
0
}
},
{
/* names */
"test_method"
,
"x"
,
NULL
,
},
},
},
{
/* vars */
{
/*id*/
0x0
,
/*name*/
"test_property"
,
/*flags*/
0
,
/*kind*/
VAR_DISPATCH
,
{
/* DUMMYUNIONNAME unused*/
},
/*#custdata*/
1
,
{
{
"{c8768723-e6d2-4442-b039-92e9c82429c4}"
,
{
VT_BSTR
,
{
.
value_str
=
"ITypeInfo2::GetVarCustData dispinterface property"
}
}
},
},
{
VT_INT
,
-
1
,
PARAMFLAG_NONE
},
/* ret */
},
},
}
};
...
...
dlls/oleaut32/typelib.c
View file @
65d91740
...
...
@@ -2599,6 +2599,9 @@ static void MSFT_DoVars(TLBContext *pcx, ITypeInfoImpl *pTI, int cFuncs,
if
(
reclength
>
FIELD_OFFSET
(
MSFT_VarRecord
,
HelpString
))
ptvd
->
HelpString
=
MSFT_ReadString
(
pcx
,
pVarRec
->
HelpString
);
if
(
reclength
>
FIELD_OFFSET
(
MSFT_VarRecord
,
oCustData
))
MSFT_CustData
(
pcx
,
pVarRec
->
oCustData
,
&
ptvd
->
custdata_list
);
if
(
reclength
>
FIELD_OFFSET
(
MSFT_VarRecord
,
HelpStringContext
))
ptvd
->
HelpStringContext
=
pVarRec
->
HelpStringContext
;
...
...
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