private void GenerateMethod(CodeTypeDeclaration classType, ProcedureInstruction pi)
{
CodeMemberMethod method = new CodeMemberMethod();
method.Name = pi.ProcedureName;
method.ReturnType = new CodeTypeReference("System.Boolean");
method.Attributes = MemberAttributes.Public;
string objectStatement = "new object [] { ";
for (int i = 0; i < pi.Arity; i++)
{
method.Parameters.Add(new CodeParameterDeclarationExpression("System.Object", "arg" + (i + 1)));
objectStatement += "arg" + (i + 1);
if (i == pi.Arity - 1)
{
objectStatement += " }";
}
else
{
objectStatement += ", ";
}
}
method.Statements.Add(new CodeSnippetStatement("return machine.Call(\"" + pi.ProcedureName + "\", " + pi.Arity + ", " + objectStatement + ", _more);"));
classType.Members.Add(method);
}