From 8494f57d178a042559fc9e093dd8a60b5ff22907 Mon Sep 17 00:00:00 2001 From: Robert Shearman Date: Sat, 31 Dec 2005 13:19:13 +0100 Subject: [PATCH] widl: Output sizing information for arrays in the generated marshaling code. --- tools/widl/typegen.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c index 1346729bf3d..33eecbc74e2 100644 --- a/tools/widl/typegen.c +++ b/tools/widl/typegen.c @@ -448,11 +448,31 @@ void marshall_arguments(FILE *file, int indent, func_t *func, if (!has_length && !has_size) array_type = "FixedArray"; else if (has_length && !has_size) + { + print_file(file, indent, "_StubMsg.Offset = (unsigned long)0;\n"); /* FIXME */ + print_file(file, indent, "_StubMsg.ActualCount = (unsigned long)"); + write_expr(file, length_is, 1); + fprintf(file, ";\n\n"); array_type = "VaryingArray"; + } else if (!has_length && has_size) + { + print_file(file, indent, "_StubMsg.MaxCount = (unsigned long)"); + write_expr(file, size_is ? size_is : var->array, 1); + fprintf(file, ";\n\n"); array_type = "ConformantArray"; + } else + { + print_file(file, indent, "_StubMsg.MaxCount = (unsigned long)"); + write_expr(file, size_is ? size_is : var->array, 1); + fprintf(file, ";\n"); + print_file(file, indent, "_StubMsg.Offset = (unsigned long)0;\n"); /* FIXME */ + print_file(file, indent, "_StubMsg.ActualCount = (unsigned long)"); + write_expr(file, length_is, 1); + fprintf(file, ";\n\n"); array_type = "ConformantVaryingArray"; + } } print_file(file, indent,