Beispiel #1
0
        /// <summary>
        /// Creates new instance with default Functions/Types/Scope.
        /// </summary>
        public Context()
        {
            Types             = new RegisteredTypes();
            ExternalFunctions = new ExternalFunctions();
            Functions         = new RegisteredFunctions();
            Words             = new RegisteredWords();
            Plugins           = new RegisteredPlugins();
            Symbols           = new Symbols();
            Memory            = new Memory();
            Limits            = new Limits(this);
            TokenAliases      = new Dictionary <string, Token>();
            var stack = new CallStack(Limits.CheckCallStack);

            Callbacks = new Callbacks();
            State     = new LangState(stack);
            Units     = new Units();
            Methods   = new RegisteredMethods();
            Plugins.Init();
        }
 /// <summary>
 /// Whether or not the name/member combination supplied is a script level function or an external C# function
 /// </summary>
 /// <param name="ctx">Context of script</param>
 /// <param name="name">Object name "Log"</param>
 /// <param name="member">Member name "Info" as in "Log.Info"</param>
 /// <returns></returns>
 //public static bool IsInternalOrExternalFunction2(Context ctx, string name, string member)
 //{
 //    string fullName = name;
 //    if (!string.IsNullOrEmpty(member))
 //        fullName += "." + member;
 //
 //    // Case 1: getuser() script function
 //    if (ctx.Functions.Contains(fullName) || ctx.ExternalFunctions.Contains(fullName))
 //        return true;
 //
 //    return false;
 //}
 /// <summary>
 /// Whether or not this variable + member name maps to an external function call.
 /// Note: In fluentscript you can setup "Log.*" and allow all method calls to "Log" to map to that external call.
 /// </summary>
 /// <param name="funcs">The collection of external functions.</param>
 /// <param name="varName">The name of the external object e.g. "Log" as in "Log.Error"</param>
 /// <param name="memberName">The name of the method e.g. "Error" as in "Log.Error"</param>
 /// <returns></returns>
 public static bool IsExternalFunction(ExternalFunctions funcs, string varName, string memberName)
 {
     string funcName = varName + "." + memberName;
     if (funcs.Contains(funcName))
         return true;
     return false;
 }
Beispiel #3
0
 /// <summary>
 /// Creates new instance with default Functions/Types/Scope.
 /// </summary>
 public Context()
 {
     Types = new RegisteredTypes();
     ExternalFunctions = new ExternalFunctions();
     Words = new RegisteredWords();
     Plugins = new RegisteredPlugins();
     PluginsMeta = new MetaPluginContainer();
     Symbols = new Symbols();
     Memory = new Memory();
     Limits = new Limits(this);
     TokenAliases = new Dictionary<string, Token>();
     var stack = new CallStack(Limits.CheckCallStack);
     Callbacks = new Callbacks();
     State = new LangState(stack);
     Units = new Units();
     Methods = new RegisteredMethods();
     Plugins.Init();
 }