Compare commits

..

1 Commits

13 changed files with 98 additions and 143 deletions

View File

@ -8,7 +8,6 @@ Copyright 2018 Datadog, Inc.
package python3 package python3
/* /*
#cgo pkg-config: python-3.9-embed
#include "Python.h" #include "Python.h"
#include "macro.h" #include "macro.h"
*/ */
@ -18,21 +17,21 @@ import (
"unsafe" "unsafe"
) )
// python boolean constants //python boolean constants
var ( var (
Py_False = togo(C.Py_False) Py_False = togo(C.Py_False)
Py_True = togo(C.Py_True) Py_True = togo(C.Py_True)
) )
// Bool : https://docs.python.org/3/c-api/bool.html#c.PyBool_Type //Bool : https://docs.python.org/3/c-api/bool.html#c.PyBool_Type
var Bool = togo((*C.PyObject)(unsafe.Pointer(&C.PyBool_Type))) var Bool = togo((*C.PyObject)(unsafe.Pointer(&C.PyBool_Type)))
// PyBool_Check : https://docs.python.org/3/c-api/bool.html#c.PyBool_Check //PyBool_Check : https://docs.python.org/3/c-api/bool.html#c.PyBool_Check
func PyBool_Check(o *PyObject) bool { func PyBool_Check(o *PyObject) bool {
return C._go_PyBool_Check(toc(o)) != 0 return C._go_PyBool_Check(toc(o)) != 0
} }
// PyBool_FromLong : https://docs.python.org/3/c-api/bool.html#c.PyBool_FromLong //PyBool_FromLong : https://docs.python.org/3/c-api/bool.html#c.PyBool_FromLong
func PyBool_FromLong(v int) *PyObject { func PyBool_FromLong(v int) *PyObject {
return togo(C.PyBool_FromLong(C.long(v))) return togo(C.PyBool_FromLong(C.long(v)))
} }

View File

