File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ use crate :: { PyObject , pystate:: with_vm} ;
2+ use std:: ffi:: c_int;
3+
4+ #[ unsafe( no_mangle) ]
5+ pub extern "C" fn PyObject_GetItem ( obj : * mut PyObject , key : * mut PyObject ) -> * mut PyObject {
6+ with_vm ( |vm| {
7+ let obj = unsafe { & * obj } ;
8+ let key = unsafe { & * key } ;
9+ obj. get_item ( key, vm)
10+ } )
11+ }
12+
13+ #[ unsafe( no_mangle) ]
14+ pub extern "C" fn PyObject_SetItem (
15+ obj : * mut PyObject ,
16+ key : * mut PyObject ,
17+ value : * mut PyObject ,
18+ ) -> c_int {
19+ with_vm ( |vm| {
20+ let obj = unsafe { & * obj } ;
21+ let key = unsafe { & * key } ;
22+ let value = unsafe { & * value } . to_owned ( ) ;
23+ obj. set_item ( key, value, vm)
24+ } )
25+ }
26+
27+ #[ unsafe( no_mangle) ]
28+ pub extern "C" fn PyObject_DelItem ( obj : * mut PyObject , key : * mut PyObject ) -> c_int {
29+ with_vm ( |vm| {
30+ let obj = unsafe { & * obj } ;
31+ let key = unsafe { & * key } ;
32+ obj. del_item ( key, vm)
33+ } )
34+ }
35+
36+ #[ unsafe( no_mangle) ]
37+ pub extern "C" fn PyObject_IsSubclass ( derived : * mut PyObject , cls : * mut PyObject ) -> c_int {
38+ with_vm ( |vm| {
39+ let derived = unsafe { & * derived } ;
40+ let cls = unsafe { & * cls } ;
41+ derived. is_subclass ( cls, vm)
42+ } )
43+ }
44+
45+ #[ unsafe( no_mangle) ]
46+ pub extern "C" fn PyObject_IsInstance ( inst : * mut PyObject , cls : * mut PyObject ) -> c_int {
47+ with_vm ( |vm| {
48+ let inst = unsafe { & * inst } ;
49+ let cls = unsafe { & * cls } ;
50+ inst. is_instance ( cls, vm)
51+ } )
52+ }
Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ use std::sync::MutexGuard;
88
99extern crate alloc;
1010
11+ mod abstract_;
1112pub mod object;
1213pub mod pyerrors;
1314pub mod pylifecycle;
You can’t perform that action at this time.
0 commit comments