Skip to content

Commit 5cd74fd

Browse files
author
g.ph
committed
update
1 parent e9f52a6 commit 5cd74fd

File tree

4 files changed

+95
-1
lines changed

4 files changed

+95
-1
lines changed

PyDict.go

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,43 @@
11
package py3
22

3-
import "unsafe"
3+
import (
4+
"github.com/aadog/py3-go/cpy3"
5+
"unsafe"
6+
)
47

58
type PyDict struct {
69
PyObject
710
}
811

12+
func (p *PyDict) DelItemString(key string) int {
13+
return cpy3.PyDict_DelItemString(p.instance, key)
14+
}
15+
16+
func (p *PyDict) DelItem(key *PyObject) int {
17+
return cpy3.PyDict_DelItem(p.instance, key.instance)
18+
}
19+
20+
func (p *PyDict) GetItemString(key string) *PyObject {
21+
return PyObjectFromInst(cpy3.PyDict_GetItemString(p.instance, key))
22+
}
23+
24+
func (p *PyDict) Keys(key *PyObject) *PyObject {
25+
return PyObjectFromInst(cpy3.PyDict_Keys(p.instance))
26+
}
27+
func (p *PyDict) GetItem(key *PyObject) *PyObject {
28+
return PyObjectFromInst(cpy3.PyDict_GetItem(p.instance, key.instance))
29+
}
30+
31+
func (p *PyDict) SetItemString(key string, val *PyObject) int {
32+
return cpy3.PyDict_SetItemString(p.instance, key, val.instance)
33+
}
34+
func (p *PyDict) Size() int64 {
35+
return cpy3.PyDict_Size(p.instance)
36+
}
37+
func (p *PyDict) Clear() {
38+
cpy3.PyDict_Clear(p.instance)
39+
}
40+
941
// PyDictFromInst
1042
// 新建一个对象来自已经存在的对象实例指针。
1143
//
@@ -16,3 +48,7 @@ func PyDictFromInst(inst uintptr) *PyDict {
1648
dl.ptr = unsafe.Pointer(dl.instance)
1749
return dl
1850
}
51+
52+
func NewPyDict() *PyDict {
53+
return PyDictFromInst(cpy3.PyDict_New())
54+
}

PyModule.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,13 @@ func PyModuleFromInst(inst uintptr) *PyModule {
8888
return dl
8989
}
9090

91+
// Create a new object from an existing object instance pointer.
92+
func PyModuleFromObj(obj *PyObject) *PyModule {
93+
dl := new(PyModule)
94+
dl.PyObject=*obj
95+
return dl
96+
}
97+
9198
func NewModuleInitFuncCallBack(moduleName string, fn func() *PyObject) uintptr {
9299
c := syscall.NewCallback(func() uintptr {
93100
return fn().Instance()

cpy3/PyDict.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package cpy3
2+
3+
func PyDict_SetItemString(obj uintptr, key string, val uintptr) int {
4+
r, _, _ := pyDict_SetItemString.Call(obj, GoStrToCStr(key), val)
5+
return int(r)
6+
}
7+
8+
func PyDict_New() uintptr {
9+
r, _, _ := pyDict_New.Call()
10+
return r
11+
}
12+
13+
func PyDict_Size(obj uintptr) int64 {
14+
r, _, _ := pyDict_Size.Call(obj)
15+
return int64(r)
16+
}
17+
18+
func PyDict_Clear(obj uintptr) {
19+
pyDict_Clear.Call(obj)
20+
}
21+
func PyDict_GetItem(obj uintptr, key uintptr) uintptr {
22+
r, _, _ := pyDict_GetItem.Call(obj, key)
23+
return r
24+
}
25+
func PyDict_Keys(obj uintptr) uintptr {
26+
r, _, _ := pyDict_Keys.Call(obj)
27+
return r
28+
}
29+
func PyDict_GetItemString(obj uintptr, key string) uintptr {
30+
r, _, _ := pyDict_GetItemString.Call(obj, GoStrToCStr(key))
31+
return r
32+
}
33+
34+
func PyDict_DelItem(obj uintptr, key uintptr) int {
35+
r, _, _ := pyDict_DelItem.Call(obj, key)
36+
return int(r)
37+
}
38+
func PyDict_DelItemString(obj uintptr, key string) int {
39+
r, _, _ := pyDict_DelItemString.Call(obj, GoStrToCStr(key))
40+
return int(r)
41+
}

cpy3/importfuncs.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,16 @@ var (
6262
pyModule_AddObject = libpython3.NewProc("PyModule_AddObject")
6363
pyModule_AddObjectRef = libpython3.NewProc("PyModule_AddObjectRef")
6464

65+
pyDict_SetItemString = libpython3.NewProc("pyDict_SetItemString")
66+
pyDict_New = libpython3.NewProc("PyDict_New")
67+
pyDict_Size = libpython3.NewProc("PyDict_Size")
68+
pyDict_Clear = libpython3.NewProc("PyDict_Clear")
69+
pyDict_GetItem = libpython3.NewProc("PyDict_GetItem")
70+
pyDict_Keys = libpython3.NewProc("PyDict_Keys")
71+
pyDict_GetItemString = libpython3.NewProc("PyDict_GetItemString")
72+
pyDict_DelItem = libpython3.NewProc("PyDict_DelItem")
73+
pyDict_DelItemString = libpython3.NewProc("PyDict_DelItemString")
74+
6575
pyEval_GetBuiltins = libpython3.NewProc("PyEval_GetBuiltins")
6676
pyEval_GetLocals = libpython3.NewProc("PyEval_GetLocals")
6777
pyEval_GetGlobals = libpython3.NewProc("PyEval_GetGlobals")

0 commit comments

Comments
 (0)