Skip to content

Commit

Permalink
Move more onto *Object.
Browse files Browse the repository at this point in the history
  • Loading branch information
crazy2be committed Nov 3, 2013
1 parent 6c1aec8 commit 5df62aa
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 37 deletions.
26 changes: 13 additions & 13 deletions native_test.go
Expand Up @@ -149,7 +149,7 @@ func TestNewFunctionWithCallback(t *testing.T) {
return
}
tlog(t, "Made new function with callback")
if !ctx.IsFunction(fn) {
if !fn.IsFunction() {
t.Errorf("ctx.NewFunctionWithCallback returned value that is not a function")
}
tlog(t, "Function is a callback function")
Expand All @@ -158,7 +158,7 @@ func TestNewFunctionWithCallback(t *testing.T) {
}
tlog(t, "Successfully converted to property string")
tlog(t, "Calling as function...")
ctx.CallAsFunction(fn, nil, []*Value{})
fn.CallAsFunction(nil, []*Value{})
if !flag {
t.Errorf("Native function did not execute")
}
Expand Down Expand Up @@ -199,7 +199,7 @@ func TestNewFunctionWithCallback2(t *testing.T) {
numarr[0] = ctx.NewNumberValue(1.5)
numarr[1] = ctx.NewNumberValue(3.0)
tlog(t, "Calling callback as function")
val, err := ctx.CallAsFunction(fn, nil, numarr)
val, err := fn.CallAsFunction(nil, numarr)
tlog(t, "Called callback as function!")
tlog(t, err, val)
if err != nil || val == nil {
Expand Down Expand Up @@ -236,13 +236,13 @@ func TestNewFunctionWithCallbackPanic(t *testing.T) {
t.Fatalf("ctx.NewFunctionWithCallback failed")
return
}
if !ctx.IsFunction(fn) {
if !fn.IsFunction() {
t.Fatalf("ctx.NewFunctionWithCallback returned value that is not a function")
}
if fn.ToValue().ToStringOrDie() != "nativecallback" {
t.Fatalf("ctx.NewFunctionWithCallback returned value that does not convert to property string")
}
val, err := ctx.CallAsFunction(fn, nil, nil)
val, err := fn.CallAsFunction(nil, nil)
if val != nil {
t.Fatalf("ctx.NewFunctionWithCallback that panicked returned a value")
}
Expand All @@ -269,13 +269,13 @@ func TestNativeFunction(t *testing.T) {
t.Errorf("ctx.NewFunctionWithNative failed")
return
}
if !ctx.IsFunction(fn) {
if !fn.IsFunction() {
t.Errorf("ctx.NewFunctionWithNative returned value that is not a function")
}
if fn.ToValue().ToStringOrDie() != "nativefunction" {
t.Errorf("ctx.nativefunction returned value that does not convert to property string")
}
ctx.CallAsFunction(fn, nil, nil)
fn.CallAsFunction(nil, nil)
if !flag {
t.Errorf("Native function did not execute")
}
Expand All @@ -294,13 +294,13 @@ func TestNativeFunction2(t *testing.T) {
t.Errorf("ctx.NewFunctionWithNative failed")
return
}
if !ctx.IsFunction(fn) {
if !fn.IsFunction() {
t.Errorf("ctx.NewFunctionWithNative returned value that is not a function")
}
args := make([]*Value, 2)
args[0] = ctx.NewNumberValue(1.5)
args[1] = ctx.NewNumberValue(3.0)
val, err := ctx.CallAsFunction(fn, nil, args)
val, err := fn.CallAsFunction(nil, args)
tlog(t, "Called as function")
if err != nil || val == nil {
t.Errorf("Error executing native function (%v)", err)
Expand Down Expand Up @@ -329,12 +329,12 @@ func TestNativeFunction3(t *testing.T) {
t.Errorf("ctx.NewFunctionWithNative failed")
return
}
if !ctx.IsFunction(fn) {
if !fn.IsFunction() {
t.Errorf("ctx.NewFunctionWithNative returned value that is not a function")
}
a := ctx.NewNumberValue(1.5)
b := ctx.NewNumberValue(3.0)
val, err := ctx.CallAsFunction(fn, nil, []*Value{a, b})
val, err := fn.CallAsFunction(nil, []*Value{a, b})
if err != nil || val == nil {
t.Errorf("Error executing native function (%v)", err)
}
Expand All @@ -357,10 +357,10 @@ func TestNativeFunctionPanic(t *testing.T) {
t.Errorf("ctx.NewFunctionWithNative failed")
return
}
if !ctx.IsFunction(fn) {
if !fn.IsFunction() {
t.Errorf("ctx.NewFunctionWithNative returned value that is not a function")
}
val, err := ctx.CallAsFunction(fn, nil, nil)
val, err := fn.CallAsFunction(nil, nil)
tlog(t, "Called as function")
tlog(t, val, err)
if err == nil || val != nil {
Expand Down
35 changes: 17 additions & 18 deletions object.go
Expand Up @@ -252,50 +252,49 @@ func (obj *Object) ToValue() *Value {
return obj.ctx.newValue(C.JSValueRef(obj.ref))
}

func (ctx *Context) IsFunction(obj *Object) bool {
ret := C.JSObjectIsFunction(ctx.ref, obj.ref)
return bool(ret)
func (obj *Object) IsFunction() bool {
return bool(C.JSObjectIsFunction(obj.ctx.ref, obj.ref))
}

func (ctx *Context) CallAsFunction(obj *Object, thisObject *Object, parameters []*Value) (*Value, error) {
errVal := ctx.newErrorValue()
cParameters, n := ctx.newCValueArray(parameters)
func (obj *Object) CallAsFunction(thisObject *Object, parameters []*Value) (*Value, error) {
errVal := obj.ctx.newErrorValue()
cParameters, n := obj.ctx.newCValueArray(parameters)
if thisObject == nil {
thisObject = ctx.newObject(nil)
thisObject = obj.ctx.newObject(nil)
log.Println(thisObject.ref)
}

ret := C.JSObjectCallAsFunction(ctx.ref, obj.ref, thisObject.ref, n, cParameters, &errVal.ref)
ret := C.JSObjectCallAsFunction(obj.ctx.ref, obj.ref, thisObject.ref, n, cParameters, &errVal.ref)

if errVal.ref != nil {
return nil, errVal
}

return ctx.newValue(ret), nil
return obj.ctx.newValue(ret), nil
}

func (ctx *Context) IsConstructor(obj *Object) bool {
ret := C.JSObjectIsConstructor(ctx.ref, obj.ref)
return bool(ret)
func (obj *Object) IsConstructor() bool {
return bool(C.JSObjectIsConstructor(obj.ctx.ref, obj.ref))
}

func (ctx *Context) CallAsConstructor(obj *Object, parameters []*Value) (*Value, error) {
errVal := ctx.newErrorValue()
func (obj *Object) CallAsConstructor(parameters []*Value) (*Value, error) {
errVal := obj.ctx.newErrorValue()

var Cparameters *C.JSValueRef
if len(parameters) > 0 {
// TODO: Is this safe?
Cparameters = (*C.JSValueRef)(unsafe.Pointer(&parameters[0]))
}

ret := C.JSObjectCallAsConstructor(ctx.ref, obj.ref,
ret := C.JSObjectCallAsConstructor(obj.ctx.ref, obj.ref,
C.size_t(len(parameters)),
Cparameters,
&errVal.ref)
if errVal.ref != nil {
return nil, errVal
}

return ctx.newObject(ret).ToValue(), nil
return obj.ctx.newObject(ret).ToValue(), nil
}

//=========================================================
Expand All @@ -317,8 +316,8 @@ const (
type PropertyNameArray struct {
}

func (ctx *Context) CopyPropertyNames(obj *Object) *PropertyNameArray {
ret := C.JSObjectCopyPropertyNames(ctx.ref, obj.ref)
func (obj *Object) CopyPropertyNames() *PropertyNameArray {
ret := C.JSObjectCopyPropertyNames(obj.ctx.ref, obj.ref)
return (*PropertyNameArray)(unsafe.Pointer(ret))
}

Expand Down
4 changes: 2 additions & 2 deletions object_test.go
Expand Up @@ -191,7 +191,7 @@ func TestNewFunction(t *testing.T) {
if err != nil {
t.Errorf("ctx.NewFunction failed with %v", err)
}
if !ctx.IsFunction(fn) {
if !fn.IsFunction() {
t.Errorf("ctx.NewFunction did not return a function object")
}
}
Expand All @@ -207,7 +207,7 @@ func TestNewCallAsFunction(t *testing.T) {

a := ctx.NewNumberValue(1.5)
b := ctx.NewNumberValue(3.0)
val, err := ctx.CallAsFunction(fn, nil, []*Value{a, b})
val, err := fn.CallAsFunction(nil, []*Value{a, b})
if err != nil {
t.Errorf("ctx.CallAsFunction failed with %v", err)
}
Expand Down
4 changes: 2 additions & 2 deletions reflect_test.go
Expand Up @@ -92,11 +92,11 @@ func TestNewValueWithFunc(t *testing.T) {
if !val.IsObject() {
t.Errorf("ctx.IsObject did not return true")
}
if !ctx.IsFunction(val.ToObjectOrDie()) {
if !val.ToObjectOrDie().IsFunction() {
t.Errorf("ctx.IsFunction did not return true")
}

val2, err := ctx.CallAsFunction(val.ToObjectOrDie(), nil, nil)
val2, err := val.ToObjectOrDie().CallAsFunction(nil, nil)
if err != nil || val2 == nil {
t.Errorf("Error executing native function (%v)", err)
}
Expand Down
4 changes: 2 additions & 2 deletions value.go
Expand Up @@ -65,8 +65,8 @@ func (ctx *Context) NewStringValue(value string) *Value {
return ctx.newValue(ref)
}

func (val *Value) String() string {
str, err := val.ToString()
func (v *Value) String() string {
str, err := v.ToString()
if err != nil {
return "Error:" + err.Error()
}
Expand Down

0 comments on commit 5df62aa

Please sign in to comment.