Some titles work.
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 2 Nov 2014 18:19:58 +0000 (10:19 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 2 Nov 2014 18:19:58 +0000 (10:19 -0800)
dump.c
notes

diff --git a/dump.c b/dump.c
index d1de72327faf5c0e6a8b7d2162ef8a46ac3b98cc..745cff4c2e4315e41955472234b07daca14425b8 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -1003,6 +1003,281 @@ dump_data(void)
     }
 }
 
     }
 }
 
+static void
+dump_title_value(int level)
+{
+  for (int i = 0; i <= level; i++)
+    printf ("    ");
+
+  match_byte (0);
+  match_byte (0);
+  match_byte (0);
+  match_byte (0);
+  if (match_byte (3))
+    {
+      get_string();
+      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 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);
+      get_string();
+      printf("string \"%s\"", get_string());
+      match_byte (0);
+      match_byte (0);
+      match_byte (0);
+      match_byte (1);
+      match_byte (1);
+      match_byte (0);
+      match_byte (0);
+      match_byte (0);
+      match_byte (1);
+    }
+  else if (match_byte (5))
+    {
+      match_byte_assert (0x58);
+      printf ("variable \"%s\"", get_string());
+      get_string();
+      if (!match_byte(1) && !match_byte(2))
+        match_byte_assert(3);
+      match_byte (0);
+      match_byte (0);
+      match_byte (0);
+      match_byte (0);
+    }
+  else if (match_byte (2))
+    {
+      unsigned int format;
+      char *var, *vallab;
+      double value;
+
+      match_byte_assert (0x58);
+      format = get_u32 ();
+      value = get_double ();
+      var = get_string ();
+      vallab = get_string ();
+      printf ("value %g format %d(%d.%d) var \"%s\" vallab \"%s\"",
+              value, format >> 16, (format >> 8) & 0xff, format & 0xff, var, vallab);
+      if (!match_byte (1) && !match_byte(2))
+        match_byte_assert (3);
+      match_byte (0);
+      match_byte (0);
+      match_byte (0);
+      match_byte (0);
+      match_byte (0);
+      match_byte (0);
+      match_byte (0);
+    }
+  else if (match_byte (4))
+    {
+      unsigned int format;
+      char *var, *vallab, *value;
+
+      match_byte_assert (0x58);
+      format = get_u32 ();
+      vallab = get_string ();
+      var = get_string ();
+      if (!match_byte(1) && !match_byte(2))
+        match_byte_assert (3);
+      value = get_string ();
+      printf ("value \"%s\" format %d(%d.%d) var \"%s\" vallab \"%s\"",
+              value, format >> 16, (format >> 8) & 0xff, format & 0xff, var, vallab);
+      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);
+      match_byte (1);
+      match_byte (0);
+      match_byte (0);
+      match_byte (0);
+      match_byte (1);
+    }
+  else 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 if (match_u32 (0))
+        {
+          match_u32_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;
+        }
+
+      char *base = get_string();
+      int x = get_u32();
+      printf ("\"%s\"; %d variables:\n", base, x);
+      if (match_u32(0))
+        {
+          for (int i = 0; i < x; i++)
+            {
+              dump_title_value (level+1);
+              putchar('\n');
+            }
+        }
+      else
+        {
+          for (int i = 0; i < x; i++)
+            {
+              int y = get_u32();
+              match_u32_assert(0);
+              for (int j = 0; j <= level; 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 <= level + 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
+                    dump_title_value (level+1);
+                  putchar('\n');
+                }
+            }
+        }
+    }
+  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 <= level; 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 <= level + 1; k++)
+                    printf ("    ");
+                  printf ("\"%s\", \"%s\", \"%s\"", a, b, c);
+                }
+              else
+                dump_title_value (level+1);
+              putchar('\n');
+            }
+        }
+    }
+}
+
+static void
+dump_title(void)
+{
+  pos = 0x27;
+  dump_title_value(0); putchar('\n');
+  dump_title_value(0); putchar('\n');
+  match_byte_assert(0x31);
+  dump_title_value(0); putchar('\n');
+  match_byte_assert(0x58);
+  match_byte_assert(0x31);
+  dump_title_value(0); putchar('\n');
+}
+
 int
 main(int argc, char *argv[])
 {
 int
 main(int argc, char *argv[])
 {
@@ -1044,7 +1319,12 @@ main(int argc, char *argv[])
             printf ("<unknown>\n");
           return 0;
         }
             printf ("<unknown>\n");
           return 0;
         }
