@@ -7,21 +7,25 @@ package metacall
77import "C"
88
99import (
10- "unsafe"
1110 "errors"
11+ "unsafe"
1212)
1313
1414const PtrSizeInBytes = (32 << uintptr (^ uintptr (0 )>> 63 )) >> 3
1515
1616func Initialize () error {
1717 // TODO: Remove this once go loader is implemented
18- if ( int (C .metacall_initialize ()) != 0 ) {
18+ if int (C .metacall_initialize ()) != 0 {
1919 return errors .New ("MetaCall failed to initialize" )
2020 }
2121
2222 return nil
2323}
2424
25+ func InitializeSafe () error {
26+ // TODO
27+ }
28+
2529func LoadFromFile (tag string , scripts []string ) error {
2630 size := len (scripts )
2731
@@ -32,7 +36,7 @@ func LoadFromFile(tag string, scripts []string) error {
3236 defer C .free (unsafe .Pointer (cScripts ))
3337
3438 // Convert cScripts to a Go Array so we can index it
35- goScripts := (* [1 << 30 - 1 ] * C.char )(cScripts )
39+ goScripts := (* [1 << 30 - 1 ]* C.char )(cScripts )
3640
3741 for index , script := range scripts {
3842 goScripts [index ] = C .CString (script )
@@ -62,7 +66,7 @@ func Call(function string, args ...interface{}) (interface{}, error) {
6266 defer C .free (unsafe .Pointer (cArgs ))
6367
6468 for index , arg := range args {
65- cArg := (* unsafe .Pointer )(unsafe .Pointer (uintptr (unsafe .Pointer (cArgs )) + uintptr (index ) * PtrSizeInBytes ))
69+ cArg := (* unsafe .Pointer )(unsafe .Pointer (uintptr (unsafe .Pointer (cArgs )) + uintptr (index )* PtrSizeInBytes ))
6670
6771 // Create int
6872 if i , ok := arg .(int ); ok {
@@ -89,9 +93,9 @@ func Call(function string, args ...interface{}) (interface{}, error) {
8993 // TODO: Other types ...
9094 }
9195
92- defer (func () {
96+ defer (func () {
9397 for index , _ := range args {
94- cArg := (* unsafe .Pointer )(unsafe .Pointer (uintptr (unsafe .Pointer (cArgs )) + uintptr (index ) * PtrSizeInBytes ))
98+ cArg := (* unsafe .Pointer )(unsafe .Pointer (uintptr (unsafe .Pointer (cArgs )) + uintptr (index )* PtrSizeInBytes ))
9599 C .metacall_value_destroy (* cArg )
96100 }
97101 })()
@@ -101,20 +105,24 @@ func Call(function string, args ...interface{}) (interface{}, error) {
101105 if ret != nil {
102106 defer C .metacall_value_destroy (ret )
103107
104- switch (C .metacall_value_id (unsafe .Pointer (ret ))) {
105- case C .METACALL_INT : {
108+ switch C .metacall_value_id (unsafe .Pointer (ret )) {
109+ case C .METACALL_INT :
110+ {
106111 return int (C .metacall_value_to_int (unsafe .Pointer (ret ))), nil
107112 }
108113
109- case C .METACALL_FLOAT : {
114+ case C .METACALL_FLOAT :
115+ {
110116 return float32 (C .metacall_value_to_float (unsafe .Pointer (ret ))), nil
111117 }
112118
113- case C .METACALL_DOUBLE : {
119+ case C .METACALL_DOUBLE :
120+ {
114121 return float64 (C .metacall_value_to_double (unsafe .Pointer (ret ))), nil
115122 }
116123
117- case C .METACALL_STRING : {
124+ case C .METACALL_STRING :
125+ {
118126 return C .GoString (C .metacall_value_to_string (unsafe .Pointer (ret ))), nil
119127 }
120128
0 commit comments