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=35... ============================================================================== --- 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?re... ============================================================================== --- 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)