@@ -2,6 +2,7 @@ package generate
22
33import (
44 "fmt"
5+ "log"
56 "strings"
67
78 "github.com/progrium/macdriver/generate/declparse"
@@ -94,6 +95,9 @@ func (db *Generator) TypeFromSymbol(sym Symbol) typing.Type {
9495 Module : modules .Get (module ),
9596 }
9697 case "Function" :
98+ if sym .Name != "CGDisplayCreateImage" {
99+ return nil
100+ }
97101 typ , err := sym .Parse ()
98102 if err != nil {
99103 fmt .Printf ("TypeFromSymbol: failed to parse %s: %s\n " , sym .Declaration , err )
@@ -116,7 +120,6 @@ func (db *Generator) TypeFromSymbol(sym Symbol) typing.Type {
116120 })
117121 }
118122 ft .ReturnType = db .ParseType (fn .ReturnType )
119- // TODO: parse function params and return type from declaration
120123 return ft
121124 default :
122125 fmt .Printf ("TypeFromSymbol: kind=%s name=%s path=%s\n " , sym .Kind , sym .Name , sym .Path )
@@ -136,6 +139,18 @@ func (db *Generator) ParseType(ti declparse.TypeInfo) (typ typing.Type) {
136139 }
137140 }
138141 }()
142+ if ti .Name == "CFURLRef" {
143+ log .Printf ("ParseType: %s\n " , ti .Name )
144+ log .Printf ("info: %v\n " , ti )
145+ log .Printf ("info fn: %v\n " , ti .Func )
146+ defer func () {
147+ log .Printf ("info typ: %T %+v\n " , typ , typ )
148+ if pt , ok := typ .(* typing.PointerType ); ok {
149+ log .Printf ("info typ: %T %+v\n " , pt .Type , pt .Type )
150+ }
151+
152+ }()
153+ }
139154 if ti .Func != nil {
140155 var blockParams []typing.BlockParam
141156 for _ , arg := range ti .Func .Args {
@@ -215,17 +230,23 @@ func (db *Generator) ParseType(ti declparse.TypeInfo) (typ typing.Type) {
215230 default :
216231 var ok bool
217232 typ , ok = typing .GetPrimitiveType (ti .Name )
233+ log .Println ("primitive" , ti .Name , ok )
218234 if ! ok {
219235 typ , ok = typing .GetDispatchType (ti .Name )
220236 }
237+ log .Println ("dispatch" , ti .Name , ok )
221238 if ! ok {
222239 typ , ok = typing .GetKernelType (ti .Name )
223240 }
241+ log .Println ("kernel" , ti .Name , ok )
224242 if ! ok {
225243 typ = db .TypeFromSymbolName (ti .Name )
244+ log .Println ("symbol" , ti .Name , typ , ok )
226245 switch typ .(type ) {
227246 case * typing.ClassType :
228247 ref = true
248+ case * typing.StructType :
249+ ref = true
229250 case * typing.ProtocolType :
230251 panic ("standalone proto type" )
231252 }
@@ -236,6 +257,9 @@ func (db *Generator) ParseType(ti declparse.TypeInfo) (typ typing.Type) {
236257 if _ , ok := typ .(* typing.VoidType ); ok {
237258 typ = & typing.VoidPointerType {}
238259 } else {
260+ if typ == nil {
261+ panic ("nil type" )
262+ }
239263 typ = & typing.PointerType {
240264 Type : typ ,
241265 }
0 commit comments