mirror of
https://github.com/reactos/wine.git
synced 2025-02-08 05:08:16 +00:00
widl: Out parameters.
Marshall and unmarshall out parameters for servers and clients respectively. Write out array components for declared local variables in generated server code.
This commit is contained in:
parent
e0dd7b6ed8
commit
4acabfd719
@ -210,6 +210,8 @@ static void write_function_stubs(type_t *iface)
|
|||||||
print_client("_StubMsg.BufferStart = (unsigned char *)_RpcMessage.Buffer;\n");
|
print_client("_StubMsg.BufferStart = (unsigned char *)_RpcMessage.Buffer;\n");
|
||||||
print_client("_StubMsg.BufferEnd = _StubMsg.BufferStart + _RpcMessage.BufferLength;\n\n");
|
print_client("_StubMsg.BufferEnd = _StubMsg.BufferStart + _RpcMessage.BufferLength;\n\n");
|
||||||
|
|
||||||
|
unmarshall_arguments(client, indent, func, &type_offset, PASS_OUT);
|
||||||
|
|
||||||
/* unmarshal return value */
|
/* unmarshal return value */
|
||||||
if (!is_void(def->type, NULL))
|
if (!is_void(def->type, NULL))
|
||||||
{
|
{
|
||||||
|
@ -115,7 +115,7 @@ const char* get_name(const var_t *v)
|
|||||||
return v->name;
|
return v->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void write_array(FILE *h, const expr_t *v, int field)
|
void write_array(FILE *h, const expr_t *v, int field)
|
||||||
{
|
{
|
||||||
if (!v) return;
|
if (!v) return;
|
||||||
while (NEXT_LINK(v)) v = NEXT_LINK(v);
|
while (NEXT_LINK(v)) v = NEXT_LINK(v);
|
||||||
|
@ -32,6 +32,7 @@ extern int is_object(attr_t *a);
|
|||||||
extern int is_local(attr_t *a);
|
extern int is_local(attr_t *a);
|
||||||
extern var_t *is_callas(attr_t *a);
|
extern var_t *is_callas(attr_t *a);
|
||||||
extern void write_args(FILE *h, var_t *arg, const char *name, int obj, int do_indent);
|
extern void write_args(FILE *h, var_t *arg, const char *name, int obj, int do_indent);
|
||||||
|
extern void write_array(FILE *h, const expr_t *v, int field);
|
||||||
extern void write_forward(type_t *iface);
|
extern void write_forward(type_t *iface);
|
||||||
extern void write_interface(type_t *iface);
|
extern void write_interface(type_t *iface);
|
||||||
extern void write_dispinterface(type_t *iface);
|
extern void write_dispinterface(type_t *iface);
|
||||||
|
@ -153,6 +153,7 @@ static void write_function_stubs(type_t *iface)
|
|||||||
write_type(server, var->type, var, var->tname);
|
write_type(server, var->type, var, var->tname);
|
||||||
fprintf(server, " ");
|
fprintf(server, " ");
|
||||||
write_name(server, var);
|
write_name(server, var);
|
||||||
|
write_array(server, var->array, 0);
|
||||||
fprintf(server, ";\n");
|
fprintf(server, ";\n");
|
||||||
|
|
||||||
var = PREV_LINK(var);
|
var = PREV_LINK(var);
|
||||||
@ -293,6 +294,8 @@ static void write_function_stubs(type_t *iface)
|
|||||||
fprintf(server, "\n");
|
fprintf(server, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
marshall_arguments(server, indent, func, &type_offset, PASS_OUT);
|
||||||
|
|
||||||
/* marshall the return value */
|
/* marshall the return value */
|
||||||
if (!is_void(def->type, NULL))
|
if (!is_void(def->type, NULL))
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user