예제 #1
0
파일: sum.go 프로젝트: ThisGuyCodes/pytest
//export Tick
func Tick(self, args *C.PyObject) *C.PyObject {
	go func() {
		for range time.NewTicker(time.Second).C {
			log.Println("tick")
		}
	}()
	return C.PyLong_FromLong(0)
}
예제 #2
0
파일: class.go 프로젝트: hexid/gopy
//export goClassNatGet
func goClassNatGet(obj unsafe.Pointer, idx int) unsafe.Pointer {
	field := getField(idx)
	item := unsafe.Pointer(uintptr(obj) + field.Offset)

	switch field.Type.Kind() {
	case reflect.Int:
		i := (*int)(item)
		return unsafe.Pointer(C.PyLong_FromLong(C.long(*i)))
	}

	raise(NotImplementedError.ErrV(None))
	return nil
}
예제 #3
0
파일: py.go 프로젝트: nicerobot/goopy
//export gil
func gil(self, args *C.PyObject) *C.PyObject {
	var res *C.PyObject

	tState := C.PyEval_SaveThread()

	var mu sync.Mutex
	mu.Lock()

	go func() {
		C.PyEval_RestoreThread(tState)
		res = C.PyLong_FromLong(1)
		mu.Unlock()
	}()

	mu.Lock()

	return res
}
예제 #4
0
파일: numeric.go 프로젝트: remh/go-python
// PyObject* PyLong_FromLong(long v)
// Return value: New reference.
// Return a new PyLongObject object from v, or NULL on failure.
func PyLong_FromLong(v int) *PyObject {
	return togo(C.PyLong_FromLong(C.long(v)))
}