1587 {
1588
1589 if (function.ParameterCount != parameters.Count)
1590 throw new ExecutionException("Die Funktion '" + function.Name + "' wurde mit " + parameters.Count + " statt erwartet " + function.ParameterCount + " Parametern aufgerufen.");
1591
1592 this.function = function;
1593
1594 script = function.Executable.Script;
1595
1596 executable = script.Executable;
1597
1598 functionStack = new Stack<FunctionFrame>();
1599
1600 parameterStack = new Stack<object>();
1601
1602 locks = new Dictionary<object, Instruction>();
1603
1604 jobs = new List<Interpreter>();
1605
1606 host = null;
1607
1608 interrupt = false;
1609
1610 Reset();
1611
1612 foreach (object parameter in parameters)
1613 {
1614
1615 if (parameter == null)
1616 parameterStack.Push(NullReference.Instance);
1617
1618 else
1619 {
1620
1621 Type parameterType = parameter.GetType();
1622
1623 if (parameterType == typeof(NullReference))
1624 parameterStack.Push(NullReference.Instance);
1625
1626 else if (parameterType == typeof(int)
1627 || parameterType == typeof(float)
1628 || parameterType == typeof(double)
1629 || parameterType == typeof(bool)
1630 || parameterType == typeof(string)
1631 || parameterType == typeof(char)
1632 || parameterType == typeof(ArrayList))
1633 parameterStack.Push(parameter);
1634
1635 else
1636 throw new ExecutionException("Der Typ '" + parameterType.Name + "' ist kein generischer Typ.");
1637
1638 }
1639
1640 }
1641
1642 }