本文整理汇总了C#中Erlang.tupleValue方法的典型用法代码示例。如果您正苦于以下问题:C# Erlang.tupleValue方法的具体用法?C# Erlang.tupleValue怎么用?C# Erlang.tupleValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Erlang
的用法示例。
在下文中一共展示了Erlang.tupleValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: encode_size
public int encode_size(Erlang.Object o)
{
if (o is Erlang.Atom) return 1 + 2 + o.atomValue().Length;
else if (o is Erlang.Boolean) return 1 + 2 + (o.boolValue()
? Erlang.Boolean.s_true.atomValue().Length
: Erlang.Boolean.s_false.atomValue().Length);
else if (o is Erlang.Binary) return 5 + o.binaryValue().Length;
else if (o is Erlang.Long)
{
long l = o.longValue();
if ((l & 0xff) == l) return 2;
else if ((l <= OtpExternal.erlMax) && (l >= OtpExternal.erlMin)) return 5;
return long_arity(l);
}
else if (o is Erlang.Byte) return 1 + 1;
else if (o is Erlang.Double) return 9;
else if (o is Erlang.String)
{
string l = o.stringValue();
if (l.Length == 0) return 1;
if (l.Length < 0xffff) return 2 + l.Length;
return 1 + 4 + 2 * l.Length;
}
else if (o is Erlang.List)
{
Erlang.List l = o.listValue();
if (l.arity() == 0)
return 1;
int sz = 5;
for (int i = 0; i < l.arity(); i++)
sz += encode_size(l[i]);
return sz;
}
else if (o is Erlang.Tuple)
{
Erlang.Tuple l = o.tupleValue();
int sz = 1 + (l.arity() < 0xff ? 1 : 4);
for (int i = 0; i < l.arity(); i++)
sz += encode_size(l[i]);
return sz;
}
else if (o is Erlang.Pid)
{
Erlang.Pid p = o.pidValue();
return 1 + (1 + 2 + p.node().Length) + 4 + 4 + 1;
}
else if (o is Erlang.Ref)
{
Erlang.Ref p = o.refValue();
int[] ids = p.ids();
return 1 + (1 + 2 + p.node().Length) + 1 + 4 * ids.Length;
}
else if (o is Erlang.Port)
{
Erlang.Port p = o.portValue();
return 1 + (1 + 2 + p.node().Length) + 4 + 1;
}
else
throw new Erlang.Exception("Unknown encode size for object: " + o.ToString());
}