More dump_data_value().
[pspp] / dump.c
diff --git a/dump.c b/dump.c
index 052e77784852c11c089a6e8f1c316687c90eaffc..cbf4e3a51f6d1c8eedb89a46b2fed1b5b59ba9bf 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -657,6 +657,62 @@ dump_dims(void)
     }
 }
 
+static void
+dump_data_value_31(void)
+{
+  if (match_byte (0x31))
+    {
+      if (match_u32 (0))
+        {
+          if (match_u32 (1))
+            get_string();
+          else
+            match_u32_assert (0);
+          int subn = get_u32 ();
+          printf ("nested %d bytes", subn);
+          pos += subn;
+        }
+      else if (match_u32 (1))
+        {
+          printf("(footnote %d) ", get_u32());
+          match_byte_assert (0);
+          match_byte_assert (0);
+          int subn = get_u32 ();
+          printf ("nested %d bytes", subn);
+          pos += subn;
+        }
+      else if (match_u32 (2))
+        {
+          printf("(special 2)");
+          match_byte_assert(0);
+          match_byte_assert(0);
+          match_u32_assert(1);
+          match_byte_assert(0);
+          match_byte_assert(0);
+          int subn = get_u32 ();
+          printf ("nested %d bytes", subn);
+          pos += subn;
+        }
+      else
+        {
+          match_u32_assert(3);
+          printf("(special 3)");
+          match_byte_assert(0);
+          match_byte_assert(0);
+          match_byte_assert(1);
+          match_byte_assert(0);
+          int subn = get_u32 ();
+          printf ("nested %d bytes, ", subn);
+          pos += subn;
+          subn = get_u32 ();
+          printf ("nested %d bytes, ", subn);
+          pos += subn;
+        }
+    }
+  else
+    match_byte_assert (0x58);
+}
+
 static void
 dump_data(void)
 {
@@ -689,43 +745,7 @@ dump_data(void)
           unsigned int format;
           double value;
 
-          if (match_byte (0x31))
-            {
-              if (match_u32 (0))
-                {
-                  if (match_u32 (1))
-                    get_string();
-                  else
-                    match_u32_assert (0);
-                  int subn = get_u32 ();
-                  printf ("nested %d bytes", subn);
-                  pos += subn;
-                }
-              else if (match_u32 (1))
-                {
-                  printf("(footnote %d) ", get_u32());
-                  match_byte_assert (0);
-                  match_byte_assert (0);
-                  int subn = get_u32 ();
-                  printf ("nested %d bytes", subn);
-                  pos += subn;
-                }
-              else
-                {
-                  match_u32_assert(2);
-                  printf("(special 2)");
-                  match_byte_assert(0);
-                  match_byte_assert(0);
-                  match_u32_assert(1);
-                  match_byte_assert(0);
-                  match_byte_assert(0);
-                  int subn = get_u32 ();
-                  printf ("nested %d bytes", subn);
-                  pos += subn;
-                }
-            }
-          else
-            match_byte_assert (0x58);
+          dump_data_value_31();
           format = get_u32 ();
           value = get_double ();
           printf ("    value %g format %d(%d.%d)", value, format >> 16, (format >> 8) & 0xff, format & 0xff);
@@ -733,55 +753,7 @@ dump_data(void)
       else if (match_byte (3))
         {
           get_string();
-          if (match_byte (0x31))
-            {
-              if (match_u32 (0))
-                {
-                  match_u32_assert (1);
-                  get_string ();
-                  int subn = get_u32 ();
-                  printf ("nested %d bytes", subn);
-                  pos += subn;
-                }
-              else if (match_u32 (1))
-                {
-                  printf("(footnote %d) ", get_u32());
-                  match_byte_assert (0);
-                  match_byte_assert (0);
-                  int subn = get_u32 ();
-                  printf ("nested %d bytes", subn);
-                  pos += subn;
-                }
-              else if (match_u32 (2))
-                {
-                  printf("(special 2)");
-                  match_byte_assert(0);
-                  match_byte_assert(0);
-                  match_u32_assert(1);
-                  match_byte_assert(0);
-                  match_byte_assert(0);
-                  int subn = get_u32 ();
-                  printf ("nested %d bytes", subn);
-                  pos += subn;
-                }
-              else
-                {
-                  match_u32_assert(3);
-                  printf("(special 3)");
-                  match_byte_assert(0);
-                  match_byte_assert(0);
-                  match_byte_assert(1);
-                  match_byte_assert(0);
-                  int subn = get_u32 ();
-                  printf ("nested %d bytes, ", subn);
-                  pos += subn;
-                  subn = get_u32 ();
-                  printf ("nested %d bytes, ", subn);
-                  pos += subn;
-                }
-            }
-          else
-            match_byte_assert (0x58);
+          dump_data_value_31();
           get_string();
           printf("string \"%s\"", get_string());
           match_byte (0);
@@ -829,25 +801,9 @@ dump_data(void)
           match_byte (0);
           match_byte (0);
         }
-      else if (match_byte(0x31))
+      else
         {
-          if (match_u32 (1))
-            {
-              printf("(footnote %d) ", get_u32());
-              match_byte_assert (0);
-              match_byte_assert (0);
-              int subn = get_u32 ();
-              printf ("nested %d bytes", subn);
-              pos += subn;
-            }
-          else
-            {
-              match_u32_assert (0);
-              match_u32_assert (0);
-              int subn = get_u32 ();
-              printf ("nested %d bytes", subn);
-              pos += subn;
-            }
+          dump_data_value_31();
           char *base = get_string();
           int x = get_u32();
           printf ("\"%s\"; %d variables:\n", base, x);
@@ -868,43 +824,7 @@ dump_data(void)
                       unsigned int format;
                       double value;
 
-                      if (match_byte (0x31))
-                        {
-                          if (match_u32 (0))
-                            {
-                              if (match_u32 (1))
-                                get_string();
-                              else
-                                match_u32_assert (0);
-                              int subn = get_u32 ();
-                              printf ("nested %d bytes", subn);
-                              pos += subn;
-                            }
-                          else if (match_u32 (1))
-                            {
-                              printf("(footnote %d) ", get_u32());
-                              match_byte_assert (0);
-                              match_byte_assert (0);
-                              int subn = get_u32 ();
-                              printf ("nested %d bytes", subn);
-                              pos += subn;
-                            }
-                          else
-                            {
-                              match_u32_assert(2);
-                              printf("(special 2)");
-                              match_byte_assert(0);
-                              match_byte_assert(0);
-                              match_u32_assert(1);
-                              match_byte_assert(0);
-                              match_byte_assert(0);
-                              int subn = get_u32 ();
-                              printf ("nested %d bytes", subn);
-                              pos += subn;
-                            }
-                        }
-                      else
-                        match_byte_assert (0x58);
+                      dump_data_value_31();
                       format = get_u32 ();
                       value = get_double ();
                       printf ("    value %g format %d(%d.%d)", value, format >> 16, (format >> 8) & 0xff, format & 0xff);
@@ -941,68 +861,6 @@ dump_data(void)
                 }
             }
         }
