private static void AddVariableContent(StringBuilder variablesSb, string format, LocalVariable localVariable, MidRepresentationVariables vars, MethodInterpreter interpreter) { var localVariableData = interpreter.AnalyzeProperties.GetVariableData(localVariable); if (localVariableData == EscapingMode.Stack) { return; } if (localVariable.ComputedType().ClrType.IsSubclassOf(typeof(MethodInfo))) { variablesSb .AppendFormat("void (*{0})({1});", localVariable.Name, ComputeCommaSeparatedParameterTypes(localVariable)) .AppendLine(); return; } if (localVariableData == EscapingMode.Pointer) { var cppName = localVariable.ComputedType() .ClrType.ToDeclaredVariableType(true, localVariableData); variablesSb .AppendFormat(format, cppName, localVariable.Id) .AppendLine(); return; } variablesSb .AppendFormat(format, localVariable.ComputedType() .ClrType.ToDeclaredVariableType(true, localVariableData), localVariable.Id) .AppendLine(); }
static void AddVariableContent(StringBuilder variablesSb, string format, LocalVariable localVariable, MethodInterpreter interpreter, ClosureEntities closureEntities) { var localVariableData = interpreter.AnalyzeProperties.GetVariableData(localVariable); if (localVariableData == EscapingMode.Stack) { return; } if (localVariable.ComputedType().GetClrType(closureEntities).IsSubclassOf(typeof(MethodInfo))) { variablesSb .AppendFormat("System_Void (*{0})({1}*);", //TODO: Added * to deal with pointers, is this the right approach ? localVariable.Name, ComputeCommaSeparatedParameterTypes(localVariable)) .AppendLine(); return; } if (localVariableData == EscapingMode.Pointer) { var cppName = localVariable.ComputedType() .GetClrType(closureEntities).ToDeclaredVariableType(localVariableData); variablesSb .AppendFormat(format, cppName, localVariable.Id) .AppendLine(); return; } variablesSb .AppendFormat(format, localVariable.ComputedType() .GetClrType(closureEntities).ToDeclaredVariableType(localVariableData), localVariable.Id) .AppendLine(); }