changeset 1317:2772c16622bb

Add checking of duplicate patterns in the optimization pass of xm2jss. Not actually removing the dupes yet.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 20 Aug 2017 02:14:02 +0300
parents 817a4d0c70b5
children f8c45f7aac79
files tools/xm2jss.c
diffstat 1 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tools/xm2jss.c	Sun Aug 20 01:55:09 2017 +0300
+++ b/tools/xm2jss.c	Sun Aug 20 02:14:02 2017 +0300
@@ -765,6 +765,17 @@
 }
 
 
+/* Check if two given patterns are dupes
+ */
+BOOL comparePattern(const JSSPattern *pat1, const JSSPattern *pat2)
+{
+    return
+        pat1->nrows     == pat2->nrows &&
+        pat1->nchannels == pat2->nchannels &&
+        memcmp(pat1->data, pat2->data, sizeof(JSSNote) * pat1->nrows * pat1->nchannels) == 0;
+}
+
+
 /* Optimize a given module
  */
 JSSModule *optimizeModule(JSSModule *m)
@@ -1075,6 +1086,17 @@
     }
 
     //
+    // Check for duplicate patterns ..
+    //
+    dmMsg(1, "Checking for duplicate patterns ...\n");
+    for (int pat1 = 0; pat1 < r->npatterns; pat1++)
+    for (int pat2 = 0; pat2 < r->npatterns; pat2++)
+    if (pat1 != pat2 && comparePattern(r->patterns[pat1], r->patterns[pat2]))
+    {
+        dmPrint(1, " * %d and %d are dupes.\n");
+    }
+
+    //
     // Remap orders list
     //
     for (i = 0; i < m->norders; i++)