-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathPyDict.go
63 lines (53 loc) · 1.47 KB
/
PyDict.go
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package py3
import (
"github.com/aadog/py3-go/cpy3"
"unsafe"
)
type PyDict struct {
PyObject
}
func (p *PyDict) DelItemString(key string) int {
return cpy3.PyDict_DelItemString(p.instance, key)
}
func (p *PyDict) DelItem(key *PyObject) int {
return cpy3.PyDict_DelItem(p.instance, key.instance)
}
func (p *PyDict) GetItemString(key string) *PyObject {
return PyObjectFromInst(cpy3.PyDict_GetItemString(p.instance, key))
}
func (p *PyDict) Keys() *PyObject {
return PyObjectFromInst(cpy3.PyDict_Keys(p.instance))
}
func (p *PyDict) GetItem(key *PyObject) *PyObject {
return PyObjectFromInst(cpy3.PyDict_GetItem(p.instance, key.instance))
}
func (p *PyDict) SetItemString(key string, val *PyObject) int {
return cpy3.PyDict_SetItemString(p.instance, key, val.instance)
}
func (p *PyDict) SetItem(key *PyObject, val *PyObject) int {
return cpy3.PyDict_SetItem(p.instance, key.instance, val.instance)
}
func (p *PyDict) Size() int64 {
return cpy3.PyDict_Size(p.instance)
}
func (p *PyDict) Clear() {
cpy3.PyDict_Clear(p.instance)
}
// PyDictFromInst
// 新建一个对象来自已经存在的对象实例指针。
//
// Create a new object from an existing object instance pointer.
func PyDictFromInst(inst uintptr) *PyDict {
dl := new(PyDict)
dl.instance = inst
dl.ptr = unsafe.Pointer(dl.instance)
return dl
}
func PyDictFromObj(obj *PyObject) *PyDict {
dl := new(PyDict)
dl.PyObject = *obj
return dl
}
func NewPyDict() *PyDict {
return PyDictFromInst(cpy3.PyDict_New())
}