(length_type): Make the length functions for SequenceOf

non-destructive


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1939 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1997-06-30 04:10:05 +00:00
parent 58c1bd504e
commit a1cf5dc4e2

View File

@@ -67,15 +67,15 @@ length_type (char *name, Type *t, char *variable)
fprintf (codefile,
"{\n"
"int oldret = %s;\n"
"%s = 0;\n", variable, variable);
"int i;\n"
"%s = 0;\n",
variable, variable);
fprintf (codefile, "while((%s)->len){\n", name);
sprintf (n, "&(%s)->val[(%s)->len-1]", name, name);
fprintf (codefile, "for(i = (%s)->len - 1; i >= 0; --i){\n", name);
sprintf (n, "&(%s)->val[i]", name);
length_type(n, t->subtype, variable);
fprintf(codefile,
"(%s)->len--;\n"
"}\n",
name);
fprintf (codefile, "}\n");
fprintf (codefile,
"%s += 1 + length_len(%s) + oldret;\n"
"}\n", variable, variable);