Skip to content

Commit 9fafbd6

Browse files
committed
generate: Add some basic improve support for protocol types
1 parent 0d9358c commit 9fafbd6

File tree

4 files changed

+15
-2
lines changed

4 files changed

+15
-2
lines changed

generate/codegen/gen_function.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@ func (f *Function) WriteGoCallCode(currentModule *modules.Module, cw *CodeWriter
194194
cw.WriteLineF("return *(*%s)(unsafe.Pointer(&%s))", tt.GoName(currentModule, true), resultName)
195195
case *typing.CStringType:
196196
cw.WriteLineF("return C.GoString(%s)", resultName)
197+
case *typing.ProtocolType:
198+
cw.WriteLineF("return %s{objc.ObjectFrom(%s)}", returnTypeStr, resultName)
197199
default:
198200
cw.WriteLineF("return %s(%s)", returnTypeStr, resultName)
199201
}

generate/function.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ func (db *Generator) ToFunction(fw string, sym Symbol) *codegen.Function {
7171
"CGPDFDictionaryGetName": true, // "const char *key, const char * _Nullable *"
7272
"CGPDFScannerPopName": true, // "const char * _Nullable *"
7373
}
74+
if sym.Name != "MTLCreateSystemDefaultDevice" {
75+
return nil
76+
}
7477
if knownIssues[sym.Name] {
7578
_, err := sym.Parse(db.Platform)
7679
log.Printf("skipping function %s %s because of known issue: decl='%s' err='%v'\n", fw, sym.Name, sym.Declaration, err)

generate/typing/pointer_type.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package typing
22

33
import (
4+
"fmt"
5+
46
"github.com/progrium/darwinkit/generate/modules"
57
"github.com/progrium/darwinkit/internal/set"
68
)
@@ -40,8 +42,10 @@ func (c *PointerType) GoName(currentModule *modules.Module, receiveFromObjc bool
4042
return "*" + c.Type.GoName(currentModule, receiveFromObjc)
4143
case *RefType:
4244
return "*" + c.Type.GoName(currentModule, receiveFromObjc)
45+
case *ProtocolType:
46+
return "*" + c.Type.GoName(currentModule, receiveFromObjc)
4347
default:
44-
panic("not supported pointer to: " + c.Type.ObjcName())
48+
panic(fmt.Sprintf("not supported pointer to: %T %v", c.Type, c.Type.ObjcName()))
4549
}
4650

4751
}

generate/typing/protocol_type.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ func (p *ProtocolType) ObjcName() string {
2727
}
2828

2929
func (p *ProtocolType) CName() string {
30-
return "id<" + p.Name + ">"
30+
return "void *"
31+
}
32+
33+
func (p *ProtocolType) CSignature() string {
34+
return "void *"
3135
}
3236

3337
func (p *ProtocolType) GoImports() set.Set[string] {

0 commit comments

Comments
 (0)