Esempio n. 1
0
        public PySharp(bool createFrame) : this()
        {
            if (!createFrame)
            {
                return;
            }

            // Create dummy code (needed for the new frame)
            _dummyCode = new PyObject(this, Py.PyCode_NewEmpty("", "", 1), true);
            // Create a new frame
            _frame = new PyObject(this, Py.PyFrame_New(Py.GetThreadState(), _dummyCode, Import("__main__").Attribute("__dict__"), Import("__main__").Attribute("__dict__")), true);
            // Exchange frames
            _oldFrame = new PyObject(this, Py.ExchangePyFrame(_frame), false);
        }
Esempio n. 2
0
        /// <summary>
        ///     Dispose of all PyReferences
        /// </summary>
        public void Dispose()
        {
            // Release the frame created for PySharp
            if (_frame != PyZero)
            {
                // Return the old frame
                Py.ExchangePyFrame(_oldFrame);

                _frame = PyZero;
            }

            // Remove any of the references we caused
            foreach (var pyObject in _pyReferences)
            {
                pyObject.Release();
            }

            // Clear any python errors we might have caused
            Py.PyErr_Clear();
        }