1
0
mirror of https://github.com/deuill/go-php.git synced 2024-09-21 17:00:45 +00:00
go-php/engine/engine.go

47 lines
892 B
Go
Raw Normal View History

2015-10-01 23:48:33 +00:00
package engine
// #cgo CFLAGS: -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM
2015-10-01 23:48:33 +00:00
// #cgo CFLAGS: -I/usr/include/php/Zend -I../context
// #cgo LDFLAGS: -L${SRCDIR}/context -lphp5
//
// #include "context.h"
2015-10-01 23:48:33 +00:00
// #include "engine.h"
import "C"
import (
"fmt"
"unsafe"
2015-10-01 23:48:33 +00:00
"github.com/deuill/go-php/context"
)
type Engine struct {
engine *C.struct__php_engine
}
func (e *Engine) Destroy() {
C.engine_shutdown(e.engine)
e = nil
}
func New() (*Engine, error) {
ptr, err := C.engine_init()
if err != nil {
return nil, fmt.Errorf("PHP engine failed to initialize")
}
return &Engine{engine: ptr}, nil
}
2015-10-01 23:48:33 +00:00
//export uwrite
func uwrite(ctxptr unsafe.Pointer, buffer unsafe.Pointer, length C.uint) C.int {
context := (*context.Context)(ctxptr)
written, err := context.Write(C.GoBytes(buffer, C.int(length)))
if err != nil {
return C.int(-1)
}
return C.int(written)
}