internal static string decodeIO(Erlang.Object msg)
{
if (msg is Erlang.Tuple)
{
Erlang.Tuple t = (Erlang.Tuple)msg;
if (t.arity() == 4)
{
Erlang.Atom ios = t[0] as Erlang.Atom;
Erlang.Tuple data = t[3] as Erlang.Tuple;
if (ios != null && ios.atomValue() == "io_request" && data != null)
{
if ((data[0] as Erlang.Atom).atomValue() == "put_chars")
{
if (data[1] is Erlang.String)
return (data[1] as Erlang.String).stringValue();
else if (data[1] is Erlang.Binary)
{
byte[] bin = (data[1] as Erlang.Binary).binaryValue();
char[] s = new char[bin.Length];
bin.CopyTo(s, 0);
return new string(s);
}
else
return data[1].ToString();
}
}
}
}
return null;
}