cutego/internal/binding/converter/body_input_go.go
2016-08-28 18:09:35 +02:00

61 lines
1.5 KiB
Go
Executable file

package converter
import (
"fmt"
"strings"
"github.com/therecipe/qt/internal/binding/parser"
)
func GoInputParametersForC(function *parser.Function) string {
var input = make([]string, 0)
if !(function.Static || function.Meta == parser.CONSTRUCTOR) {
input = append(input, "ptr.Pointer()")
}
if function.SignalMode == "" {
for _, parameter := range function.Parameters {
var alloc = goInput(parameter.Name, parameter.Value, function)
if strings.Contains(alloc, "C.CString") {
input = append(input, fmt.Sprintf("%vC", cleanName(parameter.Name, parameter.Value)))
} else {
input = append(input, alloc)
}
}
}
return strings.Join(input, ", ")
}
func GoInputParametersForCAlloc(function *parser.Function) []string {
var input = make([]string, 0)
if function.SignalMode == "" {
for _, parameter := range function.Parameters {
var (
alloc = goInput(parameter.Name, parameter.Value, function)
name = fmt.Sprintf("%vC", cleanName(parameter.Name, parameter.Value))
)
if strings.Contains(alloc, "C.CString") {
input = append(input, fmt.Sprintf("var %v = %v\ndefer C.free(unsafe.Pointer(%v))\n", name, alloc, name))
}
}
}
return input
}
func GoInputParametersForCallback(function *parser.Function) string {
var input = make([]string, len(function.Parameters))
for i, parameter := range function.Parameters {
input[i] = cgoOutput(parameter.Name, parameter.Value, function)
}
return strings.Join(input, ", ")
}