Make a complete todo list
This commit is contained in:
parent
ca847dc7c5
commit
e2c1b19b3e
127
ph7.go
127
ph7.go
@ -94,6 +94,8 @@ func (e *Engine) ErrLog() (string, error) {
|
|||||||
return C.GoStringN(s, n), nil
|
return C.GoStringN(s, n), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO All the ph7_config verbs
|
||||||
|
|
||||||
func (e *Engine) Compile(source []byte, phpOnly bool) (*VM, error) {
|
func (e *Engine) Compile(source []byte, phpOnly bool) (*VM, error) {
|
||||||
csource := C.CBytes(source)
|
csource := C.CBytes(source)
|
||||||
defer C.free(csource)
|
defer C.free(csource)
|
||||||
@ -110,13 +112,129 @@ func (e *Engine) Compile(source []byte, phpOnly bool) (*VM, error) {
|
|||||||
return newVM(cvm), nil
|
return newVM(cvm), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO (*Engine).CompileFile
|
||||||
|
|
||||||
func (e *Engine) Close() error {
|
func (e *Engine) Close() error {
|
||||||
return newError(C.ph7_release((*C.ph7)(e)))
|
return newError(C.ph7_release((*C.ph7)(e)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Context C.ph7_context
|
||||||
|
|
||||||
|
func (c *Context) ResultInt(i int) error {
|
||||||
|
return newError(C.ph7_result_int((*C.ph7_context)(c), C.int(i)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Context) ResultInt64(i int64) error {
|
||||||
|
return newError(C.ph7_result_int64((*C.ph7_context)(c), C.ph7_int64(i)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Context) ResultBool(b bool) error {
|
||||||
|
var cb C.int
|
||||||
|
if b {
|
||||||
|
cb = 1
|
||||||
|
}
|
||||||
|
return newError(C.ph7_result_bool((*C.ph7_context)(c), cb))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Context) ResultDouble(d float64) error {
|
||||||
|
return newError(C.ph7_result_double((*C.ph7_context)(c), C.double(d)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Context) ResultNull() error {
|
||||||
|
return newError(C.ph7_result_null((*C.ph7_context)(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Context) ResultString(s string) error {
|
||||||
|
cs := C.CString(s)
|
||||||
|
defer C.free(unsafe.Pointer(cs))
|
||||||
|
|
||||||
|
return newError(C.ph7_result_string((*C.ph7_context)(c), cs, C.int(len(s))))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO (*Context).ResultStringFormat maybe? Or just use fmt.Sprint*.
|
||||||
|
|
||||||
|
func (c *Context) ResultValue(value *Value) error {
|
||||||
|
return newError(C.ph7_result_value((*C.ph7_context)(c), (*C.ph7_value)(value)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO (*Context).ResultResource
|
||||||
|
|
||||||
|
func (c *Context) Output(s string) error {
|
||||||
|
cs := C.CString(s)
|
||||||
|
defer C.free(unsafe.Pointer(cs))
|
||||||
|
|
||||||
|
return newError(C.ph7_context_output((*C.ph7_context)(c), cs, C.int(len(s))))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO (*Context).OutputFormat maybe?
|
||||||
|
// TODO (*Context).ThrowError
|
||||||
|
|
||||||
|
func (c *Context) RandomNum() uint {
|
||||||
|
return uint(C.ph7_context_random_num((*C.ph7_context)(c)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO (*Context).RandomString
|
||||||
|
// TODO (*Context).UserData
|
||||||
|
// TODO (*Context).PushAuxData
|
||||||
|
// TODO (*Context).PeekAuxData
|
||||||
|
// TODO (*Context).PopAuxData
|
||||||
|
// TODO (*Context).ResultBufLength
|
||||||
|
// TODO (*Context).FunctionName
|
||||||
|
|
||||||
|
// TODO (*Context).AllocChunk
|
||||||
|
// TODO (*Context).ReallocChunk
|
||||||
|
// TODO (*Context).FreeChunk
|
||||||
|
|
||||||
type Value C.ph7_value
|
type Value C.ph7_value
|
||||||
|
|
||||||
type Context C.ph7_context
|
// TODO (*Value).ToInt
|
||||||
|
// TODO (*Value).ToBool
|
||||||
|
// TODO (*Value).ToInt64
|
||||||
|
// TODO (*Value).ToDouble
|
||||||
|
// TODO (*Value).ToString
|
||||||
|
// TODO (*Value).ToResource
|
||||||
|
// TODO (*Value).Compare
|
||||||
|
|
||||||
|
// TODO (*Value).Int
|
||||||
|
// TODO (*Value).Int64
|
||||||
|
// TODO (*Value).Bool
|
||||||
|
// TODO (*Value).Null
|
||||||
|
// TODO (*Value).Double
|
||||||
|
// TODO (*Value).String
|
||||||
|
// TODO (*Value).StringFormat maybe?
|
||||||
|
// TODO (*Value).ResetStringCursor
|
||||||
|
// TODO (*Value).Resource
|
||||||
|
// TODO (*Value).Release
|
||||||
|
// TODO (*Value).ArrayFetch
|
||||||
|
// TODO (*Value).ArrayWalk
|
||||||
|
// TODO (*Value).ArrayAddElem
|
||||||
|
// TODO (*Value).ArrayAddStrkeyElem
|
||||||
|
// TODO (*Value).ArrayAddIntkeyElem
|
||||||
|
// TODO (*Value).ArrayCount
|
||||||
|
// TODO (*Value).ObjectWalk
|
||||||
|
// TODO (*Value).ObjectFetchAttr
|
||||||
|
// TODO (*Value).ObjectGetClassName
|
||||||
|
// TODO (*Value).IsInt
|
||||||
|
// TODO (*Value).IsFloat
|
||||||
|
// TODO (*Value).IsBool
|
||||||
|
// TODO (*Value).IsString
|
||||||
|
// TODO (*Value).IsNull
|
||||||
|
// TODO (*Value).IsNumeric
|
||||||
|
// TODO (*Value).IsCallable
|
||||||
|
// TODO (*Value).IsScalar
|
||||||
|
// TODO (*Value).IsArray
|
||||||
|
// TODO (*Value).IsObject
|
||||||
|
// TODO (*Value).IsResource
|
||||||
|
// TODO (*Value).IsEmpty
|
||||||
|
|
||||||
|
// TODO Init
|
||||||
|
// TODO Config
|
||||||
|
// TODO Shutdown
|
||||||
|
// TODO IsThreadsafe
|
||||||
|
// TODO Version
|
||||||
|
// TODO Signature
|
||||||
|
// TODO Ident
|
||||||
|
// TODO Copyright
|
||||||
|
|
||||||
type VM struct {
|
type VM struct {
|
||||||
ptr *C.ph7_vm
|
ptr *C.ph7_vm
|
||||||
@ -150,6 +268,9 @@ func (vm *VM) SetOutputWriter(w io.Writer) error {
|
|||||||
return newError(C.vm_set_output_callback(vm.ptr, vm.pointerKey))
|
return newError(C.vm_set_output_callback(vm.ptr, vm.pointerKey))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO All the ph7_vm_config verbs
|
||||||
|
// TODO (*VM).Dump(w io.Writer)
|
||||||
|
|
||||||
func (vm *VM) OutputWriteError() error {
|
func (vm *VM) OutputWriteError() error {
|
||||||
return vm.outputWriteErr
|
return vm.outputWriteErr
|
||||||
}
|
}
|
||||||
@ -208,3 +329,7 @@ func (vm *VM) CreateFunction(name string, f ForeignFunction) error {
|
|||||||
|
|
||||||
return newError(C.vm_create_function(vm.ptr, cname, fkey))
|
return newError(C.vm_create_function(vm.ptr, cname, fkey))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO (*VM).DeleteFunction
|
||||||
|
// TODO (*VM).CreateConstant
|
||||||
|
// TODO (*VM).DeleteConstant
|
||||||
|
Loading…
Reference in New Issue
Block a user