private void GetTypes(MethodInfo mi, AbstractTerm methodStructObj, ref ArrayList paramArray, AbstractTerm obj)
{
AMHeap da = (AMHeap)runtime.DataArea;
AbstractTerm methodObj = (AbstractTerm)methodStructObj.Next;
ParameterInfo[] parms = mi.GetParameters();
for (int i = 0; i < parms.Length; i++)
{
ParameterInfo par = (ParameterInfo)parms[i];
AbstractTerm var = (AbstractTerm)methodObj;
if (i != parms.Length - 1)
{
methodObj = (AbstractTerm)methodObj.Next;
}
switch (par.ParameterType.ToString())
{
case "System.Int32":
paramArray.Add(Int32.Parse(var.Data() as string));
break;
case "System.Char":
paramArray.Add(((string)var.Data())[0]);
break;
case "System.String":
paramArray.Add(var.Data() as string);
break;
case "System.Boolean":
paramArray.Add(Boolean.Parse(var.Data() as string));
break;
default: // pass Variable.Object
paramArray.Add(var);
break;
}
}
}