*** empty log message ***
[m17n/m17n-lib-cs.git] / MSymbol.cs
index bc67b1b..b92bcbf 100644 (file)
@@ -8,10 +8,10 @@ namespace M17N.Core
   {
     static private Hashtable pool = new Hashtable ();
 
-    internal class MSymbolData
+    private class MSymbolData
     {
       public string name;
-      public Object value;
+      public object value;
       public MPlist plist;
 
       public MSymbolData (string name)
@@ -20,11 +20,15 @@ namespace M17N.Core
       }
     }
 
-    static public MSymbol nil = new MSymbol ("nil");
-    static public MSymbol t = new MSymbol ("t");
-
     private MSymbolData data;
 
+    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)
     {
       if (! pool.ContainsKey (name))
@@ -36,10 +40,23 @@ 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 override bool Equals (object sym)
     {
+      if (sym == null)
+       return false;
       return (this.data == ((MSymbol) sym).data);
     }
 
@@ -50,24 +67,29 @@ namespace M17N.Core
 
     public static bool operator== (MSymbol sym1, MSymbol sym2)
     {
-      return ((object) sym1.data == (object) sym2.data);
+      return (sym1.data == sym2.data);
     }
 
     public static bool operator!= (MSymbol sym1, MSymbol sym2)
     {
-      return ((object) sym1.data != (object) sym2.data);
+      return (sym1.data != sym2.data);
+    }
+
+    public MPlist Find (MSymbol key)
+    {
+      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);
     }
   }
 }