-      else
-        {
-          match_byte_assert (0x58);
-          char *base = get_string();
-          int x = get_u32();
-          printf ("\"%s\" with %d variables:\n", base, x);
-          for (int i = 0; i < x; i++)
-            {
-              int y = get_u32();
-              if (!y)
-                y = 1;
-              else
-                match_u32_assert(0);
-              for (int j = 0; j <= 0; j++)
-                printf ("    ");
-              printf("variable %d has %d values:\n", i, y);
-              for (int j = 0; j < y; j++)
-                {
-                  if (match_byte(3))
-                    {
-                      char *a = get_string();
-                      match_byte_assert(0x58);
-                      char *b = get_string();
-                      char *c = get_string();
-                      for (int k = 0; k <= 1; k++)
-                        printf ("    ");
-                      printf ("\"%s\", \"%s\", \"%s\"", a, b, c);
-                      match_byte(0);
-                      match_byte(0);
-                      match_byte(0);
-                      match_byte(0);
-                      match_byte(0);
-                    }
-                  else if (match_byte (1))
-                    {
-                      unsigned int format;
-                      double value;
-
-                      if (match_byte (0x31))
-                        {
-                          if (match_u32 (1))
-                            {
-                              printf("(footnote %d) ", get_u32());
-                              match_byte_assert (0);
-                              match_byte_assert (0);
-                              int subn = get_u32 ();
-                              printf ("nested %d bytes", subn);
-                              pos += subn;
-                            }
-                        }
-                      else
-                        match_byte_assert (0x58);
-                      format = get_u32 ();
-                      value = get_double ();
-                      printf ("value %g format %d(%d.%d)", value, format >> 16, (format >> 8) & 0xff, format & 0xff);
-                    }
-                  else
-                    dump_value (1);
-                  putchar('\n');
-                }
-            }
-        }
       putchar('\n');
     }
 }