/// <summary>
        /// Returns a <see cref="ClassInterpreter"/> from a class name
        /// </summary>
        /// <param name="className">The class name</param>
        /// <returns>Returns the class interpreter</returns>
        private ClassInterpreter GetProjectClassReference(string className)
        {
            ClassInterpreter classReference = null;
            var program = ParentInterpreter.ParentProgramInterpreter;
            var i       = 0;

            while (i < program.Classes.Count && classReference == null)
            {
                if (program.Classes[i].ClassDeclaration.Name.ToString() == className)
                {
                    classReference = program.Classes[i];
                }

                i++;
            }

            return(classReference);
        }
Exemple #2
0
 /// <summary>
 /// Invoke a method in a new thread to avoid a stack overflow exception
 /// </summary>
 /// <param name="referenceClass">The class reference</param>
 /// <param name="argumentValues">The arguments values</param>
 /// <param name="callerMethod">The method from which we do the call</param>
 /// <param name="callStackService">The user call stack service</param>
 /// <returns></returns>
 private async Task CallMethodNewThread(ClassInterpreter referenceClass, Collection <object> argumentValues, MethodInterpreter callerMethod, CallStackService callStackService)
 {
     await ThreadPool.RunAsync(delegate { _result = referenceClass.InvokeMethod(ParentInterpreter, Expression, argumentValues, callerMethod, callStackService); });
 }