func (this *binding_generator) process_object_info(oi *gi.ObjectInfo) { p := printer_to(&this.go_bindings) parent := "C unsafe.Pointer" parentlike := "" if p := oi.Parent(); p != nil { parent = "" if ns := p.Namespace(); ns != config.namespace { parent += strings.ToLower(ns) + "." } parent += p.Name() parentlike = parent + "Like" } // interface that this class and its subclasses implement cprefix := gi.DefaultRepository().CPrefix(config.namespace) name := oi.Name() cgotype := cgo_type_for_interface(gi.ToBaseInfo(oi), type_pointer) var interfaces bytes.Buffer pi := printer_to(&interfaces) for i, n := 0, oi.NumInterface(); i < n; i++ { ii := oi.Interface(i) name := ii.Name() ns := ii.Namespace() if i != 0 { pi("\n\t") } if ns != config.namespace { pi("%s.", strings.ToLower(ns)) } pi("%sImpl", name) } p("%s\n", execute_template(object_template, map[string]string{ "name": name, "cprefix": cprefix, "cgotype": cgotype, "parent": parent, "parentlike": parentlike, "typeinit": oi.TypeInit(), "gobjectns": config.gns, "interfaces": interfaces.String(), })) for i, n := 0, oi.NumMethod(); i < n; i++ { meth := oi.Method(i) if config.is_method_blacklisted(name, meth.Name()) { p("// blacklisted: %s.%s (method)\n", name, meth.Name()) continue } this.process_function_info(meth) } }
func ProcessObjectInfo(oi *gi.ObjectInfo) { parent := "C unsafe.Pointer" parentlike := "" if p := oi.Parent(); p != nil { parent = "" if ns := p.Namespace(); ns != Config.Namespace { parent += strings.ToLower(ns) + "." } parent += p.Name() parentlike = parent + "Like" } // interface that this class and its subclasses implement cprefix := gi.DefaultRepository().CPrefix(Config.Namespace) name := oi.Name() cgotype := CgoTypeForInterface(gi.ToBaseInfo(oi), TypePointer) var interfaces bytes.Buffer for i, n := 0, oi.NumInterface(); i < n; i++ { ii := oi.Interface(i) name := ii.Name() ns := ii.Namespace() if i != 0 { interfaces.WriteString("\n\t") } if ns != Config.Namespace { fmt.Fprintf(&interfaces, "%s.", strings.ToLower(ns)) } fmt.Fprintf(&interfaces, "%sImpl", name) } printf("%s\n", ExecuteTemplate(ObjectTemplate, map[string]string{ "name": name, "cprefix": cprefix, "cgotype": cgotype, "parent": parent, "parentlike": parentlike, "typeinit": oi.TypeInit(), "gobjectns": Config.Sys.GNS, "interfaces": interfaces.String(), })) for i, n := 0, oi.NumMethod(); i < n; i++ { meth := oi.Method(i) if IsMethodBlacklisted(name, meth.Name()) { printf("// blacklisted: %s.%s (method)\n", name, meth.Name()) continue } ProcessFunctionInfo(meth, gi.ToBaseInfo(oi)) } }