Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd6f4834

Browse files
committed
implemented NativeTypeOffset for installation with setup.py
1 parentfe1fb3b commitd6f4834

File tree

6 files changed

+25
-18
lines changed

6 files changed

+25
-18
lines changed

‎src/runtime/interop36.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// Auto-generated by geninterop.py.
33
// DO NOT MODIFY BY HAND.
44

5+
// Python 3.6: ABI flags: ''
6+
57
// ReSharper disable InconsistentNaming
68
// ReSharper disable IdentifierTypo
79

‎src/runtime/interop37.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// Auto-generated by geninterop.py.
33
// DO NOT MODIFY BY HAND.
44

5+
// Python 3.7: ABI flags: ''
6+
57
// ReSharper disable InconsistentNaming
68
// ReSharper disable IdentifierTypo
79

‎src/runtime/interop38.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// Auto-generated by geninterop.py.
33
// DO NOT MODIFY BY HAND.
44

5+
// Python 3.8: ABI flags: ''
6+
57
// ReSharper disable InconsistentNaming
68
// ReSharper disable IdentifierTypo
79

‎src/runtime/interop39.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// Auto-generated by geninterop.py.
33
// DO NOT MODIFY BY HAND.
44

5+
// Python 3.9: ABI flags: ''
6+
57
// ReSharper disable InconsistentNaming
68
// ReSharper disable IdentifierTypo
79

‎src/runtime/native/ABI.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,12 @@ internal static void Initialize(Version version, BorrowedReference pyType)
1515

1616
varthisAssembly=Assembly.GetExecutingAssembly();
1717

18+
conststringnativeTypeOffsetClassName="Python.Runtime.NativeTypeOffset";
1819
stringclassName="Python.Runtime.TypeOffset"+offsetsClassSuffix;
19-
TypetypeOffsetsClass=thisAssembly.GetType(className,throwOnError:false);
20+
TypetypeOffsetsClass=
21+
// Try platform native offsets first. It is only present when generated by setup.py
22+
thisAssembly.GetType(nativeTypeOffsetClassName,throwOnError:false)
23+
??thisAssembly.GetType(className,throwOnError:false);
2024
if(typeOffsetsClassisnull)
2125
thrownewNotSupportedException($"Python ABI v{version} is not supported");
2226
vartypeOffsets=(ITypeOffsets)Activator.CreateInstance(typeOffsetsClass);

‎tools/geninterop/geninterop.py

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -244,22 +244,15 @@ def preprocess_python_headers():
244244

245245

246246
defgen_interop_head(writer):
247-
ifhasattr(sys,"abiflags"):
248-
if"d"insys.abiflags:
249-
defines.append("PYTHON_WITH_PYDEBUG")
250-
raiseNotImplementedError
251-
if"m"insys.abiflags:
252-
defines.append("PYTHON_WITH_PYMALLOC")
253-
raiseNotImplementedError
254-
if"u"insys.abiflags:
255-
defines.append("PYTHON_WITH_WIDE_UNICODE")
256-
raiseNotImplementedError
257-
258247
filename=os.path.basename(__file__)
248+
abi_flags=sys.abiflagsifhasattr(sys,"abiflags")else''
249+
py_ver="{0}.{1}".format(PY_MAJOR,PY_MINOR)
259250
class_definition="""
260251
// Auto-generated by %s.
261252
// DO NOT MODIFY BY HAND.
262253
254+
// Python %s: ABI flags: '%s'
255+
263256
// ReSharper disable InconsistentNaming
264257
// ReSharper disable IdentifierTypo
265258
@@ -270,7 +263,7 @@ def gen_interop_head(writer):
270263
using Python.Runtime.Native;
271264
272265
namespace Python.Runtime
273-
{"""%filename
266+
{"""%(filename,py_ver,abi_flags)
274267
writer.extend(class_definition)
275268

276269

@@ -281,20 +274,21 @@ def gen_interop_tail(writer):
281274
writer.extend(tail)
282275

283276

284-
defgen_heap_type_members(parser,writer):
277+
defgen_heap_type_members(parser,writer,type_name=None):
285278
"""Generate the TypeOffset C# class"""
286279
members=parser.get_struct_members("PyHeapTypeObject")
280+
type_name=type_nameor"TypeOffset{0}{1}".format(PY_MAJOR,PY_MINOR)
287281
class_definition="""
288282
[SuppressMessage("Style", "IDE1006:Naming Styles",
289283
Justification = "Following CPython",
290284
Scope = "type")]
291285
292286
[StructLayout(LayoutKind.Sequential)]
293-
internal classTypeOffset{0}{1} : GeneratedTypeOffsets, ITypeOffsets
287+
internal class{0} : GeneratedTypeOffsets, ITypeOffsets
294288
{{
295-
publicTypeOffset{0}{1}() {{ }}
289+
public{0}() {{ }}
296290
// Auto-generated from PyHeapTypeObject in Python.h
297-
""".format(PY_MAJOR,PY_MINOR)
291+
""".format(type_name)
298292

299293
# All the members are sizeof(void*) so we don't need to do any
300294
# extra work to determine the size based on the type.
@@ -347,9 +341,10 @@ def main():
347341

348342
writer=Writer()
349343
# generate the C# code
344+
offsets_type_name="NativeTypeOffset"iflen(sys.argv)>1elseNone
350345
gen_interop_head(writer)
351346

352-
gen_heap_type_members(ast_parser,writer)
347+
gen_heap_type_members(ast_parser,writer,type_name=offsets_type_name)
353348

354349
ver_define="PYTHON{0}{1}".format(PY_MAJOR,PY_MINOR)
355350
writer.append(code="#if "+ver_define)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp