mirror of
https://github.com/reactos/wine.git
synced 2025-02-01 01:32:34 +00:00
widl: Replace uses of get_func_return_type with type_function_get_rettype.
Also replace direct accesses into the type structure to get the return type of a function with the same function.
This commit is contained in:
parent
9b139018cf
commit
8a976a7d78
@ -113,7 +113,8 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
|
||||
print_client("RPC_BINDING_HANDLE _Handle;\n");
|
||||
}
|
||||
|
||||
if (!is_void(get_func_return_type(func)) && decl_indirect(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)) &&
|
||||
decl_indirect(type_function_get_rettype(func->type)))
|
||||
{
|
||||
print_client("void *_p_%s;\n", "_RetVal" );
|
||||
}
|
||||
@ -144,8 +145,8 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
|
||||
indent--;
|
||||
print_client( "}\n\n" );
|
||||
|
||||
write_type_decl_left(client, get_func_return_type(func));
|
||||
if (needs_space_after(get_func_return_type(func)))
|
||||
write_type_decl_left(client, type_function_get_rettype(func->type));
|
||||
if (needs_space_after(type_function_get_rettype(func->type)))
|
||||
fprintf(client, " ");
|
||||
if (callconv) fprintf(client, "%s ", callconv);
|
||||
fprintf(client, "%s%s(\n", prefix_client, get_name(func));
|
||||
@ -163,10 +164,10 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
|
||||
print_client( "struct __frame_%s%s __f, * const __frame = &__f;\n", prefix_client, get_name(func) );
|
||||
|
||||
/* declare return value '_RetVal' */
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
{
|
||||
print_client("");
|
||||
write_type_decl_left(client, get_func_return_type(func));
|
||||
write_type_decl_left(client, type_function_get_rettype(func->type));
|
||||
fprintf(client, " _RetVal;\n");
|
||||
}
|
||||
print_client("RPC_MESSAGE _RpcMessage;\n");
|
||||
@ -178,7 +179,8 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
|
||||
print_client("__frame->%s = %s;\n",
|
||||
explicit_generic_handle_var->name, explicit_generic_handle_var->name );
|
||||
}
|
||||
if (!is_void(get_func_return_type(func)) && decl_indirect(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)) &&
|
||||
decl_indirect(type_function_get_rettype(func->type)))
|
||||
{
|
||||
print_client("__frame->_p_%s = &%s;\n",
|
||||
"_RetVal", "_RetVal");
|
||||
@ -285,11 +287,12 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
|
||||
write_remoting_arguments(client, indent, func, "", PASS_OUT, PHASE_UNMARSHAL);
|
||||
|
||||
/* unmarshal return value */
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
{
|
||||
if (decl_indirect(get_func_return_type(func)))
|
||||
if (decl_indirect(type_function_get_rettype(func->type)))
|
||||
print_client("MIDL_memset(&%s, 0, sizeof(%s));\n", "_RetVal", "_RetVal");
|
||||
else if (is_ptr(get_func_return_type(func)) || is_array(get_func_return_type(func)))
|
||||
else if (is_ptr(type_function_get_rettype(func->type)) ||
|
||||
is_array(type_function_get_rettype(func->type)))
|
||||
print_client("%s = 0;\n", "_RetVal");
|
||||
write_remoting_arguments(client, indent, func, "", PASS_RETURN, PHASE_UNMARSHAL);
|
||||
}
|
||||
@ -300,8 +303,8 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
|
||||
LIST_FOR_EACH_ENTRY( var, args, const var_t, entry )
|
||||
*proc_offset += get_size_procformatstring_type(var->name, var->type, var->attrs);
|
||||
}
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
*proc_offset += get_size_procformatstring_type("return value", get_func_return_type(func), NULL);
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
*proc_offset += get_size_procformatstring_type("return value", type_function_get_rettype(func->type), NULL);
|
||||
else
|
||||
*proc_offset += 2; /* FC_END and FC_PAD */
|
||||
|
||||
@ -317,7 +320,7 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
|
||||
|
||||
|
||||
/* emit return code */
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
{
|
||||
fprintf(client, "\n");
|
||||
print_client("return _RetVal;\n");
|
||||
|
@ -299,7 +299,7 @@ void write_type_v(FILE *h, type_t *t, int is_field, int declonly,
|
||||
const char *callconv = get_attrp(pt->attrs, ATTR_CALLCONV);
|
||||
if (!callconv) callconv = "";
|
||||
if (is_attr(pt->attrs, ATTR_INLINE)) fprintf(h, "inline ");
|
||||
write_type_left(h, pt->ref, declonly);
|
||||
write_type_left(h, type_function_get_rettype(pt), declonly);
|
||||
fputc(' ', h);
|
||||
if (ptr_level) fputc('(', h);
|
||||
fprintf(h, "%s ", callconv);
|
||||
@ -589,7 +589,7 @@ int has_out_arg_or_return(const var_t *func)
|
||||
{
|
||||
const var_t *var;
|
||||
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
return 1;
|
||||
|
||||
if (!type_get_function_args(func->type))
|
||||
@ -700,7 +700,7 @@ static void write_cpp_method_def(FILE *header, const type_t *iface)
|
||||
if (!callconv) callconv = "";
|
||||
indent(header, 0);
|
||||
fprintf(header, "virtual ");
|
||||
write_type_decl_left(header, get_func_return_type(func));
|
||||
write_type_decl_left(header, type_function_get_rettype(func->type));
|
||||
fprintf(header, " %s %s(\n", callconv, get_name(func));
|
||||
write_args(header, type_get_function_args(func->type), iface->name, 2, TRUE);
|
||||
fprintf(header, ") = 0;\n");
|
||||
@ -729,7 +729,7 @@ static void do_write_c_method_def(FILE *header, const type_t *iface, const char
|
||||
const char *callconv = get_attrp(func->type->attrs, ATTR_CALLCONV);
|
||||
if (!callconv) callconv = "";
|
||||
indent(header, 0);
|
||||
write_type_decl_left(header, get_func_return_type(func));
|
||||
write_type_decl_left(header, type_function_get_rettype(func->type));
|
||||
fprintf(header, " (%s *%s)(\n", callconv, get_name(func));
|
||||
write_args(header, type_get_function_args(func->type), name, 1, TRUE);
|
||||
fprintf(header, ");\n");
|
||||
@ -760,7 +760,7 @@ static void write_method_proto(FILE *header, const type_t *iface)
|
||||
const char *callconv = get_attrp(func->type->attrs, ATTR_CALLCONV);
|
||||
if (!callconv) callconv = "";
|
||||
/* proxy prototype */
|
||||
write_type_decl_left(header, get_func_return_type(func));
|
||||
write_type_decl_left(header, type_function_get_rettype(func->type));
|
||||
fprintf(header, " %s %s_%s_Proxy(\n", callconv, iface->name, get_name(func));
|
||||
write_args(header, type_get_function_args(func->type), iface->name, 1, TRUE);
|
||||
fprintf(header, ");\n");
|
||||
@ -795,12 +795,12 @@ static void write_locals(FILE *fp, const type_t *iface, int body)
|
||||
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));
|
||||
write_type_decl_left(fp, type_function_get_rettype(m->type));
|
||||
fprintf(fp, " CALLBACK %s_%s_Proxy(\n", iface->name, get_name(m));
|
||||
write_args(fp, type_get_function_args(m->type), iface->name, 1, TRUE);
|
||||
fprintf(fp, ")");
|
||||
if (body) {
|
||||
type_t *rt = get_func_return_type(m);
|
||||
type_t *rt = type_function_get_rettype(m->type);
|
||||
fprintf(fp, "\n{\n");
|
||||
fprintf(fp, " %s\n", comment);
|
||||
if (rt->name && strcmp(rt->name, "HRESULT") == 0)
|
||||
@ -817,7 +817,7 @@ static void write_locals(FILE *fp, const type_t *iface, int body)
|
||||
else
|
||||
fprintf(fp, ";\n");
|
||||
/* stub prototype - use remotable prototype */
|
||||
write_type_decl_left(fp, get_func_return_type(func));
|
||||
write_type_decl_left(fp, type_function_get_rettype(func->type));
|
||||
fprintf(fp, " __RPC_STUB %s_%s_Stub(\n", iface->name, get_name(m));
|
||||
write_args(fp, type_get_function_args(func->type), iface->name, 1, TRUE);
|
||||
fprintf(fp, ")");
|
||||
@ -870,7 +870,7 @@ static void write_function_proto(FILE *header, const type_t *iface, const var_t
|
||||
const char *callconv = get_attrp(fun->type->attrs, ATTR_CALLCONV);
|
||||
|
||||
/* FIXME: do we need to handle call_as? */
|
||||
write_type_decl_left(header, fun->type->ref);
|
||||
write_type_decl_left(header, type_function_get_rettype(fun->type));
|
||||
fprintf(header, " ");
|
||||
if (callconv) fprintf(header, "%s ", callconv);
|
||||
fprintf(header, "%s%s(\n", prefix, get_name(fun));
|
||||
|
@ -300,7 +300,7 @@ static void proxy_free_variables( var_list_t *args, const char *local_var_prefix
|
||||
static void gen_proxy(type_t *iface, const var_t *func, int idx,
|
||||
unsigned int proc_offset)
|
||||
{
|
||||
int has_ret = !is_void(get_func_return_type(func));
|
||||
int has_ret = !is_void(type_function_get_rettype(func->type));
|
||||
int has_full_pointer = is_full_pointer_function(func);
|
||||
const char *callconv = get_attrp(func->type->attrs, ATTR_CALLCONV);
|
||||
if (!callconv) callconv = "";
|
||||
@ -316,7 +316,7 @@ static void gen_proxy(type_t *iface, const var_t *func, int idx,
|
||||
print_proxy( "}\n");
|
||||
print_proxy( "\n");
|
||||
|
||||
write_type_decl_left(proxy, get_func_return_type(func));
|
||||
write_type_decl_left(proxy, type_function_get_rettype(func->type));
|
||||
print_proxy( " %s %s_%s_Proxy(\n", callconv, iface->name, get_name(func));
|
||||
write_args(proxy, type_get_function_args(func->type), iface->name, 1, TRUE);
|
||||
print_proxy( ")\n");
|
||||
@ -326,12 +326,12 @@ static void gen_proxy(type_t *iface, const var_t *func, int idx,
|
||||
/* local variables */
|
||||
if (has_ret) {
|
||||
print_proxy( "" );
|
||||
write_type_decl_left(proxy, get_func_return_type(func));
|
||||
write_type_decl_left(proxy, type_function_get_rettype(func->type));
|
||||
print_proxy( " _RetVal;\n");
|
||||
}
|
||||
print_proxy( "RPC_MESSAGE _RpcMessage;\n" );
|
||||
if (has_ret) {
|
||||
if (decl_indirect(get_func_return_type(func)))
|
||||
if (decl_indirect(type_function_get_rettype(func->type)))
|
||||
print_proxy("void *_p_%s = &%s;\n",
|
||||
"_RetVal", "_RetVal");
|
||||
}
|
||||
@ -377,9 +377,10 @@ static void gen_proxy(type_t *iface, const var_t *func, int idx,
|
||||
|
||||
if (has_ret)
|
||||
{
|
||||
if (decl_indirect(get_func_return_type(func)))
|
||||
if (decl_indirect(type_function_get_rettype(func->type)))
|
||||
print_proxy("MIDL_memset(&%s, 0, sizeof(%s));\n", "_RetVal", "_RetVal");
|
||||
else if (is_ptr(get_func_return_type(func)) || is_array(get_func_return_type(func)))
|
||||
else if (is_ptr(type_function_get_rettype(func->type)) ||
|
||||
is_array(type_function_get_rettype(func->type)))
|
||||
print_proxy("%s = 0;\n", "_RetVal");
|
||||
write_remoting_arguments(proxy, indent, func, "", PASS_RETURN, PHASE_UNMARSHAL);
|
||||
}
|
||||
@ -418,7 +419,7 @@ static void gen_stub(type_t *iface, const var_t *func, const char *cas,
|
||||
unsigned int proc_offset)
|
||||
{
|
||||
const var_t *arg;
|
||||
int has_ret = !is_void(get_func_return_type(func));
|
||||
int has_ret = !is_void(type_function_get_rettype(func->type));
|
||||
int has_full_pointer = is_full_pointer_function(func);
|
||||
|
||||
indent = 0;
|
||||
@ -498,7 +499,7 @@ static void gen_stub(type_t *iface, const var_t *func, const char *cas,
|
||||
|
||||
write_remoting_arguments(proxy, indent, func, "__frame->", PASS_OUT, PHASE_BUFFERSIZE);
|
||||
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
write_remoting_arguments(proxy, indent, func, "__frame->", PASS_RETURN, PHASE_BUFFERSIZE);
|
||||
|
||||
print_proxy("NdrStubGetBuffer(This, _pRpcChannelBuffer, &__frame->_StubMsg);\n");
|
||||
@ -507,7 +508,7 @@ static void gen_stub(type_t *iface, const var_t *func, const char *cas,
|
||||
fprintf(proxy, "\n");
|
||||
|
||||
/* marshall the return value */
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
write_remoting_arguments(proxy, indent, func, "__frame->", PASS_RETURN, PHASE_MARSHAL);
|
||||
|
||||
indent--;
|
||||
|
@ -155,7 +155,7 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
|
||||
assign_stub_out_args(server, indent, func, "__frame->");
|
||||
|
||||
/* Call the real server function */
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
print_server("__frame->_RetVal = ");
|
||||
else
|
||||
print_server("");
|
||||
@ -201,7 +201,7 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
|
||||
{
|
||||
write_remoting_arguments(server, indent, func, "__frame->", PASS_OUT, PHASE_BUFFERSIZE);
|
||||
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
write_remoting_arguments(server, indent, func, "__frame->", PASS_RETURN, PHASE_BUFFERSIZE);
|
||||
|
||||
print_server("_pRpcMessage->BufferLength = __frame->_StubMsg.BufferLength;\n");
|
||||
@ -220,7 +220,7 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
|
||||
write_remoting_arguments(server, indent, func, "__frame->", PASS_OUT, PHASE_MARSHAL);
|
||||
|
||||
/* marshall the return value */
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
write_remoting_arguments(server, indent, func, "__frame->", PASS_RETURN, PHASE_MARSHAL);
|
||||
|
||||
indent--;
|
||||
|
@ -541,8 +541,8 @@ void write_parameters_init(FILE *file, int indent, const var_t *func, const char
|
||||
{
|
||||
const var_t *var;
|
||||
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
write_var_init(file, indent, get_func_return_type(func), "_RetVal", local_var_prefix);
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
write_var_init(file, indent, type_function_get_rettype(func->type), "_RetVal", local_var_prefix);
|
||||
|
||||
if (!type_get_function_args(func->type))
|
||||
return;
|
||||
@ -695,13 +695,13 @@ static void write_procformatstring_stmts(FILE *file, int indent, const statement
|
||||
}
|
||||
|
||||
/* emit return value data */
|
||||
if (is_void(get_func_return_type(func)))
|
||||
if (is_void(type_function_get_rettype(func->type)))
|
||||
{
|
||||
print_file(file, indent, "0x5b, /* FC_END */\n");
|
||||
print_file(file, indent, "0x5c, /* FC_PAD */\n");
|
||||
}
|
||||
else
|
||||
write_procformatstring_type(file, indent, "return value", get_func_return_type(func), NULL, TRUE);
|
||||
write_procformatstring_type(file, indent, "return value", type_function_get_rettype(func->type), NULL, TRUE);
|
||||
}
|
||||
}
|
||||
else if (stmt->type == STMT_LIBRARY)
|
||||
@ -1080,7 +1080,7 @@ size_t type_memsize(const type_t *t, unsigned int *align)
|
||||
int is_full_pointer_function(const var_t *func)
|
||||
{
|
||||
const var_t *var;
|
||||
if (type_has_full_pointer(get_func_return_type(func)))
|
||||
if (type_has_full_pointer(type_function_get_rettype(func->type)))
|
||||
return TRUE;
|
||||
if (!type_get_function_args(func->type))
|
||||
return FALSE;
|
||||
@ -2604,13 +2604,14 @@ static size_t process_tfs_stmts(FILE *file, const statement_list_t *stmts,
|
||||
const var_t *func = stmt_func->u.var;
|
||||
if (is_local(func->attrs)) continue;
|
||||
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
{
|
||||
var_t v = *func;
|
||||
v.type = get_func_return_type(func);
|
||||
update_tfsoff(get_func_return_type(func),
|
||||
v.type = type_function_get_rettype(func->type);
|
||||
update_tfsoff(type_function_get_rettype(func->type),
|
||||
write_typeformatstring_var(
|
||||
file, 2, NULL, get_func_return_type(func),
|
||||
file, 2, NULL,
|
||||
type_function_get_rettype(func->type),
|
||||
&v, typeformat_offset),
|
||||
file);
|
||||
}
|
||||
@ -2768,10 +2769,10 @@ static unsigned int get_function_buffer_size( const var_t *func, enum pass pass
|
||||
}
|
||||
}
|
||||
|
||||
if (pass == PASS_OUT && !is_void(get_func_return_type(func)))
|
||||
if (pass == PASS_OUT && !is_void(type_function_get_rettype(func->type)))
|
||||
{
|
||||
var_t v = *func;
|
||||
v.type = get_func_return_type(func);
|
||||
v.type = type_function_get_rettype(func->type);
|
||||
total_size += get_required_buffer_size(&v, &alignment, PASS_RETURN);
|
||||
total_size += alignment;
|
||||
}
|
||||
@ -3208,7 +3209,7 @@ void write_remoting_arguments(FILE *file, int indent, const var_t *func, const c
|
||||
{
|
||||
var_t var;
|
||||
var = *func;
|
||||
var.type = get_func_return_type(func);
|
||||
var.type = type_function_get_rettype(func->type);
|
||||
var.name = xstrdup( "_RetVal" );
|
||||
write_remoting_arg( file, indent, func, local_var_prefix, pass, phase, &var );
|
||||
free( var.name );
|
||||
@ -3241,10 +3242,10 @@ size_t get_size_procformatstring_func(const var_t *func)
|
||||
size += get_size_procformatstring_type(var->name, var->type, var->attrs);
|
||||
|
||||
/* return value size */
|
||||
if (is_void(get_func_return_type(func)))
|
||||
if (is_void(type_function_get_rettype(func->type)))
|
||||
size += 2; /* FC_END and FC_PAD */
|
||||
else
|
||||
size += get_size_procformatstring_type("return value", get_func_return_type(func), NULL);
|
||||
size += get_size_procformatstring_type("return value", type_function_get_rettype(func->type), NULL);
|
||||
|
||||
return size;
|
||||
}
|
||||
@ -3294,10 +3295,10 @@ void declare_stub_args( FILE *file, int indent, const var_t *func )
|
||||
const var_t *var;
|
||||
|
||||
/* declare return value '_RetVal' */
|
||||
if (!is_void(get_func_return_type(func)))
|
||||
if (!is_void(type_function_get_rettype(func->type)))
|
||||
{
|
||||
print_file(file, indent, "");
|
||||
write_type_decl_left(file, get_func_return_type(func));
|
||||
write_type_decl_left(file, type_function_get_rettype(func->type));
|
||||
fprintf(file, " _RetVal;\n");
|
||||
}
|
||||
|
||||
|
@ -49,6 +49,12 @@ static inline var_list_t *type_function_get_args(const type_t *type)
|
||||
return type->details.function->args;
|
||||
}
|
||||
|
||||
static inline type_t *type_function_get_rettype(const type_t *type)
|
||||
{
|
||||
assert(type->type == RPC_FC_FUNCTION);
|
||||
return type->ref;
|
||||
}
|
||||
|
||||
static inline var_list_t *type_enum_get_values(const type_t *type)
|
||||
{
|
||||
assert(type->type == RPC_FC_ENUM16 || type->type == RPC_FC_ENUM32);
|
||||
|
@ -455,11 +455,6 @@ type_t *make_type(unsigned char type, type_t *ref);
|
||||
|
||||
void init_loc_info(loc_info_t *);
|
||||
|
||||
static inline type_t *get_func_return_type(const var_t *func)
|
||||
{
|
||||
return func->type->ref;
|
||||
}
|
||||
|
||||
static inline var_list_t *type_get_function_args(const type_t *func_type)
|
||||
{
|
||||
return func_type->details.function->args;
|
||||
|
@ -1438,7 +1438,7 @@ static HRESULT add_func_desc(msft_typeinfo_t* typeinfo, var_t *func, int index)
|
||||
|
||||
/* fill out the basic type information */
|
||||
typedata[0] = typedata_size | (index << 16);
|
||||
encode_var(typeinfo->typelib, get_func_return_type(func), func, &typedata[1], NULL, NULL, &decoded_size);
|
||||
encode_var(typeinfo->typelib, type_function_get_rettype(func->type), func, &typedata[1], NULL, NULL, &decoded_size);
|
||||
typedata[2] = funcflags;
|
||||
typedata[3] = ((52 /*sizeof(FUNCDESC)*/ + decoded_size) << 16) | typeinfo->typeinfo->cbSizeVft;
|
||||
typedata[4] = (next_idx << 16) | (callconv << 8) | (invokekind << 3) | funckind;
|
||||
|
Loading…
x
Reference in New Issue
Block a user