コード例 #1
0
        private void InternalGetFields(MethodArgStack[] Stack, ref MethodArgStack returnValue, DotNetMethod method)
        {
            var val  = Stack[0];
            var type = (DotNetType)Objects.ObjectRefs[(int)val.value].Fields["internal__type"].value;

            var array = Arrays.AllocArray((int)type.Fields.Count);
            int i     = 0;

            foreach (var item in type.Fields)
            {
                var field2 = CreateType("System.Reflection", "FieldInfo");
                WriteStringToType(field2, "_internalName", item.Name);
                Objects.ObjectRefs[(int)field2.value].Fields.Add("ParrentObjectID", new MethodArgStack()
                {
                    type = StackItemType.Object, value = type
                });
                Objects.ObjectRefs[(int)field2.value].Fields.Add("InternalField", new MethodArgStack()
                {
                    type = StackItemType.Object, value = item
                });
                Arrays.ArrayRefs[array.Index].Items[i] = field2;
                i++;
            }
            returnValue = new MethodArgStack()
            {
                type = StackItemType.Array, value = array.Index
            };
        }
コード例 #2
0
        private void String_Split(MethodArgStack[] Stack, ref MethodArgStack returnValue, DotNetMethod method)
        {
            var         toSplit    = (string)Stack[0].value;
            var         seperators = Arrays.ArrayRefs[Arrays.GetIndexFromRef(Stack[1])];
            List <char> chars      = new List <char>();

            foreach (var item in seperators.Items)
            {
                chars.Add((char)(int)item.value);
            }

            var r   = toSplit.Split(chars.ToArray());
            var arr = Arrays.AllocArray(r.Length);

            for (int i = 0; i < r.Length; i++)
            {
                arr.Items[i] = MethodArgStack.String(r[i]);
            }
            returnValue = MethodArgStack.Array(arr);
            ;
        }