| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent ba1df6e commit 639ba1f
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -25,8 +25,7 @@ public static void LoadDefaultArgs() | |||
| 25 | 25 | { | |
| 26 | 26 | using (new PythonEngine()) | |
| 27 | 27 | { | |
| 28 | - var argvref = new BorrowedReference(Runtime.Runtime.PySys_GetObject("argv")); | ||
| 29 | - using(var argv = new PyList(argvref.DangerousGetAddress())) | ||
| 28 | + using(var argv = new PyList(new BorrowedReference(Runtime.Runtime.PySys_GetObject("argv")))) | ||
| 30 | 29 | { | |
| 31 | 30 | Assert.AreNotEqual(0, argv.Length()); | |
| 32 | 31 | } | |
@@ -39,8 +38,7 @@ public static void LoadSpecificArgs() | |||
| 39 | 38 | var args = new[] { "test1", "test2" }; | |
| 40 | 39 | using (new PythonEngine(args)) | |
| 41 | 40 | { | |
| 42 | - var argvref = new BorrowedReference(Runtime.Runtime.PySys_GetObject("argv")); | ||
| 43 | - using(var argv = new PyList(argvref.DangerousGetAddress())) | ||
| 41 | + using(var argv = new PyList(new BorrowedReference(Runtime.Runtime.PySys_GetObject("argv")))) | ||
| 44 | 42 | { | |
| 45 | 43 | Assert.AreEqual(args[0], argv[0].ToString()); | |
| 46 | 44 | Assert.AreEqual(args[1], argv[1].ToString()); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -80,6 +80,25 @@ public PyList(PyObject[] items) | |||
| 80 | 80 | } | |
| 81 | 81 | } | |
| 82 | 82 | ||
| 83 | + /// <summary> | ||
| 84 | + /// Constructor to make a PyList from a BorrowedReference. | ||
| 85 | + /// The list assumes ownership of the reference. | ||
| 86 | + /// </summary> | ||
| 87 | + /// <param name="r">The borrowed reference</param> | ||
| 88 | + internal PyList(BorrowedReference r) | ||
| 89 | + { | ||
| 90 | + IntPtr addr = r.DangerousGetAddress(); | ||
| 91 | + if(!Runtime.PyList_Check(addr)) | ||
| 92 | + { | ||
| 93 | + throw new ArgumentException("object is not a list"); | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + obj = addr; | ||
| 97 | + // Take ownership. | ||
| 98 | + Runtime.XIncref(addr); | ||
| 99 | + | ||
| 100 | + } | ||
| 101 | + | ||
| 83 | 102 | ||
| 84 | 103 | /// <summary> | |
| 85 | 104 | /// IsListType Method | |
| Back | FazBrowse Home | New Git URL |
0 commit comments