Support nested structures

svn path=/trunk/; revision=35039
This commit is contained in:
Hervé Poussineau
2008-08-02 15:34:14 +00:00
parent 50e5c6483a
commit a71a69c253
2 changed files with 19 additions and 2 deletions
+3 -2
View File
@@ -3299,8 +3299,9 @@ int write_expr_eval_routines(FILE *file, const char *iface)
print_file(file, 0, "static void __RPC_USER %s_%sExprEval_%04u(PMIDL_STUB_MESSAGE pStubMsg)\n",
iface, name, callback_offset);
print_file(file, 0, "{\n");
print_file (file, 1, "%s *%s = (%s *)(pStubMsg->StackTop - %u);\n",
name, var_name, name, eval->baseoff);
print_file (file, 1, "%s%s *%s = (%s%s *)(pStubMsg->StackTop - %u);\n",
is_struct(eval->structure->type) ? "struct " : "", name, var_name,
is_struct(eval->structure->type) ? "struct " : "", name, eval->baseoff);
print_file(file, 1, "pStubMsg->Offset = 0;\n"); /* FIXME */
print_file(file, 1, "pStubMsg->MaxCount = (unsigned long)");
write_struct_expr(file, eval->expr, 1, fields, var_name);
+16
View File
@@ -46,6 +46,22 @@ Index: server.c
print_server("#include \"%s\"\n", header_name);
fprintf(server, "\n");
}
Index: typegen.c
===================================================================
--- typegen.c (revision 32187)
+++ typegen.c (working copy)
@@ -3299,8 +3299,9 @@
print_file(file, 0, "static void __RPC_USER %s_%sExprEval_%04u(PMIDL_STUB_MESSAGE pStubMsg)\n",
iface, name, callback_offset);
print_file(file, 0, "{\n");
- print_file (file, 1, "%s *%s = (%s *)(pStubMsg->StackTop - %u);\n",
- name, var_name, name, eval->baseoff);
+ print_file (file, 1, "%s%s *%s = (%s%s *)(pStubMsg->StackTop - %u);\n",
+ is_struct(eval->structure->type) ? "struct " : "", name, var_name,
+ is_struct(eval->structure->type) ? "struct " : "", name, eval->baseoff);
print_file(file, 1, "pStubMsg->Offset = 0;\n"); /* FIXME */
print_file(file, 1, "pStubMsg->MaxCount = (unsigned long)");
write_struct_expr(file, eval->expr, 1, fields, var_name);
Index: typelib.c
===================================================================
--- typelib.c (revision 32187)