Esempio n. 1
0
        /// <summary>
        ///     Attach the PyObject to a new PySharp object
        /// </summary>
        /// <param name="pySharp">New PySharp object</param>
        /// <returns>A new copy of itself</returns>
        public PyObject Attach(PySharp pySharp)
        {
            if (_newReference)
            {
                Py.Py_IncRef(_pyReference);
            }

            return(new PyObject(pySharp, _pyReference, _newReference));
        }
Esempio n. 2
0
        /// <summary>
        ///     Get a PyObject from a list
        /// </summary>
        /// <typeparam name="TItem"></typeparam>
        /// <param name="value"></param>
        /// <returns></returns>
        public PyObject From <TItem>(IEnumerable <TItem> value)
        {
            var result = new PyObject(this, Py.PyList_New(value.Count()), true);

            for (var i = 0; i < value.Count(); i++)
            {
                var pyItem = From(value.ElementAt(i));

                if (pyItem == null)
                {
                    return(PyZero);
                }

                // PyList_SetItem steals a reference, this makes sure we dont free it later
                Py.Py_IncRef(pyItem);

                if (Py.PyList_SetItem(result, i, pyItem) == -1)
                {
                    return(PyZero);
                }
            }

            return(result);
        }