예제 #1
0
        public static Value lib_processutil_readBridge(VmContext vm, Value[] args)
        {
            ObjectInstance bridge     = (ObjectInstance)args[0].internalValue;
            ListImpl       outputList = (ListImpl)args[1].internalValue;
            int            type       = (int)args[2].internalValue;
            object         mtx        = bridge.nativeData[4];

            if ((type == 1))
            {
                int outputInt = ProcessUtilHelper.ReadBridgeInt(mtx, bridge.nativeData, type);
                Interpreter.Vm.CrayonWrapper.addToList(outputList, Interpreter.Vm.CrayonWrapper.buildInteger(vm.globals, outputInt));
            }
            else
            {
                List <string> output = new List <string>();
                ProcessUtilHelper.ReadBridgeStrings(mtx, bridge.nativeData, type, output);
                int i = 0;
                while ((i < output.Count))
                {
                    Interpreter.Vm.CrayonWrapper.addToList(outputList, Interpreter.Vm.CrayonWrapper.buildString(vm.globals, output[i]));
                    i += 1;
                }
            }
            return(vm.globalNull);
        }
예제 #2
0
        public static Value lib_processutil_launchProcess(VmContext vm, Value[] args)
        {
            ObjectInstance bridge = (ObjectInstance)args[0].internalValue;

            bridge.nativeData    = new object[5];
            bridge.nativeData[0] = true;
            bridge.nativeData[1] = 0;
            bridge.nativeData[2] = new List <string>();
            bridge.nativeData[3] = new List <string>();
            bridge.nativeData[4] = new object();
            string         execName        = (string)args[1].internalValue;
            ListImpl       argsRaw         = (ListImpl)args[2].internalValue;
            bool           isAsync         = (bool)args[3].internalValue;
            Value          cb              = args[4];
            ObjectInstance dispatcherQueue = (ObjectInstance)args[5].internalValue;
            List <string>  argStrings      = new List <string>();
            int            i = 0;

            while ((i < argsRaw.size))
            {
                Value a = Interpreter.Vm.CrayonWrapper.getItemFromList(argsRaw, i);
                argStrings.Add((string)a.internalValue);
                i += 1;
            }
            ProcessUtilHelper.LaunchProcessImpl(bridge.nativeData, execName, argStrings, isAsync, cb, vm);
            return(vm.globalNull);
        }