widl: Don't output stubs for interfaces included in a typelib.

This commit is contained in:
Alexandre Julliard 2011-09-06 15:42:16 +02:00
parent cd7ccebb9b
commit 8e15db40a8
5 changed files with 6 additions and 33 deletions

View File

@ -472,8 +472,6 @@ static void write_client_ifaces(const statement_list_t *stmts, int expr_eval_rou
write_stubdescriptor(iface, expr_eval_routines); write_stubdescriptor(iface, expr_eval_routines);
} }
} }
else if (stmt->type == STMT_LIBRARY)
write_client_ifaces(stmt->u.lib->stmts, expr_eval_routines, proc_offset);
} }
} }

View File

@ -987,8 +987,6 @@ static void write_local_stubs_stmts(FILE *local_stubs, const statement_list_t *s
{ {
if (stmt->type == STMT_TYPE && type_get_type(stmt->u.type) == TYPE_INTERFACE) if (stmt->type == STMT_TYPE && type_get_type(stmt->u.type) == TYPE_INTERFACE)
write_locals(local_stubs, stmt->u.type, TRUE); write_locals(local_stubs, stmt->u.type, TRUE);
else if (stmt->type == STMT_LIBRARY)
write_local_stubs_stmts(local_stubs, stmt->u.lib->stmts);
} }
} }

View File

@ -754,12 +754,7 @@ static int does_any_iface(const statement_list_t *stmts, type_pred_t pred)
if (stmts) if (stmts)
LIST_FOR_EACH_ENTRY(stmt, stmts, const statement_t, entry) LIST_FOR_EACH_ENTRY(stmt, stmts, const statement_t, entry)
{ {
if (stmt->type == STMT_LIBRARY) if (stmt->type == STMT_TYPE && type_get_type(stmt->u.type) == TYPE_INTERFACE)
{
if (does_any_iface(stmt->u.lib->stmts, pred))
return TRUE;
}
else if (stmt->type == STMT_TYPE && type_get_type(stmt->u.type) == TYPE_INTERFACE)
{ {
if (pred(stmt->u.type)) if (pred(stmt->u.type))
return TRUE; return TRUE;
@ -834,9 +829,7 @@ static void write_proxy_stmts(const statement_list_t *stmts, unsigned int *proc_
const statement_t *stmt; const statement_t *stmt;
if (stmts) LIST_FOR_EACH_ENTRY( stmt, stmts, const statement_t, entry ) if (stmts) LIST_FOR_EACH_ENTRY( stmt, stmts, const statement_t, entry )
{ {
if (stmt->type == STMT_LIBRARY) if (stmt->type == STMT_TYPE && type_get_type(stmt->u.type) == TYPE_INTERFACE)
write_proxy_stmts(stmt->u.lib->stmts, proc_offset);
else if (stmt->type == STMT_TYPE && type_get_type(stmt->u.type) == TYPE_INTERFACE)
{ {
if (need_proxy(stmt->u.type)) if (need_proxy(stmt->u.type))
write_proxy(stmt->u.type, proc_offset); write_proxy(stmt->u.type, proc_offset);
@ -860,9 +853,7 @@ static void build_iface_list( const statement_list_t *stmts, type_t **ifaces[],
if (!stmts) return; if (!stmts) return;
LIST_FOR_EACH_ENTRY( stmt, stmts, const statement_t, entry ) LIST_FOR_EACH_ENTRY( stmt, stmts, const statement_t, entry )
{ {
if (stmt->type == STMT_LIBRARY) if (stmt->type == STMT_TYPE && type_get_type(stmt->u.type) == TYPE_INTERFACE)
build_iface_list(stmt->u.lib->stmts, ifaces, count);
else if (stmt->type == STMT_TYPE && type_get_type(stmt->u.type) == TYPE_INTERFACE)
{ {
type_t *iface = stmt->u.type; type_t *iface = stmt->u.type;
if (type_iface_get_inherit(iface) && need_proxy(iface)) if (type_iface_get_inherit(iface) && need_proxy(iface))

View File

@ -463,9 +463,7 @@ static void write_server_stmts(const statement_list_t *stmts, int expr_eval_rout
const statement_t *stmt; const statement_t *stmt;
if (stmts) LIST_FOR_EACH_ENTRY( stmt, stmts, const statement_t, entry ) if (stmts) LIST_FOR_EACH_ENTRY( stmt, stmts, const statement_t, entry )
{ {
if (stmt->type == STMT_LIBRARY) if (stmt->type == STMT_TYPE && type_get_type(stmt->u.type) == TYPE_INTERFACE)
write_server_stmts(stmt->u.lib->stmts, expr_eval_routines, proc_offset);
else if (stmt->type == STMT_TYPE && type_get_type(stmt->u.type) == TYPE_INTERFACE)
{ {
type_t *iface = stmt->u.type; type_t *iface = stmt->u.type;
if (!need_stub(iface)) if (!need_stub(iface))

View File

@ -1488,8 +1488,6 @@ static void write_procformatstring_stmts(FILE *file, int indent, const statement
write_procformatstring_func( file, indent, iface, func, offset, count++ ); write_procformatstring_func( file, indent, iface, func, offset, count++ );
} }
} }
else if (stmt->type == STMT_LIBRARY)
write_procformatstring_stmts(file, indent, stmt->u.lib->stmts, pred, offset);
} }
} }
@ -3624,12 +3622,7 @@ static unsigned int process_tfs_stmts(FILE *file, const statement_list_t *stmts,
const type_t *iface; const type_t *iface;
const statement_t *stmt_func; const statement_t *stmt_func;
if (stmt->type == STMT_LIBRARY) if (stmt->type != STMT_TYPE || type_get_type(stmt->u.type) != TYPE_INTERFACE)
{
process_tfs_stmts(file, stmt->u.lib->stmts, pred, typeformat_offset);
continue;
}
else if (stmt->type != STMT_TYPE || type_get_type(stmt->u.type) != TYPE_INTERFACE)
continue; continue;
iface = stmt->u.type; iface = stmt->u.type;
@ -4510,12 +4503,7 @@ unsigned int get_size_procformatstring(const statement_list_t *stmts, type_pred_
const type_t *iface; const type_t *iface;
const statement_t *stmt_func; const statement_t *stmt_func;
if (stmt->type == STMT_LIBRARY) if (stmt->type != STMT_TYPE || type_get_type(stmt->u.type) != TYPE_INTERFACE)
{
size += get_size_procformatstring(stmt->u.lib->stmts, pred) - 1;
continue;
}
else if (stmt->type != STMT_TYPE || type_get_type(stmt->u.type) != TYPE_INTERFACE)
continue; continue;
iface = stmt->u.type; iface = stmt->u.type;