X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=dump.c;h=0445597e635aa6673304d1fa734df0cc29371edc;hb=463238cd3f894fc6fb5cebbcc7bb2b9584c640a8;hp=70ecab632058cf56a7146983f0da940f1e3c09d5;hpb=86009a9088ecdfddfacd7974f30b88cb89937d55;p=pspp diff --git a/dump.c b/dump.c index 70ecab6320..0445597e63 100644 --- a/dump.c +++ b/dump.c @@ -648,7 +648,7 @@ dump_category(FILE *stream, int level, int *indexes, int *n_indexes, int max_ind printf ("\n"); } -static void +static int dump_dim(int indx) { int n_categories; @@ -679,36 +679,60 @@ dump_dim(int indx) check_permutation(indexes, n_indexes, "categories"); fprintf (stdout, "\n"); + return n_indexes; } int n_dims; +static int dim_n_cats[64]; +#define MAX_DIMS (sizeof dim_n_cats / sizeof *dim_n_cats) + static void dump_dims(void) { n_dims = get_u32(); + assert(n_dims < MAX_DIMS); for (int i = 0; i < n_dims; i++) - dump_dim (i); + dim_n_cats[i] = dump_dim (i); } static void dump_data(void) { /* The first three numbers add to the number of dimensions. */ - int t = get_u32(); - t += get_u32(); - match_u32_assert(n_dims - t); + int l = get_u32(); + int r = get_u32(); + int c = n_dims - l - r; + match_u32_assert(c); /* The next n_dims numbers are a permutation of the dimension numbers. */ int a[n_dims]; for (int i = 0; i < n_dims; i++) - a[i] = get_u32(); + { + int dim = get_u32(); + a[i] = dim; + + const char *name = i < l ? "layer" : i < l + r ? "row" : "column"; + printf ("<%s dimension=\"%d\"/>\n", name, dim); + } check_permutation(a, n_dims, "dimensions"); int x = get_u32(); printf ("\n"); for (int i = 0; i < x; i++) { - printf (" \n", get_u32()); + unsigned int indx = get_u32(); + printf (" \n"); match_u32_assert(0); if (version == 1) match_byte(0);