private List <int> PatchCode(List <int> bytecode, List <GPLCSource> patchList, List <Binding> bs) { int i, offset, patch; List <string> errorLog = new List <string>(); for (i = 7; i < patchList.Count; i = i + 2) { offset = SafeArgumentHandler.RefToOffset(bs, patchList[i], 2, errorLog) + 1; patch = SafeArgumentHandler.ReadLiteral(patchList[i + 1], errorLog, 2); bytecode[offset] = patch; } if (errorLog.Count > 0) { foreach (string error in errorLog) { Console.Write(error); } Console.Write("\n\nCompilation aborted at data block patching stage."); Console.ReadLine(); Environment.Exit(1); } return(bytecode); }
private List <int> TransformArguments(List <GPLCSource> source, List <Binding> bs, List <int> mode, List <string> errorLog, int i) { int n; List <int> transformedArguments = new List <int>(); i++; for (n = 0; n < mode.Count; n++) { if (mode[n] == 0) { transformedArguments.Add(SafeArgumentHandler.RefToOffset(bs, source[i], 0, errorLog)); } else if (mode[n] == 1) { transformedArguments.Add(SafeArgumentHandler.RefToOffset(bs, source[i], 1, errorLog)); } else { transformedArguments.Add(SafeArgumentHandler.ReadLiteral(source[i], errorLog, 1)); } i++; } return(transformedArguments); }