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
9b139018
Commit
9b139018
authored
Jan 05, 2009
by
Rob Shearman
Committed by
Alexandre Julliard
Jan 06, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
widl: Add new function, type_iface_get_stmts.
Use it to retrieve statements contained in interface types.
parent
8fc59d0e
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
36 additions
and
30 deletions
+36
-30
client.c
tools/widl/client.c
+2
-2
header.c
tools/widl/header.c
+10
-10
parser.y
tools/widl/parser.y
+3
-3
proxy.c
tools/widl/proxy.c
+6
-6
server.c
tools/widl/server.c
+3
-3
typegen.c
tools/widl/typegen.c
+3
-3
typetree.c
tools/widl/typetree.c
+1
-1
typetree.h
tools/widl/typetree.h
+6
-0
write_msft.c
tools/widl/write_msft.c
+2
-2
No files found.
tools/widl/client.c
View file @
9b139018
...
...
@@ -81,7 +81,7 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
if
(
!
implicit_handle
)
print_client
(
"static RPC_BINDING_HANDLE %s__MIDL_AutoBindHandle;
\n\n
"
,
iface
->
name
);
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt
->
u
.
var
;
const
var_t
*
explicit_handle_var
;
...
...
@@ -478,7 +478,7 @@ static void write_client_ifaces(const statement_list_t *stmts, int expr_eval_rou
fprintf
(
client
,
" */
\n
"
);
fprintf
(
client
,
"
\n
"
);
STATEMENTS_FOR_EACH_FUNC
(
stmt2
,
iface
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt2
,
type_iface_get_stmts
(
iface
)
)
{
has_func
=
1
;
break
;
...
...
tools/widl/header.c
View file @
9b139018
...
...
@@ -631,7 +631,7 @@ static void write_method_macro(FILE *header, const type_t *iface, const char *na
if
(
type_iface_get_inherit
(
iface
))
write_method_macro
(
header
,
type_iface_get_inherit
(
iface
),
name
);
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt
->
u
.
var
;
...
...
@@ -692,7 +692,7 @@ static void write_cpp_method_def(FILE *header, const type_t *iface)
{
const
statement_t
*
stmt
;
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt
->
u
.
var
;
if
(
!
is_callas
(
func
->
attrs
))
{
...
...
@@ -717,7 +717,7 @@ static void do_write_c_method_def(FILE *header, const type_t *iface, const char
if
(
type_iface_get_inherit
(
iface
))
do_write_c_method_def
(
header
,
type_iface_get_inherit
(
iface
),
name
);
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt
->
u
.
var
;
if
(
first_iface
)
{
...
...
@@ -752,7 +752,7 @@ static void write_method_proto(FILE *header, const type_t *iface)
{
const
statement_t
*
stmt
;
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt
->
u
.
var
;
...
...
@@ -783,16 +783,16 @@ static void write_locals(FILE *fp, const type_t *iface, int body)
if
(
!
is_object
(
iface
->
attrs
))
return
;
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
{
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt
->
u
.
var
;
const
var_t
*
cas
=
is_callas
(
func
->
attrs
);
if
(
cas
)
{
const
statement_t
*
stmt2
=
NULL
;
STATEMENTS_FOR_EACH_FUNC
(
stmt2
,
iface
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt2
,
type_iface_get_stmts
(
iface
)
)
if
(
!
strcmp
(
stmt2
->
u
.
var
->
name
,
cas
->
name
))
break
;
if
(
&
stmt2
->
entry
!=
iface
->
details
.
iface
->
stmts
)
{
if
(
&
stmt2
->
entry
!=
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
m
=
stmt2
->
u
.
var
;
/* proxy prototype - use local prototype */
write_type_decl_left
(
fp
,
get_func_return_type
(
m
));
...
...
@@ -1062,7 +1062,7 @@ static void write_imports(FILE *header, const statement_list_t *stmts)
{
case
STMT_TYPE
:
if
(
stmt
->
u
.
type
->
type
==
RPC_FC_IP
)
write_imports
(
header
,
stmt
->
u
.
type
->
details
.
iface
->
stmts
);
write_imports
(
header
,
type_iface_get_stmts
(
stmt
->
u
.
type
)
);
break
;
case
STMT_TYPEREF
:
case
STMT_IMPORTLIB
:
...
...
@@ -1132,13 +1132,13 @@ static void write_header_stmts(FILE *header, const statement_list_t *stmts, cons
if
(
is_attr
(
stmt
->
u
.
type
->
attrs
,
ATTR_DISPINTERFACE
)
||
is_object
(
stmt
->
u
.
type
->
attrs
))
{
write_com_interface_start
(
header
,
iface
);
write_header_stmts
(
header
,
iface
->
details
.
iface
->
stmts
,
stmt
->
u
.
type
,
TRUE
);
write_header_stmts
(
header
,
type_iface_get_stmts
(
iface
)
,
stmt
->
u
.
type
,
TRUE
);
write_com_interface_end
(
header
,
iface
);
}
else
{
write_rpc_interface_start
(
header
,
iface
);
write_header_stmts
(
header
,
iface
->
details
.
iface
->
stmts
,
iface
,
FALSE
);
write_header_stmts
(
header
,
type_iface_get_stmts
(
iface
)
,
iface
,
FALSE
);
write_rpc_interface_end
(
header
,
iface
);
}
}
...
...
tools/widl/parser.y
View file @
9b139018
...
...
@@ -2501,7 +2501,7 @@ static void check_functions(const type_t *iface, int is_inside_library)
const statement_t *stmt;
if (is_attr(iface->attrs, ATTR_EXPLICIT_HANDLE))
{
STATEMENTS_FOR_EACH_FUNC( stmt,
iface->details.iface->stmts
)
STATEMENTS_FOR_EACH_FUNC( stmt,
type_iface_get_stmts(iface)
)
{
var_t *func = stmt->u.var;
add_explicit_handle_if_necessary(func);
...
...
@@ -2509,7 +2509,7 @@ static void check_functions(const type_t *iface, int is_inside_library)
}
if (!is_inside_library && !is_attr(iface->attrs, ATTR_LOCAL))
{
STATEMENTS_FOR_EACH_FUNC( stmt,
iface->details.iface->stmts
)
STATEMENTS_FOR_EACH_FUNC( stmt,
type_iface_get_stmts(iface)
)
{
const var_t *func = stmt->u.var;
if (!is_attr(func->attrs, ATTR_LOCAL))
...
...
@@ -2543,7 +2543,7 @@ static void check_all_user_types(const statement_list_t *stmts)
!is_local(stmt->u.type->attrs))
{
const statement_t *stmt_func;
STATEMENTS_FOR_EACH_FUNC(stmt_func,
stmt->u.type->details.iface->stmts
) {
STATEMENTS_FOR_EACH_FUNC(stmt_func,
type_iface_get_stmts(stmt->u.type)
) {
const var_t *func = stmt_func->u.var;
check_for_additional_prototype_types(func->type->details.function->args);
}
...
...
tools/widl/proxy.c
View file @
9b139018
...
...
@@ -535,7 +535,7 @@ static int count_methods(type_t *iface)
if
(
type_iface_get_inherit
(
iface
))
count
=
count_methods
(
type_iface_get_inherit
(
iface
));
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
{
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt
->
u
.
var
;
if
(
!
is_callas
(
func
->
attrs
))
count
++
;
}
...
...
@@ -550,7 +550,7 @@ static int write_proxy_methods(type_t *iface, int skip)
if
(
type_iface_get_inherit
(
iface
))
i
=
write_proxy_methods
(
type_iface_get_inherit
(
iface
),
need_delegation
(
iface
));
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
{
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt
->
u
.
var
;
if
(
!
is_callas
(
func
->
attrs
))
{
if
(
i
)
fprintf
(
proxy
,
",
\n
"
);
...
...
@@ -572,7 +572,7 @@ static int write_stub_methods(type_t *iface, int skip)
else
return
i
;
/* skip IUnknown */
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
{
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt
->
u
.
var
;
if
(
!
is_local
(
func
->
attrs
))
{
if
(
i
)
fprintf
(
proxy
,
",
\n
"
);
...
...
@@ -592,7 +592,7 @@ static void write_proxy(type_t *iface, unsigned int *proc_offset)
/* FIXME: check for [oleautomation], shouldn't generate proxies/stubs if specified */
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
{
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt
->
u
.
var
;
if
(
first_func
)
{
fprintf
(
proxy
,
"/*****************************************************************************
\n
"
);
...
...
@@ -606,7 +606,7 @@ static void write_proxy(type_t *iface, unsigned int *proc_offset)
int
idx
=
func
->
type
->
details
.
function
->
idx
;
if
(
cname
)
{
const
statement_t
*
stmt2
;
STATEMENTS_FOR_EACH_FUNC
(
stmt2
,
iface
->
details
.
iface
->
stmts
)
{
STATEMENTS_FOR_EACH_FUNC
(
stmt2
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
m
=
stmt2
->
u
.
var
;
if
(
!
strcmp
(
m
->
name
,
cname
))
{
...
...
@@ -630,7 +630,7 @@ static void write_proxy(type_t *iface, unsigned int *proc_offset)
for
(
inherit_iface
=
type_iface_get_inherit
(
iface
);
inherit_iface
;
inherit_iface
=
type_iface_get_inherit
(
inherit_iface
))
{
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
inherit_iface
->
details
.
iface
->
stmts
)
{
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
inherit_iface
)
)
{
const
var_t
*
func
=
stmt
->
u
.
var
;
int
idx
=
func
->
type
->
details
.
function
->
idx
;
if
(
idx
+
1
>
midx
)
midx
=
idx
+
1
;
...
...
tools/widl/server.c
View file @
9b139018
...
...
@@ -54,7 +54,7 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
const
var_t
*
var
;
const
var_t
*
explicit_handle_var
;
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt
->
u
.
var
;
int
has_full_pointer
=
is_full_pointer_function
(
func
);
...
...
@@ -256,7 +256,7 @@ static void write_dispatchtable(type_t *iface)
print_server
(
"{
\n
"
);
indent
++
;
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
var_t
*
func
=
stmt
->
u
.
var
;
print_server
(
"%s_%s,
\n
"
,
iface
->
name
,
get_name
(
func
));
...
...
@@ -416,7 +416,7 @@ static void write_server_stmts(const statement_list_t *stmts, int expr_eval_rout
fprintf
(
server
,
" */
\n
"
);
fprintf
(
server
,
"
\n
"
);
if
(
statements_has_func
(
iface
->
details
.
iface
->
stmts
))
if
(
statements_has_func
(
type_iface_get_stmts
(
iface
)
))
{
write_serverinterfacedecl
(
iface
);
write_stubdescdecl
(
iface
);
...
...
tools/widl/typegen.c
View file @
9b139018
...
...
@@ -682,7 +682,7 @@ static void write_procformatstring_stmts(FILE *file, int indent, const statement
const
statement_t
*
stmt_func
;
if
(
!
pred
(
stmt
->
u
.
type
))
continue
;
STATEMENTS_FOR_EACH_FUNC
(
stmt_func
,
stmt
->
u
.
type
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt_func
,
type_iface_get_stmts
(
stmt
->
u
.
type
)
)
{
const
var_t
*
func
=
stmt_func
->
u
.
var
;
if
(
is_local
(
func
->
attrs
))
continue
;
...
...
@@ -2599,7 +2599,7 @@ static size_t process_tfs_stmts(FILE *file, const statement_list_t *stmts,
continue
;
current_iface
=
iface
;
STATEMENTS_FOR_EACH_FUNC
(
stmt_func
,
iface
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt_func
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt_func
->
u
.
var
;
if
(
is_local
(
func
->
attrs
))
continue
;
...
...
@@ -3271,7 +3271,7 @@ size_t get_size_procformatstring(const statement_list_t *stmts, type_pred_t pred
if
(
!
pred
(
iface
))
continue
;
STATEMENTS_FOR_EACH_FUNC
(
stmt_func
,
iface
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt_func
,
type_iface_get_stmts
(
iface
)
)
{
const
var_t
*
func
=
stmt_func
->
u
.
var
;
if
(
!
is_local
(
func
->
attrs
))
...
...
tools/widl/typetree.c
View file @
9b139018
...
...
@@ -91,7 +91,7 @@ static int compute_method_indexes(type_t *iface)
else
idx
=
0
;
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
iface
->
details
.
iface
->
stmts
)
STATEMENTS_FOR_EACH_FUNC
(
stmt
,
type_iface_get_stmts
(
iface
)
)
{
var_t
*
func
=
stmt
->
u
.
var
;
if
(
!
is_callas
(
func
->
attrs
))
...
...
tools/widl/typetree.h
View file @
9b139018
...
...
@@ -80,6 +80,12 @@ static inline var_list_t *type_union_get_cases(const type_t *type)
return
type
->
details
.
structure
->
fields
;
}
static
inline
statement_list_t
*
type_iface_get_stmts
(
const
type_t
*
type
)
{
assert
(
type
->
type
==
RPC_FC_IP
);
return
type
->
details
.
iface
->
stmts
;
}
static
inline
type_t
*
type_iface_get_inherit
(
const
type_t
*
type
)
{
assert
(
type
->
type
==
RPC_FC_IP
);
...
...
tools/widl/write_msft.c
View file @
9b139018
...
...
@@ -2037,7 +2037,7 @@ static void add_interface_typeinfo(msft_typelib_t *typelib, type_t *interface)
/* count the number of inherited interfaces and non-local functions */
for
(
ref
=
inherit
;
ref
;
ref
=
type_iface_get_inherit
(
ref
))
{
num_parents
++
;
STATEMENTS_FOR_EACH_FUNC
(
stmt_func
,
ref
->
details
.
iface
->
stmts
)
{
STATEMENTS_FOR_EACH_FUNC
(
stmt_func
,
type_iface_get_stmts
(
ref
)
)
{
var_t
*
func
=
stmt_func
->
u
.
var
;
if
(
!
is_local
(
func
->
attrs
))
num_funcs
++
;
}
...
...
@@ -2045,7 +2045,7 @@ static void add_interface_typeinfo(msft_typelib_t *typelib, type_t *interface)
msft_typeinfo
->
typeinfo
->
datatype2
=
num_funcs
<<
16
|
num_parents
;
msft_typeinfo
->
typeinfo
->
cbSizeVft
=
num_funcs
*
4
;
STATEMENTS_FOR_EACH_FUNC
(
stmt_func
,
interface
->
details
.
iface
->
stmts
)
{
STATEMENTS_FOR_EACH_FUNC
(
stmt_func
,
type_iface_get_stmts
(
interface
)
)
{
var_t
*
func
=
stmt_func
->
u
.
var
;
if
(
add_func_desc
(
msft_typeinfo
,
func
,
idx
)
==
S_OK
)
idx
++
;
...
...
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