private void ProcessForeignMethod(PrologCodePredicate p)
{
// :- foreign(functor(+term,...),'Assembly','Class','MethodName').
PrologCodeMethod foreignMethod = new PrologCodeMethod();
PrologCodePredicate predicateFunctor = (PrologCodePredicate)p.Arguments[0];
// Add argument types
foreignMethod.Arguments = GetForeignMethodArguments(predicateFunctor);
foreignMethod.AssemblyName = GetAtomOrStringValue((PrologCodeTerm)p.Arguments[1]);
foreignMethod.Class = GetAtomOrStringValue((PrologCodeTerm)p.Arguments[2]);
foreignMethod.PredicateName = predicateFunctor.Name;
foreignMethod.MethodName = predicateFunctor.Name.Replace("'", "");
if (p.Arguments.Count == 4)
{
foreignMethod.MethodName = GetAtomOrStringValue((PrologCodeTerm)p.Arguments[3]);
}
// Add the method
_codeUnit.Methods.Add(foreignMethod);
}