コード例 #1
0
ファイル: PyVariable.cs プロジェクト: blessingshawn/KodiSharp
        /// <summary>
        /// Calls the specified function and assigns the result to this variable
        /// </summary>
        /// <param name="function"></param>
        /// <param name="arguments"></param>
        /// <param name="escapeMethod"></param>
        /// <returns></returns>
        public dynamic CallAssign(
            PyFunction function,
            List <object> arguments  = null,
            EscapeFlags escapeMethod = EscapeFlags.Quotes | EscapeFlags.StripNullItems,
            PyVariable target        = null
            )
        {
            string argumentsText = "";

            if (arguments != null)
            {
                List <string> textArguments = PythonInterop.EscapeArguments(arguments, escapeMethod);
                argumentsText = string.Join(", ", textArguments);
            }

            if (target == null)
            {
                target = this;
            }

            PythonInterop.EvalToVar(target, "{0}({1})", new List <object> {
                function.ToString(), argumentsText
            }, EscapeFlags.None);

            return(this.Value);
        }
コード例 #2
0
        public PyVariable NewInstance(PyVariableFlags flags = PyVariableFlags.Object, List <object> arguments = null)
        {
            PyVariable instance = PyVariableManager.NewVariable(flags: flags);

            instance.CallAssign(new PythonFunction(this.ClassName), arguments);
            return(instance);
        }
コード例 #3
0
ファイル: PyVariable.cs プロジェクト: blessingshawn/KodiSharp
 public dynamic CallFunction(
     string function,
     List <object> arguments  = null,
     EscapeFlags escapeMethod = EscapeFlags.Quotes | EscapeFlags.StripNullItems,
     PyVariable target        = null
     )
 {
     return(CallFunction(PyFunction.ClassFunction(function), arguments, escapeMethod, target: target));
 }
コード例 #4
0
 /// <summary>
 /// Allocates a new variable
 /// </summary>
 /// <param name="variableName">Name of the variable to add</param>
 /// <param name="isObject">Indicates the variable will store non-serializable data (like class instances)</param>
 /// <returns>The newly added variable, or null if the variable already exists</returns>
 public static PyVariable NewVariable(string variableName = null, PyVariableFlags flags = PyVariableFlags.Normal)
 {
     if (variableName == null)
     {
         variableName = "_var" + _variables.Count;
     }
     if (!_variables.ContainsKey(variableName))
     {
         PyVariable variable = new PyVariable(variableName, flags: flags);
         _variables.Add(variableName, new WeakReference <PyVariable>(variable));
         return(variable);
     }
     return(null);
 }
コード例 #5
0
ファイル: PyVariable.cs プロジェクト: blessingshawn/KodiSharp
        public dynamic CallFunction(
            PyFunction function,
            string argumentsBody,
            PyVariable target = null
            )
        {
            if (target == null)
            {
                target = PyVariableManager.LastResult;
            }

            return((PythonInterop.EvalToVar(target, string.Format("{0}.{1}({2})",
                                                                  this.PyName, function.Function, argumentsBody
                                                                  ))).Value);
        }
コード例 #6
0
ファイル: PyVariable.cs プロジェクト: blessingshawn/KodiSharp
        public dynamic CallFunction(
            PyFunction function,
            List <object> arguments  = null,
            EscapeFlags escapeMethod = EscapeFlags.Quotes | EscapeFlags.StripNullItems,
            PyVariable target        = null
            )
        {
            if (arguments == null)
            {
                arguments = new List <object>();
            }

            List <string> textArguments = PythonInterop.EscapeArguments(arguments, escapeMethod);

            return(CallFunction(function, string.Join(", ", textArguments), target: target));
        }
コード例 #7
0
        public PyVariable NewInstance(List <object> arguments = null)
        {
            PyVariable instance = PyVariableManager.Get.NewVariable();

            List <object> args = new List <object>()
            {
                "self.bridge"
            };

            if (arguments != null)
            {
                args.AddRange(arguments);
            }

            return(instance.CallAssign(PyFunction.ClassFunction(this.ClassName), args));
        }
コード例 #8
0
ファイル: PyDict.cs プロジェクト: xiaoxiongnpu/KodiSharp
 public PyDict(PyVariable var)
 {
     Instance = var;
     Instance.EvalAssign(EmptyDict);
 }
コード例 #9
0
 public static void DestroyVariable(PyVariable variable)
 {
     DestroyVariable(variable.Name);
 }
コード例 #10
0
 /// <summary>
 /// Copies a Python variable to another by using an assignment (var_dest=var_src)
 /// </summary>
 /// <param name="dest"></param>
 /// <param name="source"></param>
 public static void CopyVariable(PyVariable dest, PyVariable source)
 {
     PythonInterop.EvalToVar(dest, source.PyName);
 }
コード例 #11
0
 public void DeleteVariable(PyVariable pyVariable)
 {
     //pyVariable has absolute path here, dict['var']
     variables.Remove(pyVariable.Basename);
 }
コード例 #12
0
 public PyDict(PyVariable var)
 {
     Instance = var;
     Instance.EvalAssign("{}");
 }