-      if (!strcmp(argv[1], "title"))
+      else if (!strcmp(argv[1], "title"))
+        {
+          dump_title();
+          exit(0);
+        }
+      else if (!strcmp(argv[1], "titleraw"))
         {
           const char fonts[] = "\x01\x31\x09\0\0\0SansSerif";
           start = 0x27;
         {
           const char fonts[] = "\x01\x31\x09\0\0\0SansSerif";
           start = 0x27;
@@ -1064,7 +1344,7 @@ main(int argc, char *argv[])
           start = find(styles, sizeof styles - 1);
           n = find(dimensions, sizeof dimensions - 1) + sizeof dimensions - 1;
         }
           start = find(styles, sizeof styles - 1);
           n = find(dimensions, sizeof dimensions - 1) + sizeof dimensions - 1;
         }
-      else if (!strcmp(argv[1], "dimensions"))
+      else if (!strcmp(argv[1], "dimensions") || !strcmp(argv[1], "all"))
         {
           {
             const char dimensions[] = "-,,,.\0";
         {
           {
             const char dimensions[] = "-,,,.\0";
@@ -1080,7 +1360,9 @@ main(int argc, char *argv[])
           pos = start;
           dump_dims ();
           dump_data ();
           pos = start;
           dump_dims ();
           dump_data ();
-          start = pos;
+          if (!strcmp(argv[1], "all"))
+            dump_title ();
+          exit(0);
         }
       else
         {
         }
       else
         {
diff --git a/notes b/notes
index 8818503f6fe6b18ff821b6f961affaa50448a5df..f6f1a886590a59500f2894ee48ee4d6be9082084 100644 (file)
--- a/notes
+++ b/notes
@@ -227,6 +227,18 @@ tdump24 (title with variable substitution, no labels, caption with substitution)
       i0 05 58 "fobia" "" 03
       i0 01 58 F6.2(0.05) 00 
 
       i0 05 58 "fobia" "" 03
       i0 01 58 F6.2(0.05) 00 
 
+smekens/default/00000000018_lightTableData.bin:
+
+    03 "Factor Transformation Matrix" 58 "" "Factor Transformation Matrix" 01
+    03 "Factor Transformation Matrix" 58 "" "Factor Transformation Matrix" 01
+    31 03 "Factor Transformation Matrix" 58 "" "Factor Transformation Matrix" 01
+    58 31
+    00 58 "^1 \n ^2" i2 ""
+       03 "Extraction Method: Principal Axis Factoring. " 58 "" "Extraction Method: Principal Axis Factoring. " i0 00
+       03 "Rotation Method: Varimax with Kaiser Normalization. " 58 "" "Rotation Method: Varimax with Kaiser Normalization. " 
+    i0 00 
+
+
 
 
 Fonts
 
 
 Fonts
@@ -287,7 +299,6 @@ tdump37:
     07 31 "SansSerif" 00 00 40 41 i0 00 i64173 i1 "#000000" "#ffffff" i0 i0 00 i8 i10 i1 i1
     08 31 "SansSerif" 00 00 40 41 i0 00 i2 i1     "#000000" "#ffffff" i0 i0 00 i8 i10 i1 i-1 
 
     07 31 "SansSerif" 00 00 40 41 i0 00 i64173 i1 "#000000" "#ffffff" i0 i0 00 i8 i10 i1 i1
     08 31 "SansSerif" 00 00 40 41 i0 00 i2 i1     "#000000" "#ffffff" i0 i0 00 i8 i10 i1 i-1 
 
-
 Styles
 ------
 
 Styles
 ------