Author: hpoussin
Date: Sat Aug 2 10:34:14 2008
New Revision: 35039
URL:
http://svn.reactos.org/svn/reactos?rev=35039&view=rev
Log:
Support nested structures
Modified:
trunk/reactos/tools/widl/typegen.c
trunk/reactos/tools/widl/widl_ros.diff
Modified: trunk/reactos/tools/widl/typegen.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/typegen.c?rev=3…
==============================================================================
--- trunk/reactos/tools/widl/typegen.c [iso-8859-1] (original)
+++ trunk/reactos/tools/widl/typegen.c [iso-8859-1] Sat Aug 2 10:34:14 2008
@@ -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);
Modified: trunk/reactos/tools/widl/widl_ros.diff
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/widl_ros.diff?r…
==============================================================================
--- trunk/reactos/tools/widl/widl_ros.diff [iso-8859-1] (original)
+++ trunk/reactos/tools/widl/widl_ros.diff [iso-8859-1] Sat Aug 2 10:34:14 2008
@@ -46,6 +46,22 @@
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)