Add TestDelIns ().
[m17n/m17n-lib-cs.git] / MSymbol.cs
index 67fa7e9..96ff477 100644 (file)
@@ -11,7 +11,7 @@ namespace M17N.Core
     private class MSymbolData
     {
       public string name;
-      public Object value;
+      public object value;
       public MPlist plist;
 
       public MSymbolData (string name)
@@ -22,8 +22,12 @@ namespace M17N.Core
 
     private MSymbolData data;
 
-    static public MSymbol nil = new MSymbol ("nil");
-    static public MSymbol t = new MSymbol ("t");
+    public static MSymbol nil = new MSymbol ("nil");
+    public static MSymbol t = new MSymbol ("t");
+    public static MSymbol symbol = new MSymbol ("symbol");
+    public static MSymbol mtext = new MSymbol ("mtext");
+    public static MSymbol plist = new MSymbol ("plist");
+    public static MSymbol integer = new MSymbol ("integer");
 
     public MSymbol (string name)
     {
@@ -36,38 +40,60 @@ namespace M17N.Core
        data = (MSymbolData) pool[name];
     }
 
-    public override string ToString () { return data.name; }
+    public override string ToString ()
+    {
+      string str = "";
+
+      foreach (char c in data.name)
+       {
+         if (c == '\\' || c == ' ' || c == '\'' || c == '\"' || c == ':')
+           str += "\\";
+         str += c;
+       }
+      return str;
+    }
 
-    public override bool Equals (Object sym)
+    public static bool operator== (MSymbol sym1, MSymbol sym2)
     {
-      return (this.data == ((MSymbol) sym).data);
+      if (System.Object.ReferenceEquals(sym1, sym2))
+        return true;
+      if (((object) sym1 == null) || ((object) sym2 == null))
+        return false;
+      return sym1.data == sym2.data;
     }
 
-    public override int GetHashCode ()
+    public static bool operator!= (MSymbol sym1, MSymbol sym2)
     {
-      return (data.name.GetHashCode ());
+      return ! (sym1 == sym2);
     }
 
-    public static bool operator== (MSymbol sym1, MSymbol sym2)
+    public override bool Equals (object sym)
     {
-      return ((object) sym1.data == (object) sym2.data);
+      if (sym == null)
+       return false;
+      return (this.data == ((MSymbol) sym).data);
     }
 
-    public static bool operator!= (MSymbol sym1, MSymbol sym2)
+    public override int GetHashCode ()
+    {
+      return (data.name.GetHashCode ());
+    }
+
+    public MPlist Find (MSymbol key)
     {
-      return ((object) sym1.data != (object) sym2.data);
+      return (data.plist == null ? null : data.plist.Find (key));
     }
 
-    public object get (MSymbol key)
+    public object Get (MSymbol key)
     {
-      return (data.plist == null ? null : data.plist.get (key));
+      return (data.plist == null ? null : data.plist.Get (key));
     }
 
-    public object put (MSymbol key, object val)
+    public object Put (MSymbol key, object val)
     {
       if (data.plist == null)
        data.plist = new MPlist ();
-      return data.plist.put (key, val);
+      return data.plist.Put (key, val);
     }
   }
 }