Templates: early return from Connect method for readability.
- commit
- 867f32f8d086a68579c99d7e266b552e86b668a5
- author
- Peter Fern · · 2024-03-05 10:35 UTC
- committer
- Jeroen Wijenbergh · · 2024-03-05 11:56 UTC
- parent
- fcf8a96
- signature
- unsigned
1 file · +18 -17
M templates/go +18 -17
| @@ -186,24 +186,25 @@ func (c *{{.Name}}) SetGoPointer(ptr uintptr) { | |||
| 186 | 186 | {{.Doc}} | |
| 187 | 187 | func (x *{{$outer.Name}}) Connect{{.Name}}(cb *func({{$outer.Name}} {{convc .Args.API.Types}}) {{.Ret.Value}}) uint32 { | |
| 188 | 188 | cbPtr := uintptr(unsafe.Pointer(cb)) | |
| 189 | - | cbRefPtr, ok := {{if $NotGLib}}glib.{{end}}GetCallback(cbPtr) | |
| 190 | - | if !ok { | |
| 191 | - | fcb := func(clsPtr uintptr {{convc .Args.Pure.Full}}) {{.Ret.Raw}} { | |
| 192 | - | fa := {{$outer.Name}}{} | |
| 193 | - | fa.Ptr = clsPtr | |
| 194 | - | cbFn := *cb | |
| 195 | - | {{if .Ret.Class}} | |
| 196 | - | {{.Name}}Cls := cbFn(fa {{convc .Args.Pure.Call}}) | |
| 197 | - | return {{.Name}}Cls.Ptr | |
| 198 | - | {{else if .Ret.Value}} | |
| 199 | - | return cbFn(fa {{convc .Args.Pure.Call}}) | |
| 200 | - | {{else}} | |
| 201 | - | cbFn(fa {{convc .Args.Pure.Call}}) | |
| 202 | - | {{end}} | |
| 203 | - | } | |
| 204 | - | cbRefPtr = purego.NewCallback(fcb) | |
| 205 | - | {{if $NotGLib}}glib.{{end}}SaveCallback(cbPtr, cbRefPtr) | |
| 189 | + | if cbRefPtr, ok := {{if $NotGLib}}glib.{{end}}GetCallback(cbPtr); ok { | |
| 190 | + | return {{if $NotGObject}}gobject.{{end}}SignalConnect(x.GoPointer(), "{{.CName}}", cbRefPtr) | |
| 206 | 191 | } | |
| 192 | + | ||
| 193 | + | fcb := func(clsPtr uintptr {{convc .Args.Pure.Full}}) {{.Ret.Raw}} { | |
| 194 | + | fa := {{$outer.Name}}{} | |
| 195 | + | fa.Ptr = clsPtr | |
| 196 | + | cbFn := *cb | |
| 197 | + | {{if .Ret.Class}} | |
| 198 | + | {{.Name}}Cls := cbFn(fa {{convc .Args.Pure.Call}}) | |
| 199 | + | return {{.Name}}Cls.Ptr | |
| 200 | + | {{else if .Ret.Value}} | |
| 201 | + | return cbFn(fa {{convc .Args.Pure.Call}}) | |
| 202 | + | {{else}} | |
| 203 | + | cbFn(fa {{convc .Args.Pure.Call}}) | |
| 204 | + | {{end}} | |
| 205 | + | } | |
| 206 | + | cbRefPtr := purego.NewCallback(fcb) | |
| 207 | + | {{if $NotGLib}}glib.{{end}}SaveCallback(cbPtr, cbRefPtr) | |
| 207 | 208 | return {{if $NotGObject}}gobject.{{end}}SignalConnect(x.GoPointer(), "{{.CName}}", cbRefPtr) | |
| 208 | 209 | } | |
| 209 | 210 | {{end}} | |
| @@ -186,24 +186,25 @@ func (c *{{.Name}}) SetGoPointer(ptr uintptr) { | |||||
| 186 | {{.Doc}} | 186 | {{.Doc}} | ||
| 187 | func (x *{{$outer.Name}}) Connect{{.Name}}(cb *func({{$outer.Name}} {{convc .Args.API.Types}}) {{.Ret.Value}}) uint32 { | 187 | func (x *{{$outer.Name}}) Connect{{.Name}}(cb *func({{$outer.Name}} {{convc .Args.API.Types}}) {{.Ret.Value}}) uint32 { | ||
| 188 | cbPtr := uintptr(unsafe.Pointer(cb)) | 188 | cbPtr := uintptr(unsafe.Pointer(cb)) | ||
| 189 | - | cbRefPtr, ok := {{if $NotGLib}}glib.{{end}}GetCallback(cbPtr) | 189 | + | if cbRefPtr, ok := {{if $NotGLib}}glib.{{end}}GetCallback(cbPtr); ok { |
| 190 | - | if !ok { | 190 | + | return {{if $NotGObject}}gobject.{{end}}SignalConnect(x.GoPointer(), "{{.CName}}", cbRefPtr) |
| 191 | - | fcb := func(clsPtr uintptr {{convc .Args.Pure.Full}}) {{.Ret.Raw}} { | |||
| 192 | - | fa := {{$outer.Name}}{} | |||
| 193 | - | fa.Ptr = clsPtr | |||
| 194 | - | cbFn := *cb | |||
| 195 | - | {{if .Ret.Class}} | |||
| 196 | - | {{.Name}}Cls := cbFn(fa {{convc .Args.Pure.Call}}) | |||
| 197 | - | return {{.Name}}Cls.Ptr | |||
| 198 | - | {{else if .Ret.Value}} | |||
| 199 | - | return cbFn(fa {{convc .Args.Pure.Call}}) | |||
| 200 | - | {{else}} | |||
| 201 | - | cbFn(fa {{convc .Args.Pure.Call}}) | |||
| 202 | - | {{end}} | |||
| 203 | - | } | |||
| 204 | - | cbRefPtr = purego.NewCallback(fcb) | |||
| 205 | - | {{if $NotGLib}}glib.{{end}}SaveCallback(cbPtr, cbRefPtr) | |||
| 206 | } | 191 | } | ||
| 192 | + | ||||
| 193 | + | fcb := func(clsPtr uintptr {{convc .Args.Pure.Full}}) {{.Ret.Raw}} { | |||
| 194 | + | fa := {{$outer.Name}}{} | |||
| 195 | + | fa.Ptr = clsPtr | |||
| 196 | + | cbFn := *cb | |||
| 197 | + | {{if .Ret.Class}} | |||
| 198 | + | {{.Name}}Cls := cbFn(fa {{convc .Args.Pure.Call}}) | |||
| 199 | + | return {{.Name}}Cls.Ptr | |||
| 200 | + | {{else if .Ret.Value}} | |||
| 201 | + | return cbFn(fa {{convc .Args.Pure.Call}}) | |||
| 202 | + | {{else}} | |||
| 203 | + | cbFn(fa {{convc .Args.Pure.Call}}) | |||
| 204 | + | {{end}} | |||
| 205 | + | } | |||
| 206 | + | cbRefPtr := purego.NewCallback(fcb) | |||
| 207 | + | {{if $NotGLib}}glib.{{end}}SaveCallback(cbPtr, cbRefPtr) | |||
| 207 | return {{if $NotGObject}}gobject.{{end}}SignalConnect(x.GoPointer(), "{{.CName}}", cbRefPtr) | 208 | return {{if $NotGObject}}gobject.{{end}}SignalConnect(x.GoPointer(), "{{.CName}}", cbRefPtr) | ||
| 208 | } | 209 | } | ||
| 209 | {{end}} | 210 | {{end}} | ||