(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:
@@ -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);
|
||||
|
Reference in New Issue
Block a user