I would like to run Python strings and get an object return from .NET.
 To this end I added PyRun_String to the Runtime object and another
method to PythonEngine ala the existing SimpleString implementation.

Everything compiles, but  Runtime.PyRun_String always returns a NULL,
and it does not look like the code is being run.

Is there any trick to adding new methods to the Runtime?

// From Runtime.cs

        [DllImport(Runtime.dll, CallingConvention=CallingConvention.Cdecl,
                   ExactSpelling=true, CharSet=CharSet.Ansi)]
        internal unsafe static extern IntPtr
        PyRun_String(string code, int start, IntPtr globals, IntPtr locals);
  

// From Python.cs

                public static PyObject RunString(string code)
                {
                        IntPtr globals = Runtime.PyEval_GetGlobals();
                        IntPtr locals = Runtime.PyEval_GetLocals();
                        IntPtr ret;

                        ret = Runtime.PyRun_String(code, 257,globals, locals);
                        
                        Runtime.Decref(globals);
                        Runtime.Decref(locals);

                        if (ret == IntPtr.Zero) 
                        {
                                throw new PythonException();
                        }

                        return new PyObject(ret);
                }
_________________________________________________
Python.NET mailing list - PythonDotNet@python.org
http://mail.python.org/mailman/listinfo/pythondotnet

Reply via email to