mirror of https://github.com/go-python/gopy.git
bind/package: add lookup function
This commit is contained in:
parent
bbb9499368
commit
a9624ab5da
|
@ -26,8 +26,9 @@ type Package struct {
|
||||||
// NewPackage creates a new Package, tying types.Package and ast.Package together.
|
// NewPackage creates a new Package, tying types.Package and ast.Package together.
|
||||||
func NewPackage(pkg *types.Package, doc *doc.Package) (*Package, error) {
|
func NewPackage(pkg *types.Package, doc *doc.Package) (*Package, error) {
|
||||||
p := &Package{
|
p := &Package{
|
||||||
pkg: pkg,
|
pkg: pkg,
|
||||||
doc: doc,
|
doc: doc,
|
||||||
|
objs: map[string]Object{},
|
||||||
}
|
}
|
||||||
err := p.process()
|
err := p.process()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -211,11 +212,11 @@ func (p *Package) process() error {
|
||||||
}
|
}
|
||||||
s.meths = append(s.meths, m)
|
s.meths = append(s.meths, m)
|
||||||
}
|
}
|
||||||
p.structs = append(p.structs, s)
|
p.addStruct(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, fct := range funcs {
|
for _, fct := range funcs {
|
||||||
p.funcs = append(p.funcs, fct)
|
p.addFunc(fct)
|
||||||
}
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
|
@ -231,6 +232,22 @@ func (p *Package) addVar(obj *types.Var) {
|
||||||
panic(fmt.Errorf("not yet supported: %v (%T)", obj, obj))
|
panic(fmt.Errorf("not yet supported: %v (%T)", obj, obj))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *Package) addStruct(s Struct) {
|
||||||
|
p.structs = append(p.structs, s)
|
||||||
|
p.objs[s.GoName()] = s
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *Package) addFunc(f Func) {
|
||||||
|
p.funcs = append(p.funcs, f)
|
||||||
|
p.objs[f.GoName()] = f
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lookup returns the bind.Object corresponding to a types.Object
|
||||||
|
func (p *Package) Lookup(o types.Object) (Object, bool) {
|
||||||
|
obj, ok := p.objs[o.Name()]
|
||||||
|
return obj, ok
|
||||||
|
}
|
||||||
|
|
||||||
// Struct collects informations about a go struct.
|
// Struct collects informations about a go struct.
|
||||||
type Struct struct {
|
type Struct struct {
|
||||||
pkg *Package
|
pkg *Package
|
||||||
|
|
Loading…
Reference in New Issue