@ -8,32 +8,31 @@ Copyright 2018 Datadog, Inc.
package python3 package python3
/* /*
#cgo pkg-config: python-3.9-embed
#include "Python.h" #include "Python.h"
#include "macro.h" #include "macro.h"
*/ */
import "C" import "C"
import "unsafe" import "unsafe"
// ByteArray : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Type //ByteArray : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Type
var ByteArray = togo((*C.PyObject)(unsafe.Pointer(&C.PyByteArray_Type))) var ByteArray = togo((*C.PyObject)(unsafe.Pointer(&C.PyByteArray_Type)))
// PyByteArray_Check : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Check //PyByteArray_Check : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Check
func PyByteArray_Check(o *PyObject) bool { func PyByteArray_Check(o *PyObject) bool {
return C._go_PyByteArray_Check(toc(o)) != 0 return C._go_PyByteArray_Check(toc(o)) != 0
} }
// PyByteArray_CheckExact : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_CheckExact //PyByteArray_CheckExact : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_CheckExact
func PyByteArray_CheckExact(o *PyObject) bool { func PyByteArray_CheckExact(o *PyObject) bool {
return C._go_PyByteArray_CheckExact(toc(o)) != 0 return C._go_PyByteArray_CheckExact(toc(o)) != 0
} }
// PyByteArray_FromObject : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_FromObject //PyByteArray_FromObject : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_FromObject
func PyByteArray_FromObject(o *PyObject) *PyObject { func PyByteArray_FromObject(o *PyObject) *PyObject {
return togo(C.PyByteArray_FromObject(toc(o))) return togo(C.PyByteArray_FromObject(toc(o)))
} }
// PyByteArray_FromStringAndSize : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_FromStringAndSize //PyByteArray_FromStringAndSize : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_FromStringAndSize
func PyByteArray_FromStringAndSize(str string) *PyObject { func PyByteArray_FromStringAndSize(str string) *PyObject {
cstr := C.CString(str) cstr := C.CString(str)
defer C.free(unsafe.Pointer(cstr)) defer C.free(unsafe.Pointer(cstr))
@ -41,22 +40,22 @@ func PyByteArray_FromStringAndSize(str string) *PyObject {
return togo(C.PyByteArray_FromStringAndSize(cstr, C.Py_ssize_t(len(str)))) return togo(C.PyByteArray_FromStringAndSize(cstr, C.Py_ssize_t(len(str))))
} }
// PyByteArray_Concat : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Concat //PyByteArray_Concat : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Concat
func PyByteArray_Concat(a, b *PyObject) *PyObject { func PyByteArray_Concat(a, b *PyObject) *PyObject {
return togo(C.PyByteArray_Concat(toc(a), toc(b))) return togo(C.PyByteArray_Concat(toc(a), toc(b)))
} }
// PyByteArray_Size : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Size //PyByteArray_Size : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Size
func PyByteArray_Size(o *PyObject) int { func PyByteArray_Size(o *PyObject) int {
return int(C.PyByteArray_Size(toc(o))) return int(C.PyByteArray_Size(toc(o)))
} }
// PyByteArray_AsString : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_AsString //PyByteArray_AsString : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_AsString
func PyByteArray_AsString(o *PyObject) string { func PyByteArray_AsString(o *PyObject) string {
return C.GoStringN(C.PyByteArray_AsString(toc(o)), C.int(C.PyByteArray_Size(toc(o)))) return C.GoStringN(C.PyByteArray_AsString(toc(o)), C.int(C.PyByteArray_Size(toc(o))))
} }
// PyByteArray_Resize : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Resize //PyByteArray_Resize : https://docs.python.org/3/c-api/bytearray.html#c.PyByteArray_Resize
func PyByteArray_Resize(bytearray *PyObject, len int) { func PyByteArray_Resize(bytearray *PyObject, len int) {
C.PyByteArray_Resize(toc(bytearray), C.Py_ssize_t(len)) C.PyByteArray_Resize(toc(bytearray), C.Py_ssize_t(len))
} }

View File

@ -8,27 +8,26 @@ Copyright 2018 Datadog, Inc.
package python3 package python3
/* /*
#cgo pkg-config: python-3.9-embed
#include "Python.h" #include "Python.h"
#include "macro.h" #include "macro.h"
*/ */
import "C" import "C"
import "unsafe" import "unsafe"
// Bytes : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Type //Bytes : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Type
var Bytes = togo((*C.PyObject)(unsafe.Pointer(&C.PyBytes_Type))) var Bytes = togo((*C.PyObject)(unsafe.Pointer(&C.PyBytes_Type)))
// PyBytes_Check : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Check //PyBytes_Check : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Check
func PyBytes_Check(o *PyObject) bool { func PyBytes_Check(o *PyObject) bool {
return C._go_PyBytes_Check(toc(o)) != 0 return C._go_PyBytes_Check(toc(o)) != 0
} }
// PyBytes_CheckExact : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_CheckExact //PyBytes_CheckExact : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_CheckExact
func PyBytes_CheckExact(o *PyObject) bool { func PyBytes_CheckExact(o *PyObject) bool {
return C._go_PyBytes_CheckExact(toc(o)) != 0 return C._go_PyBytes_CheckExact(toc(o)) != 0
} }
// PyBytes_FromString : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromString //PyBytes_FromString : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromString
func PyBytes_FromString(str string) *PyObject { func PyBytes_FromString(str string) *PyObject {
cstr := C.CString(str) cstr := C.CString(str)
defer C.free(unsafe.Pointer(cstr)) defer C.free(unsafe.Pointer(cstr))
@ -36,29 +35,29 @@ func PyBytes_FromString(str string) *PyObject {
return togo(C.PyBytes_FromString(cstr)) return togo(C.PyBytes_FromString(cstr))
} }
// PyBytes_FromObject : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromObject //PyBytes_FromObject : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_FromObject
func PyBytes_FromObject(o *PyObject) *PyObject { func PyBytes_FromObject(o *PyObject) *PyObject {
return togo(C.PyBytes_FromObject(toc(o))) return togo(C.PyBytes_FromObject(toc(o)))
} }
// PyBytes_Size : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Size //PyBytes_Size : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Size
func PyBytes_Size(o *PyObject) int { func PyBytes_Size(o *PyObject) int {
return int(C.PyBytes_Size(toc(o))) return int(C.PyBytes_Size(toc(o)))
} }
// PyBytes_AsString : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_AsString //PyBytes_AsString : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_AsString
func PyBytes_AsString(o *PyObject) string { func PyBytes_AsString(o *PyObject) string {
return C.GoStringN(C.PyBytes_AsString(toc(o)), C.int(C.PyBytes_Size(toc(o)))) return C.GoStringN(C.PyBytes_AsString(toc(o)), C.int(C.PyBytes_Size(toc(o))))
} }
// PyBytes_Concat : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Concat //PyBytes_Concat : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_Concat
func PyBytes_Concat(bytes, newpart *PyObject) *PyObject { func PyBytes_Concat(bytes, newpart *PyObject) *PyObject {
cbytes := toc(bytes) cbytes := toc(bytes)
C.PyBytes_Concat(&cbytes, toc(newpart)) C.PyBytes_Concat(&cbytes, toc(newpart))
return togo(cbytes) return togo(cbytes)
} }
// PyBytes_ConcatAndDel : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_ConcatAndDel //PyBytes_ConcatAndDel : https://docs.python.org/3/c-api/bytes.html#c.PyBytes_ConcatAndDel
func PyBytes_ConcatAndDel(bytes, newpart *PyObject) *PyObject { func PyBytes_ConcatAndDel(bytes, newpart *PyObject) *PyObject {
cbytes := toc(bytes) cbytes := toc(bytes)
C.PyBytes_ConcatAndDel(&cbytes, toc(newpart)) C.PyBytes_ConcatAndDel(&cbytes, toc(newpart))

View File

@ -14,30 +14,30 @@ package python3
import "C" import "C"
import "unsafe" import "unsafe"
// Complex : https://docs.python.org/3/c-api/complex.html#c.PyComplex_Type //Complex : https://docs.python.org/3/c-api/complex.html#c.PyComplex_Type
var Complex = togo((*C.PyObject)(unsafe.Pointer(&C.PyComplex_Type))) var Complex = togo((*C.PyObject)(unsafe.Pointer(&C.PyComplex_Type)))
// PyComplex_Check : https://docs.python.org/3/c-api/complex.html#c.PyComplex_Check //PyComplex_Check : https://docs.python.org/3/c-api/complex.html#c.PyComplex_Check
func PyComplex_Check(p *PyObject) bool { func PyComplex_Check(p *PyObject) bool {
return C._go_PyComplex_Check(toc(p)) != 0 return C._go_PyComplex_Check(toc(p)) != 0
} }
// PyComplex_CheckExact : https://docs.python.org/3/c-api/complex.html#c.PyComplex_CheckExact //PyComplex_CheckExact : https://docs.python.org/3/c-api/complex.html#c.PyComplex_CheckExact
func PyComplex_CheckExact(p *PyObject) bool { func PyComplex_CheckExact(p *PyObject) bool {
return C._go_PyComplex_CheckExact(toc(p)) != 0 return C._go_PyComplex_CheckExact(toc(p)) != 0
} }
// PyComplex_FromDoubles : https://docs.python.org/3/c-api/complex.html#c.PyComplex_FromDoubles //PyComplex_FromDoubles : https://docs.python.org/3/c-api/complex.html#c.PyComplex_FromDoubles
func PyComplex_FromDoubles(real, imag float64) *PyObject { func PyComplex_FromDoubles(real, imag float64) *PyObject {
return togo(C.PyComplex_FromDoubles(C.double(real), C.double(imag))) return togo(C.PyComplex_FromDoubles(C.double(real), C.double(imag)))
} }
// PyComplex_RealAsDouble : https://docs.python.org/3/c-api/complex.html#c.PyComplex_RealAsDouble //PyComplex_RealAsDouble : https://docs.python.org/3/c-api/complex.html#c.PyComplex_RealAsDouble
func PyComplex_RealAsDouble(op *PyObject) float64 { func PyComplex_RealAsDouble(op *PyObject) float64 {
return float64(C.PyComplex_RealAsDouble(toc(op))) return float64(C.PyComplex_RealAsDouble(toc(op)))
} }
// PyComplex_ImagAsDouble : https://docs.python.org/3/c-api/complex.html#c.PyComplex_ImagAsDouble //PyComplex_ImagAsDouble : https://docs.python.org/3/c-api/complex.html#c.PyComplex_ImagAsDouble
func PyComplex_ImagAsDouble(op *PyObject) float64 { func PyComplex_ImagAsDouble(op *PyObject) float64 {
return float64(C.PyComplex_ImagAsDouble(toc(op))) return float64(C.PyComplex_ImagAsDouble(toc(op)))
} }

48
dict.go
View File

@ -16,79 +16,79 @@ import (
"unsafe" "unsafe"
) )
// Dict : https://docs.python.org/3/c-api/dict.html#c.PyDict_Type //Dict : https://docs.python.org/3/c-api/dict.html#c.PyDict_Type
var Dict = togo((*C.PyObject)(unsafe.Pointer(&C.PyDict_Type))) var Dict = togo((*C.PyObject)(unsafe.Pointer(&C.PyDict_Type)))
// PyDict_Check : https://docs.python.org/3/c-api/dict.html#c.PyDict_Check //PyDict_Check : https://docs.python.org/3/c-api/dict.html#c.PyDict_Check
func PyDict_Check(p *PyObject) bool { func PyDict_Check(p *PyObject) bool {
return C._go_PyDict_Check(toc(p)) != 0 return C._go_PyDict_Check(toc(p)) != 0
} }
// PyDict_CheckExact : https://docs.python.org/3/c-api/dict.html#c.PyDict_CheckExact //PyDict_CheckExact : https://docs.python.org/3/c-api/dict.html#c.PyDict_CheckExact
func PyDict_CheckExact(p *PyObject) bool { func PyDict_CheckExact(p *PyObject) bool {
return C._go_PyDict_CheckExact(toc(p)) != 0 return C._go_PyDict_CheckExact(toc(p)) != 0
} }
// PyDict_New : https://docs.python.org/3/c-api/dict.html#c.PyDict_New //PyDict_New : https://docs.python.org/3/c-api/dict.html#c.PyDict_New
func PyDict_New() *PyObject { func PyDict_New() *PyObject {
return togo(C.PyDict_New()) return togo(C.PyDict_New())
} }
// PyDictProxy_New : https://docs.python.org/3/c-api/dict.html#c.PyDictProxy_New //PyDictProxy_New : https://docs.python.org/3/c-api/dict.html#c.PyDictProxy_New
func PyDictProxy_New(mapping *PyObject) *PyObject { func PyDictProxy_New(mapping *PyObject) *PyObject {
return togo(C.PyDictProxy_New(toc(mapping))) return togo(C.PyDictProxy_New(toc(mapping)))
} }
// PyDict_Clear : https://docs.python.org/3/c-api/dict.html#c.PyDict_Clear //PyDict_Clear : https://docs.python.org/3/c-api/dict.html#c.PyDict_Clear
func PyDict_Clear(p *PyObject) { func PyDict_Clear(p *PyObject) {
C.PyDict_Clear(toc(p)) C.PyDict_Clear(toc(p))
} }
// PyDict_Contains : https://docs.python.org/3/c-api/dict.html#c.PyDict_Contains //PyDict_Contains : https://docs.python.org/3/c-api/dict.html#c.PyDict_Contains
func PyDict_Contains(p, key *PyObject) int { func PyDict_Contains(p, key *PyObject) int {
return int(C.PyDict_Contains(toc(p), toc(key))) return int(C.PyDict_Contains(toc(p), toc(key)))
} }
// PyDict_Copy : https://docs.python.org/3/c-api/dict.html#c.PyDict_Copy //PyDict_Copy : https://docs.python.org/3/c-api/dict.html#c.PyDict_Copy
func PyDict_Copy(p *PyObject) *PyObject { func PyDict_Copy(p *PyObject) *PyObject {
return togo(C.PyDict_Copy(toc(p))) return togo(C.PyDict_Copy(toc(p)))
} }
// PyDict_SetItem : https://docs.python.org/3/c-api/dict.html#c.PyDict_SetItem //PyDict_SetItem : https://docs.python.org/3/c-api/dict.html#c.PyDict_SetItem
func PyDict_SetItem(p, key, val *PyObject) int { func PyDict_SetItem(p, key, val *PyObject) int {
return int(C.PyDict_SetItem(toc(p), toc(key), toc(val))) return int(C.PyDict_SetItem(toc(p), toc(key), toc(val)))
} }
// PyDict_SetItemString : https://docs.python.org/3/c-api/dict.html#c.PyDict_SetItemString //PyDict_SetItemString : https://docs.python.org/3/c-api/dict.html#c.PyDict_SetItemString
func PyDict_SetItemString(p *PyObject, key string, val *PyObject) int { func PyDict_SetItemString(p *PyObject, key string, val *PyObject) int {
ckey := C.CString(key) ckey := C.CString(key)
defer C.free(unsafe.Pointer(ckey)) defer C.free(unsafe.Pointer(ckey))
return int(C.PyDict_SetItemString(toc(p), ckey, toc(val))) return int(C.PyDict_SetItemString(toc(p), ckey, toc(val)))
} }
// PyDict_DelItem : https://docs.python.org/3/c-api/dict.html#c.PyDict_DelItem //PyDict_DelItem : https://docs.python.org/3/c-api/dict.html#c.PyDict_DelItem
func PyDict_DelItem(p, key *PyObject) int { func PyDict_DelItem(p, key *PyObject) int {
return int(C.PyDict_DelItem(toc(p), toc(key))) return int(C.PyDict_DelItem(toc(p), toc(key)))
} }
// PyDict_DelItemString : https://docs.python.org/3/c-api/dict.html#c.PyDict_DelItemString //PyDict_DelItemString : https://docs.python.org/3/c-api/dict.html#c.PyDict_DelItemString
func PyDict_DelItemString(p *PyObject, key string) int { func PyDict_DelItemString(p *PyObject, key string) int {
ckey := C.CString(key) ckey := C.CString(key)
defer C.free(unsafe.Pointer(ckey)) defer C.free(unsafe.Pointer(ckey))
return int(C.PyDict_DelItemString(toc(p), ckey)) return int(C.PyDict_DelItemString(toc(p), ckey))
} }
// PyDict_GetItem : https://docs.python.org/3/c-api/dict.html#c.PyDict_GetItem //PyDict_GetItem : https://docs.python.org/3/c-api/dict.html#c.PyDict_GetItem
func PyDict_GetItem(p, key *PyObject) *PyObject { func PyDict_GetItem(p, key *PyObject) *PyObject {
return togo(C.PyDict_GetItem(toc(p), toc(key))) return togo(C.PyDict_GetItem(toc(p), toc(key)))
} }
// PyDict_GetItemWithError : https://docs.python.org/3/c-api/dict.html#c.PyDict_GetItemWithError //PyDict_GetItemWithError : https://docs.python.org/3/c-api/dict.html#c.PyDict_GetItemWithError
func PyDict_GetItemWithError(p, key *PyObject) *PyObject { func PyDict_GetItemWithError(p, key *PyObject) *PyObject {
return togo(C.PyDict_GetItemWithError(toc(p), toc(key))) return togo(C.PyDict_GetItemWithError(toc(p), toc(key)))
} }
// PyDict_GetItemString : https://docs.python.org/3/c-api/dict.html#c.PyDict_GetItemString //PyDict_GetItemString : https://docs.python.org/3/c-api/dict.html#c.PyDict_GetItemString
func PyDict_GetItemString(p *PyObject, key string) *PyObject { func PyDict_GetItemString(p *PyObject, key string) *PyObject {
ckey := C.CString(key) ckey := C.CString(key)
defer C.free(unsafe.Pointer(ckey)) defer C.free(unsafe.Pointer(ckey))
@ -96,32 +96,32 @@ func PyDict_GetItemString(p *PyObject, key string) *PyObject {
return togo(C.PyDict_GetItemString(toc(p), ckey)) return togo(C.PyDict_GetItemString(toc(p), ckey))
} }
// PyDict_SetDefault : https://docs.python.org/3/c-api/dict.html#c.PyDict_SetDefault //PyDict_SetDefault : https://docs.python.org/3/c-api/dict.html#c.PyDict_SetDefault
func PyDict_SetDefault(p, key, pyDefault *PyObject) *PyObject { func PyDict_SetDefault(p, key, pyDefault *PyObject) *PyObject {
return togo(C.PyDict_SetDefault(toc(p), toc(key), toc(pyDefault))) return togo(C.PyDict_SetDefault(toc(p), toc(key), toc(pyDefault)))
} }
// PyDict_Items : https://docs.python.org/3/c-api/dict.html#c.PyDict_Items //PyDict_Items : https://docs.python.org/3/c-api/dict.html#c.PyDict_Items
func PyDict_Items(p *PyObject) *PyObject { func PyDict_Items(p *PyObject) *PyObject {
return togo(C.PyDict_Items(toc(p))) return togo(C.PyDict_Items(toc(p)))
} }
// PyDict_Keys : https://docs.python.org/3/c-api/dict.html#c.PyDict_Keys //PyDict_Keys : https://docs.python.org/3/c-api/dict.html#c.PyDict_Keys
func PyDict_Keys(p *PyObject) *PyObject { func PyDict_Keys(p *PyObject) *PyObject {
return togo(C.PyDict_Keys(toc(p))) return togo(C.PyDict_Keys(toc(p)))
} }
// PyDict_Values : https://docs.python.org/3/c-api/dict.html#c.PyDict_Values //PyDict_Values : https://docs.python.org/3/c-api/dict.html#c.PyDict_Values
func PyDict_Values(p *PyObject) *PyObject { func PyDict_Values(p *PyObject) *PyObject {
return togo(C.PyDict_Values(toc(p))) return togo(C.PyDict_Values(toc(p)))
} }
// PyDict_Size : https://docs.python.org/3/c-api/dict.html#c.PyDict_Size //PyDict_Size : https://docs.python.org/3/c-api/dict.html#c.PyDict_Size
func PyDict_Size(p *PyObject) int { func PyDict_Size(p *PyObject) int {
return int(C.PyDict_Size(toc(p))) return int(C.PyDict_Size(toc(p)))
} }
// PyDict_Next : https://docs.python.org/3/c-api/dict.html#c.PyDict_Next //PyDict_Next : https://docs.python.org/3/c-api/dict.html#c.PyDict_Next
func PyDict_Next(p *PyObject, ppos *int, pkey, pvalue **PyObject) bool { func PyDict_Next(p *PyObject, ppos *int, pkey, pvalue **PyObject) bool {
cpos := C.Py_ssize_t(*ppos) cpos := C.Py_ssize_t(*ppos)
ckey := toc(*pkey) ckey := toc(*pkey)
@ -137,6 +137,6 @@ func PyDict_Next(p *PyObject, ppos *int, pkey, pvalue **PyObject) bool {
} }
//PyDict_ClearFreeList : https://docs.python.org/3/c-api/dict.html#c.PyDict_ClearFreeList //PyDict_ClearFreeList : https://docs.python.org/3/c-api/dict.html#c.PyDict_ClearFreeList
//func PyDict_ClearFreeList() int { func PyDict_ClearFreeList() int {
// return int(C.PyDict_ClearFreeList()) return int(C.PyDict_ClearFreeList())
//} }

View File

@ -14,50 +14,50 @@ package python3
import "C" import "C"
import "unsafe" import "unsafe"
// Float : https://docs.python.org/3/c-api/float.html#c.PyFloat_Type //Float : https://docs.python.org/3/c-api/float.html#c.PyFloat_Type
var Float = togo((*C.PyObject)(unsafe.Pointer(&C.PyFloat_Type))) var Float = togo((*C.PyObject)(unsafe.Pointer(&C.PyFloat_Type)))
// PyFloat_Check : https://docs.python.org/3/c-api/float.html#c.PyFloat_Check //PyFloat_Check : https://docs.python.org/3/c-api/float.html#c.PyFloat_Check
func PyFloat_Check(p *PyObject) bool { func PyFloat_Check(p *PyObject) bool {
return C._go_PyFloat_Check(toc(p)) != 0 return C._go_PyFloat_Check(toc(p)) != 0
} }
// PyFloat_CheckExact : https://docs.python.org/3/c-api/float.html#c.PyFloat_CheckExact //PyFloat_CheckExact : https://docs.python.org/3/c-api/float.html#c.PyFloat_CheckExact
func PyFloat_CheckExact(p *PyObject) bool { func PyFloat_CheckExact(p *PyObject) bool {
return C._go_PyFloat_CheckExact(toc(p)) != 0 return C._go_PyFloat_CheckExact(toc(p)) != 0
} }
// PyFloat_FromDouble : https://docs.python.org/3/c-api/float.html#c.PyFloat_FromDouble //PyFloat_FromDouble : https://docs.python.org/3/c-api/float.html#c.PyFloat_FromDouble
func PyFloat_FromDouble(v float64) *PyObject { func PyFloat_FromDouble(v float64) *PyObject {
return togo(C.PyFloat_FromDouble(C.double(v))) return togo(C.PyFloat_FromDouble(C.double(v)))
} }
// PyFloat_FromString : https://docs.python.org/3/c-api/float.html#c.PyFloat_FromString //PyFloat_FromString : https://docs.python.org/3/c-api/float.html#c.PyFloat_FromString
func PyFloat_FromString(str *PyObject) *PyObject { func PyFloat_FromString(str *PyObject) *PyObject {
return togo(C.PyFloat_FromString(toc(str))) return togo(C.PyFloat_FromString(toc(str)))
} }
// PyFloat_AsDouble : https://docs.python.org/3/c-api/float.html#c.PyFloat_AsDouble //PyFloat_AsDouble : https://docs.python.org/3/c-api/float.html#c.PyFloat_AsDouble
func PyFloat_AsDouble(obj *PyObject) float64 { func PyFloat_AsDouble(obj *PyObject) float64 {
return float64(C.PyFloat_AsDouble(toc(obj))) return float64(C.PyFloat_AsDouble(toc(obj)))
} }
// PyFloat_GetInfo : https://docs.python.org/3/c-api/float.html#c.PyFloat_GetInfo //PyFloat_GetInfo : https://docs.python.org/3/c-api/float.html#c.PyFloat_GetInfo
func PyFloat_GetInfo() *PyObject { func PyFloat_GetInfo() *PyObject {
return togo(C.PyFloat_GetInfo()) return togo(C.PyFloat_GetInfo())
} }
// PyFloat_GetMax : https://docs.python.org/3/c-api/float.html#c.PyFloat_GetMax //PyFloat_GetMax : https://docs.python.org/3/c-api/float.html#c.PyFloat_GetMax
func PyFloat_GetMax() float64 { func PyFloat_GetMax() float64 {
return float64(C.PyFloat_GetMax()) return float64(C.PyFloat_GetMax())
} }
// PyFloat_GetMin : https://docs.python.org/3/c-api/float.html#c.PyFloat_GetMin //PyFloat_GetMin : https://docs.python.org/3/c-api/float.html#c.PyFloat_GetMin
func PyFloat_GetMin() float64 { func PyFloat_GetMin() float64 {
return float64(C.PyFloat_GetMin()) return float64(C.PyFloat_GetMin())
} }
//PyFloat_ClearFreeList : https://docs.python.org/3/c-api/float.html#c.PyFloat_ClearFreeList //PyFloat_ClearFreeList : https://docs.python.org/3/c-api/float.html#c.PyFloat_ClearFreeList
//func PyFloat_ClearFreeList() int { func PyFloat_ClearFreeList() int {
// return int(C.PyFloat_ClearFreeList()) return int(C.PyFloat_ClearFreeList())
//} }

13
go.mod
View File

@ -1,13 +0,0 @@
module git.stein-ivar.net/steino/cpy3
go 1.20
require (
github.com/go-python/cpy3 v0.2.0
github.com/stretchr/testify v1.2.2
)
require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
)

8
go.sum
View File

@ -1,8 +0,0 @@
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-python/cpy3 v0.2.0 h1:IQ8v6KOTGSvejROZ8BPCfVW4rSMOKfpVwDi6sKYuu1w=
github.com/go-python/cpy3 v0.2.0/go.mod h1:W7F8SGWQv11501PYSj9d+NSv8U0/vWYa+FcMxBu4eqo=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=

View File

@ -8,7 +8,7 @@ Copyright 2018 Datadog, Inc.
package python3 package python3
/* /*
#cgo pkg-config: python3 #cgo pkg-config: python-3.8-embed
#include "Python.h" #include "Python.h"
*/ */
import "C" import "C"

30
list.go
View File

@ -14,77 +14,75 @@ package python3
import "C" import "C"
import "unsafe" import "unsafe"
// List : https://docs.python.org/3/c-api/list.html#c.PyList_Type //List : https://docs.python.org/3/c-api/list.html#c.PyList_Type
var List = togo((*C.PyObject)(unsafe.Pointer(&C.PyList_Type))) var List = togo((*C.PyObject)(unsafe.Pointer(&C.PyList_Type)))
// PyList_Check : https://docs.python.org/3/c-api/list.html#c.PyList_Check //PyList_Check : https://docs.python.org/3/c-api/list.html#c.PyList_Check
func PyList_Check(p *PyObject) bool { func PyList_Check(p *PyObject) bool {
return C._go_PyList_Check(toc(p)) != 0 return C._go_PyList_Check(toc(p)) != 0
} }
// PyList_CheckExact : https://docs.python.org/3/c-api/list.html#c.PyList_CheckExact //PyList_CheckExact : https://docs.python.org/3/c-api/list.html#c.PyList_CheckExact
func PyList_CheckExact(p *PyObject) bool { func PyList_CheckExact(p *PyObject) bool {
return C._go_PyList_CheckExact(toc(p)) != 0 return C._go_PyList_CheckExact(toc(p)) != 0
} }
// PyList_New : https://docs.python.org/3/c-api/list.html#c.PyList_New //PyList_New : https://docs.python.org/3/c-api/list.html#c.PyList_New
func PyList_New(len int) *PyObject { func PyList_New(len int) *PyObject {
return togo(C.PyList_New(C.Py_ssize_t(len))) return togo(C.PyList_New(C.Py_ssize_t(len)))
} }
// PyList_Size : https://docs.python.org/3/c-api/list.html#c.PyList_Size //PyList_Size : https://docs.python.org/3/c-api/list.html#c.PyList_Size
func PyList_Size(p *PyObject) int { func PyList_Size(p *PyObject) int {
return int(C.PyList_Size(toc(p))) return int(C.PyList_Size(toc(p)))
} }
// PyList_GetItem : https://docs.python.org/3/c-api/list.html#c.PyList_GetItem //PyList_GetItem : https://docs.python.org/3/c-api/list.html#c.PyList_GetItem
func PyList_GetItem(p *PyObject, pos int) *PyObject { func PyList_GetItem(p *PyObject, pos int) *PyObject {
return togo(C.PyList_GetItem(toc(p), C.Py_ssize_t(pos))) return togo(C.PyList_GetItem(toc(p), C.Py_ssize_t(pos)))
} }
// PyList_SetItem : https://docs.python.org/3/c-api/list.html#c.PyList_SetItem //PyList_SetItem : https://docs.python.org/3/c-api/list.html#c.PyList_SetItem
func PyList_SetItem(p *PyObject, pos int, o *PyObject) int { func PyList_SetItem(p *PyObject, pos int, o *PyObject) int {
return int(C.PyList_SetItem(toc(p), C.Py_ssize_t(pos), toc(o))) return int(C.PyList_SetItem(toc(p), C.Py_ssize_t(pos), toc(o)))
} }
// PyList_Insert : https://docs.python.org/3/c-api/list.html#c.PyList_Insert //PyList_Insert : https://docs.python.org/3/c-api/list.html#c.PyList_Insert
func PyList_Insert(p *PyObject, index int, item *PyObject) int { func PyList_Insert(p *PyObject, index int, item *PyObject) int {
return int(C.PyList_Insert(toc(p), C.Py_ssize_t(index), toc(item))) return int(C.PyList_Insert(toc(p), C.Py_ssize_t(index), toc(item)))
} }
// PyList_Append : https://docs.python.org/3/c-api/list.html#c.PyList_Append //PyList_Append : https://docs.python.org/3/c-api/list.html#c.PyList_Append
func PyList_Append(p, item *PyObject) int { func PyList_Append(p, item *PyObject) int {
return int(C.PyList_Append(toc(p), toc(item))) return int(C.PyList_Append(toc(p), toc(item)))
} }
// PyList_GetSlice : https://docs.python.org/3/c-api/list.html#c.PyList_GetSlice //PyList_GetSlice : https://docs.python.org/3/c-api/list.html#c.PyList_GetSlice
func PyList_GetSlice(p *PyObject, low, high int) *PyObject { func PyList_GetSlice(p *PyObject, low, high int) *PyObject {
return togo(C.PyList_GetSlice(toc(p), C.Py_ssize_t(low), C.Py_ssize_t(high))) return togo(C.PyList_GetSlice(toc(p), C.Py_ssize_t(low), C.Py_ssize_t(high)))
} }
// PyList_SetSlice : https://docs.python.org/3/c-api/list.html#c.PyList_SetSlice //PyList_SetSlice : https://docs.python.org/3/c-api/list.html#c.PyList_SetSlice
func PyList_SetSlice(p *PyObject, low, high int, itemlist *PyObject) int { func PyList_SetSlice(p *PyObject, low, high int, itemlist *PyObject) int {
return int(C.PyList_SetSlice(toc(p), C.Py_ssize_t(low), C.Py_ssize_t(high), toc(itemlist))) return int(C.PyList_SetSlice(toc(p), C.Py_ssize_t(low), C.Py_ssize_t(high), toc(itemlist)))
} }
// PyList_Sort : https://docs.python.org/3/c-api/list.html#c.PyList_Sort //PyList_Sort : https://docs.python.org/3/c-api/list.html#c.PyList_Sort
func PyList_Sort(list *PyObject) int { func PyList_Sort(list *PyObject) int {
return int(C.PyList_Sort(toc(list))) return int(C.PyList_Sort(toc(list)))
} }
// PyList_Reverse : https://docs.python.org/3/c-api/list.html#c.PyList_Reverse //PyList_Reverse : https://docs.python.org/3/c-api/list.html#c.PyList_Reverse
func PyList_Reverse(list *PyObject) int { func PyList_Reverse(list *PyObject) int {
return int(C.PyList_Reverse(toc(list))) return int(C.PyList_Reverse(toc(list)))
} }
// PyList_AsTuple : https://docs.python.org/3/c-api/list.html#c.PyList_AsTuple //PyList_AsTuple : https://docs.python.org/3/c-api/list.html#c.PyList_AsTuple
func PyList_AsTuple(list *PyObject) *PyObject { func PyList_AsTuple(list *PyObject) *PyObject {
return togo(C.PyList_AsTuple(toc(list))) return togo(C.PyList_AsTuple(toc(list)))
} }
//PyList_ClearFreeList : https://docs.python.org/3/c-api/list.html#c.PyList_ClearFreeList //PyList_ClearFreeList : https://docs.python.org/3/c-api/list.html#c.PyList_ClearFreeList
/*
func PyList_ClearFreeList() int { func PyList_ClearFreeList() int {
return int(C.PyList_ClearFreeList()) return int(C.PyList_ClearFreeList())
} }
*/

15
sys.go
View File

@ -8,7 +8,6 @@ Copyright 2018 Datadog, Inc.
package python3 package python3
/* /*
#cgo pkg-config: python-3.9-embed
#include "Python.h" #include "Python.h"
*/ */
import "C" import "C"
@ -17,7 +16,7 @@ import (
"unsafe" "unsafe"
) )
// PySys_GetObject : https://docs.python.org/3/c-api/sys.html#c.PySys_GetObject //PySys_GetObject : https://docs.python.org/3/c-api/sys.html#c.PySys_GetObject
func PySys_GetObject(name string) *PyObject { func PySys_GetObject(name string) *PyObject {
cname := C.CString(name) cname := C.CString(name)
defer C.free(unsafe.Pointer(cname)) defer C.free(unsafe.Pointer(cname))
@ -25,7 +24,7 @@ func PySys_GetObject(name string) *PyObject {
return togo(C.PySys_GetObject(cname)) return togo(C.PySys_GetObject(cname))
} }
// PySys_SetObject : https://docs.python.org/3/c-api/sys.html#c.PySys_SetObject //PySys_SetObject : https://docs.python.org/3/c-api/sys.html#c.PySys_SetObject
func PySys_SetObject(name string, v *PyObject) int { func PySys_SetObject(name string, v *PyObject) int {
cname := C.CString(name) cname := C.CString(name)
defer C.free(unsafe.Pointer(cname)) defer C.free(unsafe.Pointer(cname))
@ -33,12 +32,12 @@ func PySys_SetObject(name string, v *PyObject) int {
return int(C.PySys_SetObject(cname, toc(v))) return int(C.PySys_SetObject(cname, toc(v)))
} }
// PySys_ResetWarnOptions : https://docs.python.org/3/c-api/sys.html#c.PySys_ResetWarnOptions //PySys_ResetWarnOptions : https://docs.python.org/3/c-api/sys.html#c.PySys_ResetWarnOptions
func PySys_ResetWarnOptions() { func PySys_ResetWarnOptions() {
C.PySys_ResetWarnOptions() C.PySys_ResetWarnOptions()
} }
// PySys_AddWarnOption : https://docs.python.org/3/c-api/sys.html#c.PySys_AddWarnOption //PySys_AddWarnOption : https://docs.python.org/3/c-api/sys.html#c.PySys_AddWarnOption
func PySys_AddWarnOption(s string) error { func PySys_AddWarnOption(s string) error {
cs := C.CString(s) cs := C.CString(s)
defer C.free(unsafe.Pointer(cs)) defer C.free(unsafe.Pointer(cs))
@ -54,7 +53,7 @@ func PySys_AddWarnOption(s string) error {
return nil return nil
} }
// PySys_SetPath : https://docs.python.org/3/c-api/sys.html#c.PySys_SetPath //PySys_SetPath : https://docs.python.org/3/c-api/sys.html#c.PySys_SetPath
func PySys_SetPath(path string) error { func PySys_SetPath(path string) error {
cpath := C.CString(path) cpath := C.CString(path)
defer C.free(unsafe.Pointer(cpath)) defer C.free(unsafe.Pointer(cpath))
@ -70,7 +69,7 @@ func PySys_SetPath(path string) error {
return nil return nil
} }
// PySys_AddXOption : https://docs.python.org/3/c-api/sys.html#c.PySys_AddXOption //PySys_AddXOption : https://docs.python.org/3/c-api/sys.html#c.PySys_AddXOption
func PySys_AddXOption(s string) error { func PySys_AddXOption(s string) error {
cs := C.CString(s) cs := C.CString(s)
defer C.free(unsafe.Pointer(cs)) defer C.free(unsafe.Pointer(cs))
@ -86,7 +85,7 @@ func PySys_AddXOption(s string) error {
return nil return nil
} }
// PySys_GetXOptions : https://docs.python.org/3/c-api/sys.html#c.PySys_GetXOptions //PySys_GetXOptions : https://docs.python.org/3/c-api/sys.html#c.PySys_GetXOptions
func PySys_GetXOptions() *PyObject { func PySys_GetXOptions() *PyObject {
return togo(C.PySys_GetXOptions()) return togo(C.PySys_GetXOptions())
} }

View File

@ -12,67 +12,58 @@ package python3
*/ */
import "C" import "C"
// PyThreadState : https://docs.python.org/3/c-api/init.html#c.PyThreadState //PyThreadState : https://docs.python.org/3/c-api/init.html#c.PyThreadState
type PyThreadState C.PyThreadState type PyThreadState C.PyThreadState
// PyGILState is an opaque “handle” to the thread state when PyGILState_Ensure() was called, and must be passed to PyGILState_Release() to ensure Python is left in the same state //PyGILState is an opaque “handle” to the thread state when PyGILState_Ensure() was called, and must be passed to PyGILState_Release() to ensure Python is left in the same state
type PyGILState C.PyGILState_STATE type PyGILState C.PyGILState_STATE
//PyEval_InitThreads : https://docs.python.org/3/c-api/init.html#c.PyEval_InitThreads //PyEval_InitThreads : https://docs.python.org/3/c-api/init.html#c.PyEval_InitThreads
/*
func PyEval_InitThreads() { func PyEval_InitThreads() {
C.PyEval_InitThreads() C.PyEval_InitThreads()
} }
*/
// PyEval_ThreadsInitialized : https://docs.python.org/3/c-api/init.html#c.PyEval_ThreadsInitialized //PyEval_ThreadsInitialized : https://docs.python.org/3/c-api/init.html#c.PyEval_ThreadsInitialized
func PyEval_ThreadsInitialized() bool { func PyEval_ThreadsInitialized() bool {
return C.PyEval_ThreadsInitialized() != 0 return C.PyEval_ThreadsInitialized() != 0
} }
// PyEval_SaveThread : https://docs.python.org/3/c-api/init.html#c.PyEval_SaveThread //PyEval_SaveThread : https://docs.python.org/3/c-api/init.html#c.PyEval_SaveThread
func PyEval_SaveThread() *PyThreadState { func PyEval_SaveThread() *PyThreadState {
return (*PyThreadState)(C.PyEval_SaveThread()) return (*PyThreadState)(C.PyEval_SaveThread())
} }
// PyEval_RestoreThread : https://docs.python.org/3/c-api/init.html#c.PyEval_RestoreThread //PyEval_RestoreThread : https://docs.python.org/3/c-api/init.html#c.PyEval_RestoreThread
func PyEval_RestoreThread(tstate *PyThreadState) { func PyEval_RestoreThread(tstate *PyThreadState) {
C.PyEval_RestoreThread((*C.PyThreadState)(tstate)) C.PyEval_RestoreThread((*C.PyThreadState)(tstate))
} }
// PyThreadState_Get : https://docs.python.org/3/c-api/init.html#c.PyThreadState_Get //PyThreadState_Get : https://docs.python.org/3/c-api/init.html#c.PyThreadState_Get
func PyThreadState_Get() *PyThreadState { func PyThreadState_Get() *PyThreadState {
return (*PyThreadState)(C.PyThreadState_Get()) return (*PyThreadState)(C.PyThreadState_Get())
} }
// PyThreadState_Swap : https://docs.python.org/3/c-api/init.html#c.PyThreadState_Swap //PyThreadState_Swap : https://docs.python.org/3/c-api/init.html#c.PyThreadState_Swap
func PyThreadState_Swap(tstate *PyThreadState) *PyThreadState { func PyThreadState_Swap(tstate *PyThreadState) *PyThreadState {
return (*PyThreadState)(C.PyThreadState_Swap((*C.PyThreadState)(tstate))) return (*PyThreadState)(C.PyThreadState_Swap((*C.PyThreadState)(tstate)))
} }
// PyEval_ReInitThreads : https://docs.python.org/3/c-api/init.html#c.PyEval_ReInitThreads //PyGILState_Ensure : https://docs.python.org/3/c-api/init.html#c.PyGILState_Ensure
/*
func PyEval_ReInitThreads() {
C.PyEval_ReInitThreads()
}
*/
// PyGILState_Ensure : https://docs.python.org/3/c-api/init.html#c.PyGILState_Ensure
func PyGILState_Ensure() PyGILState { func PyGILState_Ensure() PyGILState {
return PyGILState(C.PyGILState_Ensure()) return PyGILState(C.PyGILState_Ensure())
} }
// PyGILState_Release : https://docs.python.org/3/c-api/init.html#c.PyGILState_Release //PyGILState_Release : https://docs.python.org/3/c-api/init.html#c.PyGILState_Release
func PyGILState_Release(state PyGILState) { func PyGILState_Release(state PyGILState) {
C.PyGILState_Release(C.PyGILState_STATE(state)) C.PyGILState_Release(C.PyGILState_STATE(state))
} }
// PyGILState_GetThisThreadState : https://docs.python.org/3/c-api/init.html#c.PyGILState_GetThisThreadState //PyGILState_GetThisThreadState : https://docs.python.org/3/c-api/init.html#c.PyGILState_GetThisThreadState
func PyGILState_GetThisThreadState() *PyThreadState { func PyGILState_GetThisThreadState() *PyThreadState {
return (*PyThreadState)(C.PyGILState_GetThisThreadState()) return (*PyThreadState)(C.PyGILState_GetThisThreadState())
} }
// PyGILState_Check : https://docs.python.org/3/c-api/init.html#c.PyGILState_Check //PyGILState_Check : https://docs.python.org/3/c-api/init.html#c.PyGILState_Check
func PyGILState_Check() bool { func PyGILState_Check() bool {
return C.PyGILState_Check() == 1 return C.PyGILState_Check() == 1
} }

View File

@ -6,15 +6,6 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
func TestThreadInitialization(t *testing.T) {
Py_Initialize()
PyEval_InitThreads()
assert.True(t, PyEval_ThreadsInitialized())
PyEval_ReInitThreads()
}
func TestGIL(t *testing.T) { func TestGIL(t *testing.T) {
Py_Initialize() Py_Initialize()
PyEval_InitThreads() PyEval_InitThreads()