Exemplo n.º 1
0
func NewProj(def string) (*Proj, error) {
	cdef := C.CString(def)
	defer C.free(unsafe.Pointer(cdef))

	proj := &Proj{p: C.pj_init_plus(cdef)}

	if proj.p == nil {
		return nil, errors.New(projError())
	}

	// Set finalizer so the garbace collector
	// can release the object properly
	runtime.SetFinalizer(proj, (*Proj).Close)

	return proj, nil
}
Exemplo n.º 2
0
func NewProj(definition string) (*Proj, error) {
	cs := C.CString(definition)
	defer C.free(unsafe.Pointer(cs))
	proj := &Proj{opened: false}

	mu.Lock()
	defer mu.Unlock()

	proj.pj = C.pj_init_plus(cs)

	if proj.pj == nil {
		return proj, errors.New(C.GoString(C.get_err()))
	}

	proj.opened = true
	runtime.SetFinalizer(proj, (*Proj).Close)

	return proj, nil
}