{
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)
}
}
- 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))
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);
}
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);
}
}
}