public static object EnumId(object enumObj, Context cx)
{
ScriptRuntime.IdEnumeration x = (ScriptRuntime.IdEnumeration)enumObj;
if (x.iterator != null)
{
return x.currentId;
}
switch (x.enumType)
{
case ENUMERATE_KEYS:
case ENUMERATE_KEYS_NO_ITERATOR:
{
return x.currentId;
}
case ENUMERATE_VALUES:
case ENUMERATE_VALUES_NO_ITERATOR:
{
return EnumValue(enumObj, cx);
}
case ENUMERATE_ARRAY:
case ENUMERATE_ARRAY_NO_ITERATOR:
{
object[] elements = new object[] { x.currentId, EnumValue(enumObj, cx) };
return cx.NewArray(ScriptableObject.GetTopLevelScope(x.obj), elements);
}
default:
{
throw Kit.CodeBug();
}
}
}