FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
pythonnet/src/runtime/native/ABI.cs at master · sdpython/pythonnet · GitHub
This repository was archived by the owner on Jul 22, 2023. It is now read-only.
sdpython
pythonnet
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
pythonnet
/
src
/
runtime
/
native
/
ABI.cs
Copy path
More file actions
More file actions
Latest commit
History
History
History
37 lines (33 loc) · 1.77 KB
Breadcrumbs
pythonnet
/
src
/
runtime
/
native
/
ABI.cs
Copy path
File metadata and controls
37 lines (33 loc) · 1.77 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
namespace
Python
.
Runtime
.
Native
{
using
System
;
using
System
.
Globalization
;
using
System
.
Linq
;
using
System
.
Reflection
;
using
System
.
Runtime
.
InteropServices
;
static
class
ABI
{
internal
static
void
Initialize
(
Version
version
,
BorrowedReference
pyType
)
{
string
offsetsClassSuffix
=
string
.
Format
(
CultureInfo
.
InvariantCulture
,
"{0}{1}"
,
version
.
Major
,
version
.
Minor
)
;
var
thisAssembly
=
Assembly
.
GetExecutingAssembly
(
)
;
const
string
nativeTypeOffsetClassName
=
"Python.Runtime.NativeTypeOffset"
;
string
className
=
"Python.Runtime.TypeOffset"
+
offsetsClassSuffix
;
Type
typeOffsetsClass
=
// Try platform native offsets first. It is only present when generated by setup.py
thisAssembly
.
GetType
(
nativeTypeOffsetClassName
,
throwOnError
:
false
)
??
thisAssembly
.
GetType
(
className
,
throwOnError
:
false
)
;
if
(
typeOffsetsClass
is
null
)
{
var
types
=
thisAssembly
.
GetTypes
(
)
.
Select
(
type
=>
type
.
Name
)
.
Where
(
name
=>
name
.
StartsWith
(
"TypeOffset"
)
)
;
string
message
=
$
"Searching for
{
className
}
, found
{
string
.
Join
(
","
,
types
)
}
. "
+
"If you are building Python.NET from source, make sure you have run 'python setup.py configure' to fill in configured.props"
;
throw
new
NotSupportedException
(
$
"Python ABI v
{
version
}
is not supported:
{
message
}
"
)
;
}
var
typeOffsets
=
(
ITypeOffsets
)
Activator
.
CreateInstance
(
typeOffsetsClass
)
;
TypeOffset
.
Use
(
typeOffsets
)
;
ManagedDataOffsets
.
Magic
=
Marshal
.
ReadInt32
(
pyType
.
DangerousGetAddress
(
)
,
TypeOffset
.
tp_basicsize
)
;
}
}
}
Back
|
FazBrowse Home
|
New Git URL