*** empty log message ***
[m17n/m17n-lib-cs.git] / frontsensitive.cs
index 86193c8..b9fd103 100644 (file)
@@ -29,6 +29,10 @@ public class Test
   // If no property begings at positoin i, value[i] is undefined.
   static MSymbol[] value = new MSymbol[LENGTH];
 
+  // Cut buffers
+  static int[] subprop = new int[LENGTH], subend = new int[LENGTH];
+  static MSymbol[] subvalue = new MSymbol[LENGTH];
+
   static void TestPushProp (int from, int to, MProperty newprop)
   {
     Console.WriteLine ("from {0}, to {1}, push {2}.\n", from, to, newprop.Val);
@@ -61,7 +65,6 @@ public class Test
 
     int i, n;
 
-    Console.WriteLine ("prop[from] = {0}", prop[from]);
     if (from > 0 && prop[from - 1] == prop[from] && prop[from] != -1)
       for (i = prop[from]; i < from; i++)
          prop[i] = -1;
@@ -84,10 +87,7 @@ public class Test
     Console.WriteLine ("from {0}, to {1}, moveto {2}.\n", from, to, from2);
 
     int i, n, l = to - from;
-    int[] prop2 = new int[LENGTH], end2 = new int[LENGTH];
-    MSymbol[] value2 = new MSymbol[LENGTH];
 
-    DebugDump (0);
     // sensitivity for deletion
     if (from > 0 && prop[from] != -1)
       {
@@ -103,36 +103,33 @@ public class Test
          prop[i] = -1;
       }
 
-    DebugDump (1);
     // copy
     for (i = from; i < to; i++)
       {
        if (prop[i] != -1)
          {
-           prop2[i - from] = prop[i] - from + from2;
-           end2[prop2[i - from]] = end[prop[i]] - from + from2;
-           value2[prop2[i - from]] = value[prop[i]];
+           subprop[i - from] = prop[i] - from + from2;
+           subend[i - from] = end[i] - from + from2;
+           subvalue[i - from] = value[i];
          }
        else
-         prop2[i - from] = -1;
+         subprop[i - from] = -1;
       }
 
-    DebugDump (2);
     // delete
     for (i = to; i < LENGTH; i++)
       {
        if (prop[i] != -1)
          {
            prop[i - l] = prop[i] - l;
-           end[prop[i - l]] = end[prop[i]] - l;
-           value[prop[i - l]] = value[prop[i]];
+           end[i - l] = end[i] - l;
+           value[i - l] = value[i];
          }
        else
          prop[i - l] = -1;
       }
     prop[LENGTH - l] = -1;
 
-    DebugDump (3);
     // sensitivity for insertion
     if (prop[from2] != -1)
       {
@@ -144,35 +141,35 @@ public class Test
        for (; i < n; i++)
          prop[i] = -1;
       }
+    if (from2 > 0 && subprop[0] != -1)
+      for (i = 0; i < subend[0] - from2; i++)
+       subprop[i] = -1;
 
-    DebugDump (4);
     // move
     for (i = LENGTH - 1; i >= from2 + l; i--)
       {
        if (prop[i - l] != -1)
          {
            prop[i] = prop[i - l] + l;
-           end[prop[i]] = end[prop[i - l]] + l;
-           value[prop[i]] = value[prop[i - l]];
+           end[i] = end[i - l] + l;
+           value[i] = value[i - l];
          }
        else
          prop[i] = -1;
       }
 
-    DebugDump (5);
     // insert
     for (i = from2; i < from2 + l; i++)
       {
-       if (prop2[i - from2] != -1)
+       if (subprop[i - from2] != -1)
          {
-           prop[i] = prop2[i - from2];
-           end[prop[i]] = end2[prop2[i - from2]];
-           value[prop[i]] = value2[prop2[i - from2]];
+           prop[i] = subprop[i - from2];
+           end[i] = subend[i - from2];
+           value[i] = subvalue[i - from2];
          }
        else
          prop[i] = -1;
       }
-    DebugDump (6);
 
     MText mt2 = mt.Dup ();
     mt.Del (from, to);
@@ -228,50 +225,6 @@ public class Test
     Console.Write ("\n");
   }
 
-  static void DebugDump (int n)
-  {
-    /*
-    int i;
-
-    Console.Write ("\n#{0}\n  ", n);
-    for (i = 0; i <= LENGTH; i++)
-      Console.Write ("{0} ", i);
-    Console.Write ("\n----------------------\nP ");
-    for (i = 0; i < LENGTH; i++)
-      {
-       if (prop[i] != -1)
-         Console.Write ("{0} ", prop[i]);
-       else
-         Console.Write ("  ");
-      }
-    Console.Write ("\nE ");
-    if (prop[0] != -1)
-      Console.Write ("{0} ", end[0]);
-    else
-      Console.Write ("  ");
-    for (i = 1; i < LENGTH; i++)
-      {
-       if (prop[i - 1] != prop[i] && prop[i] != -1)
-         Console.Write ("{0} ", end[i]);
-       else
-         Console.Write ("  ");
-      }
-    Console.Write ("\nV ");
-    if (prop[0] != -1)
-      Console.Write ("{0} ", value[0]);
-    else
-      Console.Write ("  ");
-    for (i = 1; i < LENGTH; i++)
-      {
-       if (prop[i - 1] != prop[i] && prop[i] != -1)
-         Console.Write ("{0} ", value[i]);
-       else
-         Console.Write ("  ");
-      }
-    Console.Write ("\n");
-    */
-  }
-
   public static void Main (string[] args)
   {
     Random r = new Random (int.Parse (args[0]));