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
|
||||
}
|
||||
|
||||
// TODO All the ph7_config verbs
|
||||
|
||||
func (e *Engine) Compile(source []byte, phpOnly bool) (*VM, error) {
|
||||
csource := C.CBytes(source)
|
||||
defer C.free(csource)
|
||||
@ -110,13 +112,129 @@ func (e *Engine) Compile(source []byte, phpOnly bool) (*VM, error) {
|
||||
return newVM(cvm), nil
|
||||
}
|
||||
|
||||
// TODO (*Engine).CompileFile
|
||||
|
||||
func (e *Engine) Close() error {
|
||||
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 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 {
|
||||
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))
|
||||
}
|
||||
|
||||
// TODO All the ph7_vm_config verbs
|
||||
// TODO (*VM).Dump(w io.Writer)
|
||||
|
||||
func (vm *VM) OutputWriteError() error {
|
||||
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))
|
||||
}
|
||||
|
||||
// TODO (*VM).DeleteFunction
|
||||
// TODO (*VM).CreateConstant
|
||||
// TODO (*VM).DeleteConstant
|
||||
|
Loading…
Reference in New Issue
Block a user